插入记录
DML 可以帮助将数据插入到二维表 ( insert 操作)、从二维表删除数据( delete 操作)以及更新二维表的数据( update 操作)。
INSERT INTO
Syntax
INSERT INTO table_name (column_1, column_2, ..., column_n )
VALUES (value_1, value_2, ..., value_n);
日期写字符串即可,MySQL 会自动处理成日期类型。
Example
INSERT INTO tb_college (col_id, col_name, col_tel)
VALUES (DEFAULT, '计算机学院', '021-12345678');
tip
- 两个括号里的字段名和值要一一对应
- 声明哪些字段的时候,顺序无所谓,只要字段和值是对应的即可
- 有默认值的字段,第一个括号中可以不用声明该字段,第二个括号
DEFAULT
也就不用写了 - Table DDL 语句定义了
NOT NULL
且后面没有DEFAULT
,则 INSERT 的时候一定要有该字段
没有指定字段
如果表名后面没有声明给哪些列赋值,则表示给每一列都要赋值,DEFAULT
也不能缺省,且顺序要和定义的顺序一致:
INSERT INTO tb_college
VALUES (DEFAULT, '计算机学院', '021-12345678');
插入时的约束
- 主键约束:主键如果是自己定义值的话,不能重复插入
- 唯一约束:有
UNIQUE
约束的字段,也不能重复插入,尤其是UNIQUE
+DEFAULT
都有的时候,使用DEFAULT
会容易重复 - 检查约束:插入的值也要满足该约束
- 外键约束:插入的值要是在另外一个表中存在的
批量插入
INSERT INTO tb_college (col_name, col_tel)
VALUES
('计算机学院', '021-12345678'),
('外国语学院', '021-12345679'),
('经济管理学院', DEFAULT);
Q: 如果批量插入的第一条记录是满足约束的,第二条不满足,那么第一条会插进数据库吗?
A: 不会,这本质上是一个分号即一条SQL语句,所以要么都成功,要么都不成功。