尚硅谷之MySQL基础
8、自增列:AUTO_INCREMENT
例如:
CREATE TABLE t_stu( sid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(100) NOT NULL, gender CHAR NOT NULL DEFAULT '男', birthday DATE, address VARCHAR(200) ); |
关于自增长auto_increment:
- 整数类型的字段才可以设置自增长。
- 当需要产生唯一标识符或顺序值时,可设置自增长。
- 一个表最多只能有一个自增长列
- 自增长列必须非空
- 自增长列必须是主键列或唯一键列。
- InnoDB表的自动增长列可以手动插入,但是插入的值如果是空或者0,则实际插入的将是自动增长后的值。
第9章 DML
数据操纵语言(DML)DML用于插入、修改、删除数据记录,包括如下SQL语句:
INSERT:添加数据到数据库中
UPDATE:修改数据库中的数据
DELETE:删除数据库中的数据
9.1 插入数据
1、语法
INSERT INTO 表名称 VALUES(值1,值2,......); |
INSERT INTO 表名称 VALUES(值1,值2,......),(值1,值2,......),...; |
INSERT INTO 表名称 (字段1,字段2,......) VALUES(值1,值2,......); |
INSERT INTO 表名称 (字段1,字段2,......) VALUES(值1,值2,......),(值1,值2,......),.....; |
2、说明
1、值的顺序、个数与字段列表中字段的顺序、个数一致
(1)如果个数少了就报Column count doesn’t match value count
(2)如果VALUES前面的()中没有列出字段,那么默认就是为表中的所有字段赋值,那么个数与顺序与表结构中字段定义的一致
2、关于自增长列,默认值列,允许为NULL列的赋值
(1)如果字段列表列出了字段名,那么值列表中就要为其赋值,哪怕它是自增长列,有默认值列,可以为NULL值的列。
- InnoDB表的自动增长列可以手动插入合适的值,但是插入的值如果是NULL或者0,则实际插入的将是自动增长后的值;
- 如果列声明了“默认约束”那么对应的位置可以赋值具体的值,也可以使用“DEFAULT”,表示使用默认值;
- 如果列允许了NULL值,那么可以为对应的字段可以赋值为具体值也可以赋值为NULL
(2)对于没有列出的字段,像自增列就自动赋值,像默认值列就自动赋默认值,像允许NULL的列就自动赋NULL值
3、VALUES也可以写成VALUE,但是VALUES是标准写法
4、可以同时插入多行
5、如果插入从表的数据,要注意查看主表参照字段的值是否存在
6、值的位置可以是常量值、表达式、函数