插入数据
两种插入数据方式:
▫️插入元组
▫️插入子查询结果
1、插入子查询结果
语句格式:
INSERT
INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>]… );
INTO子句
▫️指定要插入数据的表名及属性列
▫️属性列的顺序可与表定义中的顺序不一致
▫️没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
▫️指定部分属性列:插入的元组在其余属性列上取空值
VALUES子句
▫️ 提供的值必须与INTO子句匹配
值的个数
值的类型
[例3.69]将一个新学生元组(学号:201215129;姓名:凌诺;性别:女;所在系:IS;年龄:18岁)插入到Student表中。
INSERT
INTO Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES ('201215129','凌诺','女','IS',18)
[例3.70]将学生张成民的信息插入到Student表中。
INSERT
INTO Student
VALUES ('201215126','张成民','男',18,'CS');
INTO 子句不写属性名的情况:
⚠️属性列的次序与建表时顺序相同,一一对应
[例3.71] 插入一条选课记录( ‘200215128’,'1 ')
INSERT
INTO SC(Sno,Cno)
VALUES ('201215128 ',' 1 ');
关系数据库管理系统将在新插入记录的Grade列上自动地赋空值。
or
INSERT
INTO SC
VALUES (' 201215128 ',' 1 ',NULL);
2. 插入子查询结果
语句格式:
INSERT
INTO <表名> [(<属性列1> [,<属性列2>… )]
子查询;
子查询SELECT子句目标列必须与INTO子句匹配
〉值的个数
〉值的类型
[例3.72] 对每一个系,求学生的平均年龄,并把结果存入数据库
--第一步:建表
CREATE TABLE Dept_age
(
Sdept CHAR(15), /*系名*/
Avg_age SMALLINT /*学生平均年龄*/
);
--第二步:插入数据
INSERT INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,