1.1 使用 INSERT…VALUES 语句插入数据( 二 )


示例1:通过…语句向数据表中插入一条完整的数据 。
mysql> SELECT * FROM tb_admin;Empty set (0.00 sec)mysql> DESC tb_admin;+------------+-------------+------+-----+---------+-------+| Field| Type| Null | Key | Default | Extra |+------------+-------------+------+-----+---------+-------+| id| int| NO| PRI | NULL||| username| varchar(40) | YES|| NULL||| password| varchar(30) | NO|| NULL||| createtime | datetime| YES|| NULL||+------------+-------------+------+-----+---------+-------+4 rows in set (0.00 sec)mysql> INSERT INTO tb_admin VALUES(1,'amo','123456','2023-01-31 03:32:50');Query OK, 1 row affected (0.00 sec)mysql> SELECT * FROM tb_admin;+----+----------+----------+---------------------+| id | username | password | createtime|+----+----------+----------+---------------------+|1 | amo| 123456| 2023-01-31 03:32:50 |+----+----------+----------+---------------------+1 row in set (0.00 sec)
情况2:为表的指定字段插入数据 , 就是在语句中只向部分字段中插入值 , 而其他字段的值为表定义时的默认值 。语法如下:
INSERT INTO 表名(column1 [, column2, …, columnn]) VALUES (value1 [,value2, …, valuen]);#在 INSERT 子句中随意列出列名 , 但是一旦列出 , VALUES中要插入的value1, valuen需要与#column1,columnn列一一对应 。如果类型不同 , 将无法插入 , 并且MySQL会产生错误
示例2:通过…语句向数据表中插入数据记录的一部分 。
mysql> INSERT INTO tb_admin(id,username,password) VALUES (2, 'Jerry', 'Jerry123456');Query OK, 1 row affected (0.00 sec)mysql> SELECT * FROM tb_admin;+----+----------+-------------+---------------------+| id | username | password| createtime|+----+----------+-------------+---------------------+|1 | amo| 123456| 2023-01-31 03:32:50 ||2 | Jerry| Jerry123456 | NULL|+----+----------+-------------+---------------------+2 rows in set (0.00 sec)
情况3:同时插入多条记录 。语句可以同时向数据表中插入多条记录 , 插入时指定多个值列表 , 每个值列表之间用逗号分隔开 , 基本语法格式如下:
INSERT INTO table_name VALUES(value1 [,value2, …, valuen]), (value1 [,value2, …, valuen]),……(value1 [,value2, …, valuen]);#或者INSERT INTO table_name(column1 [, column2, …, columnn]) VALUES(value1 [,value2, …, valuen]), (value1 [,value2, …, valuen]),……(value1 [,value2, …, valuen]);
示例3:通过…语句向数据表中一次插入多条记录 。
mysql> INSERT INTO tb_admin(id,username,`password`,createtime) VALUES-> (3, 'Paul', 'Paul123456', NOW()),-> (4, 'Ben', 'Ben123456', NULL),-> (5, 'Crystal', 'Crystal123456', NOW()),-> (6, 'Jason', 'Jason123456', NULL);Query OK, 4 rows affected (0.00 sec)Records: 4Duplicates: 0Warnings: 0mysql> SELECT * FROM tb_admin;+----+----------+---------------+---------------------+| id | username | password| createtime|+----+----------+---------------+---------------------+|1 | amo| 123456| 2023-01-31 03:32:50 ||2 | Jerry| Jerry123456| NULL||3 | Paul| Paul123456| 2023-01-31 03:44:37 ||4 | Ben| Ben123456| NULL||5 | Crystal| Crystal123456 | 2023-01-31 03:44:37 ||6 | Jason| Jason123456| NULL|+----+----------+---------------+---------------------+6 rows in set (0.00 sec)
使用同时插入多条记录时 , MySQL 会返回一些在执行单行插入时没有的额外信息 , 这些信息的含义如下:
Records: 表明插入的记录条数Duplicates: 表明插入时被忽略的记录 , 原因可能是这些记录包含了重复的主键值Warnings: 表明有问题的数据值 , 例如发生数据类型转换