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 (值);

 

posted @ 2021-03-25 22:21  chao_xiong  阅读(2605)  评论(0)    收藏  举报