4、向表中插入数据insert
1、insert into 语句向表中插入数据。
命令:
-- 指定字段插入数据: INSERT IGNORE INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...); -- 向表中对应字段插入相应的值,一一对应,不写出的字段就为空 -- 全部字段插入数据: INSERT IGNORE INTO 表名 VALUES (值1, 值2, ...); -- 向表中所有列插入数据,有多少列就得有多少值 -- 批量添加数据: INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...); INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);
注:
- 字段名需要使用括号()括起来,
- 字符串和日期类型数据应该包含在引号中
INSERT IGNORE会忽略重复键错误,继续执行后续插入。
否则运行报错。
MariaDB [test]> insert into t1 values(0,"w","男"); -- 向表中所有列插入数据 Query OK, 1 row affected, 1 warning (0.00 sec) MariaDB [test]> select * from t1; +----+------+-----+ | id | name | sex | +----+------+-----+ | 1 | q | 女 | | 2 | w | 男 | +----+------+-----+ 2 rows in set (0.00 sec) MariaDB [test]> insert into t1 (name) values ("er"); -- 向表中对于的列插入数据 Query OK, 1 row affected (0.01 sec) MariaDB [test]> select * from t1 -> ; +----+------+------+ | id | name | sex | +----+------+------+ | 1 | q | 女 | | 2 | w | 男 | | 3 | er | male | +----+------+------+ 3 rows in set (0.00 sec)
-- 功能:向表中插入新记录 -- 方式1:插入完整行(必须提供所有列的值,且顺序一致) INSERT INTO employees VALUES (1, 'John', 'Doe', 50000); -- 方式2:插入指定列(推荐使用,更清晰安全) -- 明确指定要插入的列和对应的值 INSERT INTO employees (first_name, last_name, salary, department_id) VALUES ('John', 'Doe', 50000.00, 10); -- 方式3:批量插入(提高性能) -- 一次插入多条记录,减少数据库连接次数 INSERT INTO employees (first_name, last_name, salary) VALUES ('Jane', 'Smith', 60000.00), -- 第一条记录 ('Bob', 'Johnson', 55000.00), -- 第二条记录 ('Alice', 'Brown', 52000.00); -- 第三条记录 -- 方式4:从查询结果插入 -- 将SELECT查询的结果插入到目标表中 INSERT INTO managers (employee_id, department_id, title) SELECT employee_id, department_id, 'Manager' FROM employees WHERE salary > 80000;
2、插入数据时时需注意:
-
对表中每个字段必须提供一个值;
-
若某个字段没有值,可以使用null值;
-
各个字段必须按照表定义时的次序出现;
-
对于自动增量的字段,可指定一个 null 值或者0,(它会被MySQL忽略,但必须给值);
-
尽量不要使用没有明确给出字段名的列表的 insert into 语句。
3、省略字段的情况
在insert 操作中省略某些字段,需要满足以下条件:
1)该字段定义为允许 null 值(无值或空值)
2)表定义时给出默认值
若不满足上面的条件之一,则必须给值,否则插入数据时会报错
4、插入多行数据
插入多行数据可以用以下两种方式:
(1)使用多条 insert 语句,每条语句用一个分号结束;
(2)如果每条 insert 语句的字段名和次序相同,则可以一次插入多组值,组值之间用逗号(,)隔开,每组值用一对括号括起来
语法:
insert into 表名 (列1,列2...)values (组值1),(组值2),(...);
5、插入检索出来的数据
由一条 insert 语句和一条 select 语句组成,即 insert select 模式
语法:
insert into 表1 (字段) select 字段 from 表2 where 条件;
- select 语句的第一列插入 insert into 表字段中指定的第一列,其他字段也是一一对应插入
- select 语句中的字段名不需要与insert into 表字段名相同
- 需要满足插入数据的字段值匹配原则
6、提高MySQL性能
降低 insert 语句优先级,先执行其他select 语句
语法 :
insert low_priority into 表名(字段名) values (值);
本文来自博客园,作者:chao_xiong,转载请注明原文链接:https://www.cnblogs.com/chao-xiong/p/14579171.html

浙公网安备 33010602011771号