本文介绍如何利用 SQL 的 INSERT
语句将数据插入表中。
1. 数据插入
顾名思义,INSERT
用来将行插入(或添加)到数据库表。插入有几种方式:
- 插入完整的行;
- 插入行的一部分;
- 插入某些查询的结果。
下面逐一介绍这些内容。
1.1 插入完整的行
把数据插入表中的最简单方法是使用基本的 INSERT
语法,它要求指定表名和插入到新行中的值。下面举一个例子:
INSERT INTO Customers
VALUES(1000000006,
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);
分析:这个例子将一个新顾客插入到 Customers
表中。存储到表中每一列的数据在 VALUES
子句中给出,必须给每一列提供一个值。如果某列没有值,如上面的 cust_contact
和 cust_email
列,则应该使用 NULL
值(假定表允许对该列指定空值)。各列必须以它们在表定义中出现的次序填充。
提示:INTO
关键字
在某些 SQL 实现中,跟在 INSERT
之后的 INTO
关键字是可选的。但是,即使不一定需要,最好还是提供这个关键字,这样做将保证 SQL 代码在 DBMS 之间可移植。
虽然这种语法很简单,但并不安全,应该尽量避免使用。上面的 SQL 语句高度依赖于表中列的定义次序,还依赖于其容易获得的次序信息。即使可以得到这种次序信息,也不能保证各列在下一次表结构变动后保持完全相同的次序。因此,编写依赖于特定列次序的 SQL 语句是很不安全的,这样做迟早会出问题。
编写 INSERT
语句的更安全(不过更烦琐)的方法如下:
INSERT INTO Customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
VALUES(1000000006,
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);
分析:这个例子与前一个 INSERT
语句的工作完全相同,但在表名后的括号里明确给出了列名。在插入行时,DBMS 将用 VALUES
列表中的相应值填入列表中的对应项。VALUES
中的第一个值对应于第一个