INSERT INTO 语句用于向表中插入新记录。
INSERT INTO 语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
在本教程中,我们将使用 Web3 样本数据库。
下面是选自 "Websites" 表的数据:
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 芝麻教程 | http://www.web3.xin/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | +----+--------------+---------------------------+-------+---------+
假设我们要向 "Websites" 表中插入一个新行。
我们可以使用下面的 SQL 语句:
INSERT INTO Websites (name, url, alexa, country) VALUES ('百度','https://www.baidu.com/','4','CN');执行以上 SQL,再读取 "Websites" 表,数据如下所示:
mysql> INSERT INTO Websites (name, url, alexa, country) -> VALUES ('百度','https://www.baidu.com/','4','CN'); Query OK, 1 row affected (0.00 sec) mysql> select * from websites; +----+----------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+----------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 芝麻教程 | http://www.web3.xin/ | 689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 6 | 百度 | https://www.baidu.com/ | 4 | CN | +----+----------+---------------------------+-------+---------+ 6 rows in set (0.00 sec)
您是否注意到,我们没有向 id 字段插入任何数字?
id 列是自动更新的,表中的每条记录都有一个唯一的数字。
我们也可以在指定的列插入数据。
下面的 SQL 语句将插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据(id 字段会自动更新)
INSERT INTO Websites (name, url, country) VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND');执行以上 SQL,再读取 "Websites" 表,数据如下所示:
mysql> INSERT INTO Websites (name, url, country) -> VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND'); Query OK, 1 row affected (0.00 sec) ERROR 1146 (42S02): Table 'web3.web' doesn't exist mysql> select * from websites; +----+---------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+---------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 芝麻教程 | http://www.web3.xin/ | 689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 6 | 百度 | https://www.baidu.com/ | 4 | CN | | 9 | stackoverflow | http://stackoverflow.com/ | NULL | IND | +----+---------------+---------------------------+-------+---------+ 7 rows in set (0.00 sec)