最近在学MySQL,就把我学到的SQL语句分别总结一下。
第一次内容主要是数据表的基本操作。
菜鸡一个,可能有些不全。

1.创建数据表

CREATE TABLE <表名>
(
字段1,数据类型 [列级约束条件] [默认值],
字段2,数据类型 [列级约束条件] [默认值],
....
[表级约束条件]
)

2.约束条件

2.1主键约束
主键约束要求主键列的数据唯一,并且不许为空。主键能唯一的标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键约束可以分为单字段主键和多字段联合主键。

单字段主键
定义列同时指定主键
字段名 数据类型 PRIMARY KEY [默认值]
或
定义完所有列后指定主键
[CONSRAINT<约束名>] PRIMARY KEY [字段名]

多字段联合主键
 PRIMARY KEY [字段1,字段2,字段3,,]

2.2外键约束
外键用来在两个表之间建立链接,可以是一列或者多列,一个表可以有一个或多个外键。外键对应的是参照完整性。一个表的外键可以为空值或者另一个表中主键的某个值。
外键首先是表中的一个字段,可以不是本表的主键,但要对应另外一个表的主键。外键的主要作用是保证数据引用的完整性。
定义外键后,不允许删除在另一个表中具有关联关系的行。

主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表。
从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表。

[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [,字段名2,,,]
REFERENCES <主表名> 主键列1 [主键列2,,,]

外键名是定义的外键约束的名称,一个表中不能有相同名称的外键。
字段名1,2 表示子表中需要添加外键约束的字段列。
主表名标识被子表外键所依赖的表的名称。
主键列标识主表中定义的主键列,或者列组合。

2.3非空,唯一性,默认约束
非空指字段的值不能为空。

字段名 数据类型 NOT NULL

唯一性要求该列唯一,允许为空,但只能出现一个空值。

定义完列之后直接指定唯一约束
字段名 数据类型 UNIQUE

定义完所有列之后指定唯一约束
[CONSTRAINT <约束名>] UNIQUE (<字段名>)

默认约束指定某列的默认值。

字段名 数据类型 DEFAULT  默认值

2.4 表的属性值自动增加。
每次插入新纪录时,系统自动生成字段的主键值(适用于所有的整数类型)。
AUTO_INCREMENT 的初始值为1,每新增一条记录,字段值自动加1.一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。

字段名 数据类型 AUTO_INCREMENT
  1. 修改数据表
    3.1 修改表名
ALTER TABLE <旧表名> RENAME [TO] <新表名>;

3.2 修改字段

修改字段的数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;

修改字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

CHANGE 也可以只修改数据类型,实现和MODIFY同样的效果。

3.3 添加/删除/修改字段

添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型>
[约束条件] [FIRST | AFTER已存在字段名];

FIRST将新添加的字段置为表的第一个字段。
AFTER将新添加的字段添加到已存在字段名的后面。

删除字段
ALTER TABLE <表名> DROP <字段名>;

字段名指需要删除的字段的名称。

修改字段的位置
 ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;

字段1指要修改的字段。
字段2指移动字段1的基准。

  1. 删除数据表
    4.1删除外键
    对于数据库中定义的外键,如果不再需要,可以将其删除。
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;

4.2 删除没有被关联的表

DROP TABLE [IF EXIST] 表1,表2,,,,;

该语句可以同时删除多个表。
参数IF EXIST用于判断表是否存在,加上该参数后,再删除表时,如果表不存在,SQL语言会顺利执行,但会发出警告。

4.3 删除被关联的表

需要先解除外键约束,再删除。
即4.1和4.2联合起来使用。

4.4 修改表的存储引擎

ALTER TABLE <表名> ENGINE=<更改后的引擎名>;

暂时更到这里 ,后续如果有时间考虑补上例子。