四、数据更新
数据更新操作有三种:向表中添加若干行数据、修改表中的数据、删除表中的若干行数据
(一)、插入数据(insert)
1、插入一个元组
插入一个元组语句格式:
INSERT
INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>]… );
//语句含义:新元组插入into到表中,属性列1的值为常量1……
例题:[例3.69]将一个新学生元组(学号:201215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。
INSERT
INTO Student (Sno,Sname,Ssex,Sdept,Sage)
VALUES ('201215128','陈冬','男','IS',18);
2、插入子查询结果(插入多个元组)
插入子查询语句格式:
INSERT
INTO <表名> [(<属性列1> [,<属性列2>… )]
子查询;
例题:
INSERT
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept;
(二)、修改数据(update)
三种修改方式
- 修改某一个元组的值
- 修改多个元组的值
- 带子查询的修改语句
功能:
- 修改指定表中满足WHERE子句条件的元组
- SET子句给出<表达式>的值用于取代相应的属性列
- 如果省略WHERE子句,表示要修改表中的所有元组
修改数据语句格式:
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];
例题: [例3.73] 将学生201215121的年龄改为22岁
UPDATE Student
SET Sage=22
WHERE Sno=' 201215121 ';
[例3.74] 将所有学生的年龄增加1岁。
UPDATE Student
SET Sage= Sage+1;
[例3.75] 将计算机科学系全体学生的成绩置零。
UPDATE SC
SET Grade=0
WHERE Sno IN
(SELETE Sno
FROM Student
WHERE Sdept= 'CS' );
(三)、删除数据(delete)
删除数据语句格式:
DELETE
FROM <表名>
[WHERE <条件>];
功能:删除指定表中满足WHERE子句条件的元组
WHERE子句:
- 指定要删除的元组
- 缺省表示要删除表中的全部元组,表的定义仍在字典中
三种删除方式:
- 删除某一个元组的值
- 删除多个元组的值
- 带子查询的删除语句
例题: [例3.76] 删除学号为201215128的学生记录。
DELETE
FROM Student
WHERE Sno= 201215128 ';
[例3.77] 删除所有的学生选课记录。
DELETE
FROM SC;
[例3.78] 删除计算机科学系所有学生的选课记录。
DELETE
FROM SC
WHERE Sno IN
(SELETE Sno
FROM Student
WHERE Sdept= 'CS') ;