注:在做数据表更新时,数据库管理系统会在执行插入语句时,检查所插入元组是否破坏表上已定义的完整性规则
(一)插入一个元组
格式:
INSERT INTO <表名>[(<属性列1>,<属性列2>...)]
VALUES(<常量>,[<常量2>]...);
例:
INSERT INTO student(sno,sname,sex)values('202052128','陈冬','男');
如果没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
INSERT INTO student values('202052128','陈冬','男');
若
INSERT INTO student values('202052128','陈冬');
那么对于sex属性列会自动赋为null
(二)插入子查询结果
格式
INSERT INTO<表名>[(<属性列1>,<属性列2>...)] 子查询;
例
插入编号为J7的供应商零件记录,而且供应给J7的零件和供应给J1的零件及供应商相同
但每一种零件的供应量改为60
INSERT INTO SPJ2
SELECT SNO,PNO,'J7',PRICE,60
FROM SPJ2
WHERE JNO='J1';
结果:原来J7没有数据
插入后得到:
(三)数据修改
格式
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]...
[WHERE<条件>];
1.修改某一元组的值
UPDATE student
set age = 22
where sname='陈冬'
2.修改多个元组的值
update student
set age = age+1;
3.带子查询的修改语句(数据库系统在执行修改语句时会检查所改元组是否破坏表上已定义的完整性规则)
update sc2
set grade =grade +5
where 'cs'=
(
select sdept
from student
where student.sno=sc2.sno);
(四)数据删除
格式:
DELETE FROM <表名>
[WHERE <条件>];
1.删除所有选课记录
delete from sc2;
2.把名为‘东方配件厂’的供应商供应给工程的所有零件从spj表中删除
delete from spj
where sno in(
select sno
from s
where sname='东方配件厂');