本文采用MySQL5.7.26版本
1 建表语句
建表语句create语法如下:
1.1 设置unsigned
unsigned设置数值类型是否为无符号数,可以为空,如下举例:
1.2 设置默认值
default设置默认值,如下:
1.3 设置非空
not null设置列值不可为空,注意一般设置为not null的时候需要设置一个默认值(1.2那样),这样在插入时如果未指定非空字段就会用默认值代替。如果不指定默认值,那么插入时不指定值会报没有默认值的错误,如下:
1.4 设置备注
comment可以设置表的备注和字段的备注,如下所示:
1.5 设置键值
1.5.1 设置主键(聚簇索引)
1> 设置主键用primary key,当唯一主键时可以在列声明时指定,也可以在列声明后指定如下:
2> 当设置联合主键时,只能在列声明之后指定,如下:
1.5.2 设置唯一键(唯一索引)
设置唯一键规则与1.5.1中相同,要把其中关键字改为unique key。
1.5.3 普通键(普通索引)
在列声明完后添加普通索引的列即可,如下:
1.6 设置默认字符
设置表的默认字符集,使用default character set 'codeset',如下设置utf8,如下:
1.7 设置引擎
建表是设置引擎使用engine='engine'即可,可选择值有innodb,myisam,memory。如下:
1.8 auto_increment的用法
1.8.1 auto_increament知识
如果给某个数据表中的一个整数数据列定义可选的auto_increment属性,那么当用户向这个数据表插入一条新记录时,mysql 就会自动地把这个整数数据列的当前最大取值加上1之后赋值给新纪录中的这个整数字段。auto_increment属性的常见用法是定义数据表的主键字段。
使用 auto_increment 属性需要注意的问题:
1> 必须与 not null、primary key 或者 unique 属性同时使用且表中最多只能有一个 auto_increment 数据列。
2> 值自动生成机制只在用户使用insert命令插入新纪录,并且没有为ID字段明确地给出一个值或null时才起作用。如果用户给出了一个具体的值并且这个值还没有在ID列里出现过,MySQL就将使用这个ID值生成一条新数据记录。
3> 如果想知道MySQL在刚插入数据记录里生成的auto_increment值是多少,在执行完insert命令后(但还是在本次连接或本个事务里),立刻执行select last_insert_id() 命令。
4> 如果auto_increment计算器到达了它的最大值(不同的整数数据类型有不同的最大值),将不再继续递增,数据记录的插入操作也将随之无法继续进行。对 insert和delete 操作非常频繁的数据表来说,哪怕数据记录远少于20亿条,也有可能出现32位整数类型的auto_increment计算器被耗尽的情况。在定义这种数据表的时候,最好使用bigint数据列。
1.8.2 应用
1> 设置普通的自增,如下:
首次创建后使用show create table,不会出现AUTO_INCREAMENT=?,表中插入数据后会出现AUTO_INCREATE=?,?代表下一个自增的值。
2> 设置自增的步长
数据库的默认设置可以用如下命令查看:
如果要单独设置表自增的起始值和步长,如下所示:
这种set的方式不是全局生效的,如果想要全局生效,需要对mysql进行配置。
在创建表时可以通过auto_increment=?来设置其初始值,如下:
注意“?”必须是符合数据库设置的auto_increment_increment和auto_increment_offset规则的,如果不合规则那么不生效,其生成的第一个数字是比设置值大的符合按偏移量和步长的第一个数字。如下举例:
上例子中设置偏移量为4,步长为3.但是第一个插入的数据时8,打破了该规则,然后向表中插入默认值,其生成的是10,并不是8+3,因为8打破了偏移量与步长的规则,下一个生成的数字是大于8并且符合改规则的第一个数字10,再向其中插入的话,生成的数字就是13。
2 修改表
2.1 修改表名
2.2 修改字符集
2.3 修改引擎
2.4 修改列
1> 修改列名列类型(可以附带上其他信息):
2>修改列的位置到第一列:
3> 修改列的位置到某列的后面:
2.4.1 增加列
1> 将列增加到表的第一列,如下:
2> 在列id后增加age列,如下:
2.4.2 删除列
3 删除表
3.1 删除1个表
使用drop table命令,如下
3.2 删除多个表
使用drop tables命令,表名之间用","分割,如下:
该命令遇坏则坏,但是能清除所有已存在的表,如下创建test1,test2,test3,test5四个表:
使用命令drop tables test1, test2, test3, test4, test5进行测试,如下:
4 查看所有表
查看当前所在的数据库中的所有表,如下: