runoops.com

SQL INSERT INTO

INSERT INTO 语句用于向表中插入新记录。


SQL INSERT INTO 语句

INSERT INTO 语句用于向表中插入新记录。

SQL INSERT INTO 语法

INSERT INTO 语句可以有两种编写形式。

第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:INSERT INTO table_name
VALUES (value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);


演示数据库

在本教程中,我们将使用 runoops样本数据库。

下面是选自 "websites" 表的数据:

+----+----------------+---------------------------+-------+---------+
| id | name           | url                       | alexa | country |
+----+----------------+---------------------------+-------+---------+
|  1 | Google          | https://www.google.cm/    |     1 | USA     |
|  2 | Amazon         | https://z.cn/             |     2 | USA     |
|  3 | 淘宝           | https://www.taobao.com/   |    10 | CN      |
|  4 | 自学教程       | http://runoops.com/       |  5787 | CN      |
|  5 | 微博           | http://weibo.com/         |    18 | CN      |
|  6 | stackoverflow  | http://stackoverflow.com/ |    66 | IND     |
+----+----------------+---------------------------+-------+---------+

INSERT INTO 实例

假设我们要向 "websites" 表中插入一个新行。

我们可以使用下面的 SQL 语句:

INSERT INTO websites (name, url, alexa, country)
VALUES ('百度','https://www.baidu.com/','4','CN');

执行以上 SQL,再读取 "websites" 表,数据如下所示:

mysql> SELECT * FROM websites;
+----+----------------+---------------------------+-------+---------+
| id | name           | url                       | alexa | country |
+----+----------------+---------------------------+-------+---------+
|  1 | Goole          | https://www.google.cm/    |     1 | USA     |
|  2 | Amazon         | https://z.cn/             |     2 | USA     |
|  3 | 淘宝           | https://www.taobao.com/   |    10 | CN      |
|  4 | 自学教程       | http://runoops.com/       |  5787 | CN      |
|  5 | 微博           | http://weibo.com/         |    18 | CN      |
|  6 | stackoverflow  | http://stackoverflow.com/ |    66 | IND     |
|  7 | 百度           | https://www.baidu.com/    |     4 | CN      |
+----+----------------+---------------------------+-------+---------+
7 rows in set (0.00 sec)

您是否注意到,我们没有向 id 字段插入任何数字?
id 列是自动更新的,表中的每条记录都有一个唯一的数字。


在指定的列插入数据

我们也可以在指定的列插入数据。

下面的 SQL 语句将插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据(id 字段会自动更新):

INSERT INTO websites (`name`, url, country)
VALUES ('jd', 'http://jd.com/', 'CN');

执行以上 SQL,再读取 "websites" 表,数据如下所示:

mysql> SELECT * FROM websites;
+----+----------------+---------------------------+-------+---------+
| id | name           | url                       | alexa | country |
+----+----------------+---------------------------+-------+---------+
|  1 | Goole          | https://www.google.cm/    |     1 | USA     |
|  2 | Amazon         | https://z.cn/             |     2 | USA     |
|  3 | 淘宝           | https://www.taobao.com/   |    10 | CN      |
|  4 | 自学教程       | http://runoops.com/       |  5787 | CN      |
|  5 | 微博           | http://weibo.com/         |    18 | CN      |
|  6 | stackoverflow  | http://stackoverflow.com/ |    66 | IND     |
|  7 | 百度           | https://www.baidu.com/    |     4 | CN      |
|  8 | jd             | http://jd.com/            |     0 | CN      |
+----+----------------+---------------------------+-------+---------+
8 rows in set (0.00 sec)