Skip to main content

插入记录

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语句,所以要么都成功,要么都不成功。