SQL INSERT语句的2种用法(附带实例)
创建完数据库和数据表后,接下来就该往表中插入数据了,在 MySQL/MariaDB 数据库中,可以通过 INSERT 语句向数据库已有的数据表中插入一行或者多行数据。
INSERT 语句有两种形式:INSERT...VALUES... 语句和 INSERT...SET... 语句。
1) INSERT...VALUES... 语句的语法格式为:
2) INSERT...SET...语句的语法格式为:
【实例 1】应用INSERT...SET...语句和INSERT...VALUES...语句。
【实例 2】通过 INSERT...VALUES...语句对表中所有的字段都插入数据(插入完整的数据记录),可以省略字段部分内容。
INSERT 语句有两种形式:INSERT...VALUES... 语句和 INSERT...SET... 语句。
1) INSERT...VALUES... 语句的语法格式为:
INSERT INTO 表名[(列名1, 列名2, 列名3, 列名n)] VALUES(值1,值2,值3,值n), (值1,值2,值3,值n);各字段的含义如下:
- 表名:插入的数据表的名称;
- [(列名1, 列名2, 列名3, 列名n)]:将数据插入到哪一列,若指定多个列,需要通过英文的逗号进行分隔;若向表中的所有列都插入数据,则可以将所有的列名直接省略,采用“INSERT 表名 VALUES(值1,值2,值3,值n)”的形式即可;
- VALUES(值1,值2,值3,值n):插入的具体的数据,可以插入多行数据,值的位置会与列的位置依次自动对应。例如,值 1 会被插入到第一列中,值 n 将会被插入到第 n 列中。
2) INSERT...SET...语句的语法格式为:
INSERT INTO 表名 SET 列名1=值1, 列名2=值2, 列名n=值n;这两种语法格式各具特点,INSERT...SET... 语句允许在插入数据时列名和列的值能够成双成对地出现,所呈现出来的效果就是插入的数据与对应的列一目了然;而 INSERT...VALUES... 语句允许一次性插入多条数据,这就省去了多次执行 INSERT 语句的时间,效率更高。
【实例 1】应用INSERT...SET...语句和INSERT...VALUES...语句。
##新创建一个数据库,在这个数据库中创建表,用来演示插入数据
MariaDB [(none)]> create database test01;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> use test01;
Database changed
##新创建一个表,注意:stu_id和english字段不能为空,其他字段可以
MariaDB [test01]> create table stu_score (
-> stu_id int not null,
-> name varchar(20) primary key,
-> english char(3) not null,
-> mathematics char(3),
-> geography char(3)
-> );
Query OK, 0 rows affected (0.006 sec)
##查看表结构
MariaDB [test01]> desc stu_score;
+-------------+-------------+------+------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+------+---------+-------+
| stu_id | int(11) | NO | | NULL | |
| name | varchar(20) | NO | PRI | NULL | |
| english | char(3) | NO | | NULL | |
| mathematics | char(3) | YES | | NULL | |
| geography | char(3) | YES | | NULL | |
+-------------+-------------+------+------+---------+-------+
5 rows in set (0.001 sec)
##使用INSERT...VALUES...语句插入多条数据
MariaDB [test01]> insert into stu_score
-> (stu_id,name,english,mathematics,geography)
-> values
-> (1,'小孙','56','44','96'),
-> (2,'小刘','67','58','74');
Query OK, 2 rows affected (0.001 sec)
Records: 2 Duplicates: 0 Warnings: 0
##使用INSERT...SET...语句格式插入一条数据
MariaDB [test01]> insert into stu_score set
-> stu_id = 3,
-> name = '小崔',
-> english = '78',
-> mathematics = '76',
-> geography = '48';
Query OK, 1 row affected (0.001 sec)
##此命令专门用来看表中所有的数据
MariaDB [test01]> select * from stu_score;
+--------+--------+---------+-------------+------------+
| stu_id | name | english | mathematics | geography |
+--------+--------+---------+-------------+------------+
| 2 | 小刘 | 67 | 58 | 74 |
| 1 | 小孙 | 56 | 44 | 96 |
| 3 | 小崔 | 78 | 76 | 48 |
+--------+--------+---------+-------------+------------+
3 rows in set (0.001 sec)
【实例 2】通过 INSERT...VALUES...语句对表中所有的字段都插入数据(插入完整的数据记录),可以省略字段部分内容。
##使用 INSERT...VALUES...语句时,省略字段部分内容,对表中所有的字段插入数据(插入完整的数据记录 )
MariaDB [test01]> insert into stu_score
-> values
-> (4,'小狗','76','39','69');
Query OK, 1 row affected (0.001 sec)
##针对某几个字段插入数据(插入一部分数据记录)
MariaDB [test01]> insert into stu_score (stu_id,name,english) values (5,'小猫','88');
Query OK, 1 row affected (0.001 sec)
##查看目前表中的数据
MariaDB [test01]> select * from stu_score;
+--------+--------+---------+-------------+------------+
| stu_id | name | english | mathematics | geography |
+--------+--------+---------+-------------+------------+
| 2 | 小刘 | 67 | 58 | 74 |
| 1 | 小孙 | 56 | 44 | 96 |
| 3 | 小崔 | 78 | 76 | 48 |
| 4 | 小狗 | 76 | 39 | 69 |
| 5 | 小猫 | 88 | NULL | NULL |
+--------+--------+---------+-------------+------------+
5 rows in set (0.000 sec)
以上就是通过 INSERT 语句向表中插入数据的具体用法,INSERT语句的两种语法格式精通一种即可,另一种作为备用,在有特殊需求的时候再使用。
ICP备案:
公安联网备案: