数据更新
一.插入数据
1.插入元组
INSERT INTO <表名> [(<属性列1> [,<属性列2>…])] VALUES (<常量1> [,<常量2>]…);
(1)功能:将新元组插入指定表中。
(2)INTO子句
①指定要插入数据的表名及属性列;
②属性列的顺序可与表定义中的顺序不一致;
③没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致;
④指定部分属性列:插入的元组在其余属性列上取空值。
(3)VALUES子句
①提供的值必须与INTO子句匹配
a.值的个数;
b.值的类型。
(4)例子:将学生张晨民的信息插入到Student表中。
INSERT INTO Student
VALUES('201215126','张晨民','男',18,'CS');
2.插入子查询结果(可以一次插入多个元组)
INSERT INTO <表名> [(<属性列1> [,<属性列2>…])] 子查询;
(1)INTO子句
(2)子查询
SELECT子句目标列必须与INTO子句匹配
a.值的个数;
b.值的类型。
(3)例子:
INSERT INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept;
(4)关系数据库管理系统在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则。
①实体完整性;
②参照完整性;
③用户定义的完整性。
NOT NULL约束;
UNIQUE约束;
值域约束。
二.修改数据
UPDATE <表名> SET <列名>=<表达式>,[,<列名>=<表达式>]… [WHERE <条件>];
功能:
①修改指定表中满足WHERE子句条件的元组;
②SET子句给出<表达式>的值用于取代相应的属性列;
③如果省略WHERE子句,表示要修改表中的所有元组。
1.修改某一个元组的值
例子:将学生201215121的年龄改为22岁。
UPDATE Student
SET Sage=22
WHERE Sno='201215121';
2.修改多个元组的值
例子:将所有学生的年龄增加1岁。
UPDATE Student
SET Sage=Sage+1;
3.带子查询的修改语句
例子:将计算机科学系全体学生的成绩置零。
UPDATE SC
SET Grade=0
WHERE Sno IN
(SELECT Sno
FROM Student
WHERE Sdept='CS');
关系数据库管理系统在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则:
a.实体完整性;
b.主码不允许修改;
c.用户定义的完整性:
NOT NULL约束;
UNIQUE约束;
值域约束。
三.删除数据
DELETE FROM <表名> [WHERE <条件>];
(1)功能:删除指定表中满足WHERE子句条件的元组。
(2)WHERE子句
a.指定要删除的元组;
b.缺省表示要删除表中的全部元组,表的定义仍在字典中。
1.删除某一个元组的值
例子:删除学号为201215128的学生记录。
DELETE FROM Student
WHERE Sno='201215128';
2.删除多个元组的值
例子:删除所有学生选课记录。
DELETE FROM SC;
3.带子查询的删除语句
例子:删除计算机科学系所有学生的选课记录。
DELETE FROM SC
WHERE Sno IN
(SELECT Sno
FROM Student
WHERE Sdept='CS');