MySQL基本语句

创建表

如果是关键字  那么使用反引号  `` esc下面的键

create  table  [if  not  exists] 表名(    字段1  数据类型  [约束,索引,注释],    字段2  数据类型  [约束,索引,注释],    字段3 数据类型  [约束,索引,注释]  )[表类型][表字符集][注释]

有符号类型  和  无符号类型

有符号类型 :可以取负值 无符号类型:默认是0! 0--类型的长度

ZEROFILL属性:如果位数不够,前面用零补齐!

若某数值字段指定了ZEROFILL属性, 将自动添加UNSIGNED属性!

创建学生表

CREATE TABLE IF  NOT EXISTS  student(
studentNo  INT(4) NOT NULL  PRIMARY KEY  COMMENT '学号',
loginPwd VARCHAR(20) NOT NULL COMMENT '密码',
studentName VARCHAR(50) NOT NULL COMMENT '姓名',
sex  CHAR(2) NOT NULL  DEFAULT'男' COMMENT '性别',
gradeID INT(4) UNSIGNED COMMENT '年级编号',
phone VARCHAR(50) COMMENT '电话',
address VARCHAR(255) DEFAULT'地址不详' COMMENT '地址',
bornDate DATETIME COMMENT '出生日期',
email VARCHAR(50) COMMENT '邮箱账号',
identityCard VARCHAR(18) UNIQUE KEY COMMENT '身份证号'
)COMMENT='学生表';

修改表中的数据

-- 修改表名   把 student表名 改成 stu
ALTER TABLE student RENAME AS stu;
--  给表中增加 微信 字段  不为空  唯一
ALTER TABLE student ADD wechat VARCHAR(20) UNIQUE KEY;
-- 修改表中 微信 字段的长度为50
ALTER  TABLE  student MODIFY wechat VARCHAR(50);
-- 删除表中 微信 字段
ALTER  TABLE student DROP wechat;
-- 修改studentName字段的名称为  stuName 
ALTER  TABLE student CHANGE `name` stuName VARCHAR(20);

创建subject(科目表)

CREATE TABLE IF NOT EXISTS `subject`(
subjectNo INT(4) AUTO_INCREMENT PRIMARY KEY  COMMENT '课程编号',
subjectName VARCHAR(50) COMMENT '课程名称',
classHour INT(4) COMMENT '学时',
gradeID INT(4) COMMENT '年级编号'
)COMMENT='科目表' CHARSET='utf8';

遇到的问题 在使用AUTO_INCREMENT  必须和PRIMARY KEY 联合使用!

标识列   是 自增列! 主键是 唯一!

创建年级表

CREATE TABLE IF NOT EXISTS grade(
gradeID  INT(4) COMMENT '年级编号',
gradeName VARCHAR(10) COMMENT '年级名称'
)COMMENT='年级表';

添加主键的语法

ALTER TABLE 表名 ADD CONSTRAINT 主键名 
         PRIMARY KEY 表名(主键字段);

-- 给年级表中id设置成主键

ALTER TABLE grade ADD CONSTRAINT pk_grade_gradeID PRIMARY KEY(gradeID);

创建成绩表

CREATE TABLE  IF NOT  EXISTS result(
studentNo INT(4)  NOT NULL PRIMARY KEY COMMENT '学号',
subjectNo INT(4)  NOT NULL  COMMENT '课程编号',
examDate DATETIME  NOT NULL  COMMENT '考试日期 ',
studentResult INT(4)  NOT NULL  COMMENT '考试成绩'
)COMMENT='成绩表' charset='utf8' engine=InnoDB;

外键的语法:

   ALTER TABLE 表名 ADD CONSTRAINT 外键名          
     FOREIGN KEY(外键字段)
     REFERENCES 关联表名(关联字段);

 创建student表和grade表的关系      学生应该属于某个年级

   外键必须建立在 从表上!

ALTER TABLE  student  ADD CONSTRAINT fk_student_grade
FOREIGN KEY(gradeID)
REFERENCES grade(gradeID);

问题: 前提已经建立了 主外键关系

  如果说有三个年级,编号分别是  1  2  3   那么也有三个学生  对应的关系是    第1个学生     1年级    第2个学生     2年级    第3个学生     2年级

   01.有没有这种情况  有个学生的年级编号是4 ??      主表中没有数据! 从表无法创建!

   02.可不可以删除年级表2年级或者1年级???      不能删除!因为从表中还有关联数据!

   03.如果我们非得删除年级 怎么办??       先把从表中的关联数据删除 ,之后再删除主表中的数据!

联合主键     将多列设置成主键!

-- 给成绩表设置联合主键

ALTER TABLE result ADD PRIMARY KEY  pk_result (studentno,subjectno,examdate);
 

mysql数据库中常用的两种 存储 引擎

              MyISAM              InnoDB 事务处理       不支持               支持 外键约束       不支持               支持   全文索引         支持              不支持

使用的场景:

MyISAM:不能使用事务,空间小,适合查询! InnoDB:多适用于增删改,安全性高!事务的并发处理!

  -- 查询当前默认的存储引擎

SHOW VARIABLES LIKE 'storage_engine%';

  --  修改存储引擎   --  找到安装路径下面的my.ini文件   --  加入 default-storage-engine=InnoDB

数据库表的存储位置

InnoDB类型的文件 *.frm  :表结构定义文件 *.ibd  : 数据文件

MyISAM类型的文件 *.frm  :表结构定义文件 *.MYD  :数据文件 *.MYI  :索引文件

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微服务

Redis应用及安装

Redis听到最多的一句话就是Redis的使用难吗?不难,Redis用好容易吗?不容易,有时候觉得这句话说的挺好,但又是让读者挺心里咯噔一下的,还不如不说! 概...

34711
来自专栏精讲JAVA

Http 持久连接与 HttpClient 连接池

HTTP协议是无状态的协议,即每一次请求都是互相独立的。因此它的最初实现是,每一个http请求都会打开一个tcp socket连接,当交互完毕后会关闭这个连接。

882
来自专栏数据和云

高频错误:ORA-01555深入剖析

黄玮(Fuyuncat) 资深Oracle DBA,个人网站www.HelloDBA.com,致力于数据库底层技术的研究,其作品获得广大同行的高度评价. ORA...

2818
来自专栏架构之路

redis AOF保存机制

网上说AOF有三种保存方式,不自动保存、每秒自动保存、每命令自动保存。 其中每秒自动保存这个看起来很美好,但是可能会被各种IO的时间所延迟,所以究竟是怎么判断每...

3165
来自专栏java进阶架构师

「mysql优化专题」主从复制面试宝典!面试官都没你懂得多!(11)

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。

683
来自专栏Netkiller

新闻数据库分表案例

文章节选自《Netkiller Architect 手札》 6.3. 新闻数据库分表案例 这里我通过一个新闻网站为例,解决分表的问题 避免开发中经常拼接表,我采...

3436
来自专栏沃趣科技

配置详解 | performance_schema全方位介绍

在上一篇 《初相识 | performance_schema全方位介绍》 中粗略介绍了如何配置与使用performance_schema,相信大家对perfor...

5417
来自专栏Netkiller

数据库进程间通信解决方案IPC

数据库进程间通信解决方案 数据库与其他第三方应用程序进程间通信解决方案 摘要 你是否想过当数据库中的数据发生变化的时候出发某种操作?但因数据无法与其他进程通信...

2773
来自专栏数据库

MySQL支持哪几类分区表?

Q 题目 MySQL支持哪几类分区表? A 答案 表分区是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却...

2048
来自专栏漫漫全栈路

Oracle 学习笔记

前言 本贴内容纪录Oracle课程中的学习笔记,和Oracle的课后作业,以及数据库相关课程的学习笔记,笔记部分使用实例代码记录,不记详细语法。 用户管理...

3095

扫描关注云+社区