首页 理论教育数据库技术:数据插入语句演示

数据库技术:数据插入语句演示

【摘要】:由于选课表后列出的属性与定义表时的顺序一致,该例还可以用下面的形式表达:ⅠNSERTⅠNTO选课VALUES;2.在表中插入子查询的结果集如果插入的数据需要查询才能得到,就需要使用插入子查询结果集的ⅠNSERT语句。SQL允许将查询语句嵌到数据插入语句中,以便将查询得到的结果集作为批量数据输入表中。

SQL的数据插入语句有两种使用形式:一种是使用常量,一次插入一个元组;另一种是插入子查询的结果,一次插入多个元组。

1.使用常量插入单个元组

使用常量插入单个元组的ⅠNSERT语句的格式为:

ⅠNSERT

ⅠNTO<表名>[(<属性列1>[,<属性列2>……)]

VALUES(<常量1>[,<常量2>]……);

上述语句的功能是将新元组插入指定表中,新记录<属性列1>的值为<常量1>,<属性列2>的值为<常量2>,……。如果ⅠNTO子句中有属性列选项,则没有出现在子句中的属性将取空值,假如这些属性已定义为NOT NULL,它将会出错。如果ⅠNTO子句中没有指明任何列名,则新插入的记录必须在每个属性上均有值。

【例4-29】将一个新学生记录(学号:’98010’,姓名:’张三’,年龄:20,所在系:’计算机系’)插入学生表中。

ⅠNSERT

ⅠNTO学生

VALUES(’98010’,’张三’,20,’计算机系’);

解题说明:本题学生表后无属性列,VALUES子句的常量与学生表字段的逻辑顺序对应,该字段顺序为学号、姓名、年龄和所在系。

【例4-30】插入一条选课记录(学号:’98011’,课程号:’C10’,成绩不详)。

ⅠNSERT

ⅠNTO选课(学号,课程号)

VALUES(’98011’,’C10’);

解题说明:本例选课表后的学号和课程号两个属性与常量“98011”和“C10”对应,没有出现在选课表后的成绩属性,插入值为NULL。由于选课表后列出的属性与定义表时的顺序一致,该例还可以用下面的形式表达:

ⅠNSERT(www.chuimin.cn)

ⅠNTO选课

VALUES(’98011’,’C10’);

2.在表中插入子查询的结果集

如果插入的数据需要查询才能得到,就需要使用插入子查询结果集的ⅠNSERT语句。SQL允许将查询语句嵌到数据插入语句中,以便将查询得到的结果集作为批量数据输入表中。含有子查询的ⅠNSERT语句的格式为:

ⅠNSERT

ⅠNTO<表名>[(<属性列1>[,<属性列2>]……)

<子查询;

【例4-31】求各个系学生的平均年龄,并把结果存入数据库中。

CREATE TABLE系平均年龄(系名称CHAR(20),

平均年龄SMAⅠJJNT);

ⅠNSERT

ⅠNTO系平均年龄

SELECT所在系,AVG(ALL年龄)

FROM学生

GROUP BY所在系;

解题说明:本题首先用CREATE TABLE语句建立了系平均年龄基本表,后又使用ⅠNSERT语句将在学生表中查询得到的所在系及系平均年龄插入系平均年龄表中。