SQL INSERT INTO 语句
SQL INSERT INTO 语句
INSERT INTO 语句用于在表中插入新记录。
编写 INSERT INTO 语句有两种方式:
语法 1
同时指定列名和要插入的值:
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
语法 2
如果要为表的所有列插入值,可以省略列名。
但是,值的顺序必须与表中列的顺序相同:
INSERT INTO table_name VALUES (value1, value2, value3, ...);
演示数据库
以下是实例中使用的 Customers 表的片段:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 89 | White Clover Markets | Karl Jablonski | 305 - 14th Ave. S. Suite 3B | Seattle | 98128 | USA |
| 90 | Wilman Kala | Matti Karttunen | Keskuskatu 45 | Helsinki | 21240 | Finland |
| 91 | Wolski | Zbyszek | ul. Filtrowa 68 | Walla | 01-012 | Poland |
INSERT INTO 实例
这里我们为表的所有列插入值,因此我们省略了列名。
以下 SQL 语句在 "Customers" 表中插入一条新记录:
实例
INSERT INTO Customers
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
现在,"Customers" 表中的最后一条记录将如下所示:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 92 | Cardinal | Tom B. Erichsen | Skagen 21 | Stavanger | 4006 | Norway |
您是否注意到我们没有在 CustomerID 字段中插入任何数字?
CustomerID 列是一个自动递增字段,当新记录插入表中时,它会自动生成。
仅在指定列中插入数据
也可以仅在特定列中插入数据。
以下 SQL 语句将插入一条新记录,但仅在 "CustomerName"、"City" 和 "Country" 列中插入数据(CustomerID 将自动更新):
实例
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');
现在,"Customers" 表的片段将如下所示:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 92 | Cardinal | null | null | Stavanger | null | Norway |
插入多行
也可以在一个语句中插入多行。
要插入多行数据,我们使用相同的 INSERT INTO 语句,但使用多个值:
以下 SQL 语句在 "Customers" 表中插入三条新记录:
实例
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES
('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway'),
('Greasy Burger', 'Per Olsen', 'Gateveien 15', 'Sandnes', '4306', 'Norway'),
('Tasty Tee', 'Finn Egan', 'Streetroad 19B', 'Liverpool', 'L1 0AA', 'UK');
请确保每组值之间用逗号 , 分隔。
现在,"Customers" 表中的最后三条记录将如下所示:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 92 | Cardinal | Tom B. Erichsen | Skagen 21 | Stavanger | 4006 | Norway |
| 93 | Greasy Burger | Per Olsen | Gateveien 15 | Sandnes | 4306 | Norway |
| 94 | Tasty Tee | Finn Egan | Streetroad 19B | Liverpool | L1 0AA | UK |