数据的插入
插入元祖
--1. 表名后没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
insert into student
values ('201215128', '陈东', '18', '男', 'IS');--2. 在表明后指定要插入数据的表名及属性列,属性列的顺序可与表定义中的顺序不一致
insert into student(sno, sname, sage, ssex, sdept)
values ('201215138', '陈东栋', '18', '男', 'CS');--3. 插入部分列,未显示给出的列按空值计算,当然前提条件是那些列可以为空值
insert into student(sno, sname)
values ('201215148', '陈栋');
2. 插入一个子查询的结果
--子查询的结果必须包含和insert的字段列表一样多的字段,并且数据类型兼容
insert into depavgselect sdept,AVG(sage) avgagefrom studentgroup by sdept;
3.5.2 数据的修改
--1. 修改某些符合where子句中的条件的元组的值
update student
set sage = 92
where sno = '200215121';--2. where子句缺省,默认修改所有元组的该属性的值
--注意:在修改数据的时候应当先写where子句中的条件
update student
set sage = 92;--3. 带子查询的修改
update sc
set grade = 100
where 'CS' in (select sdeptfrom studentwhere sc.sno = student.sno
);--set子句中遇到null只能用等号,where子句中只能用is null
update student
set sage = null
where sno = '201811012';
注意:
DBMS在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则。
- 实体完整性:保证主码不能被修改
- 用户自定义完整性:not null约束,unique约束,值域约束等。
3.5.3 数据的删除
--1. 删除符合where子句中条件的某些行
delete
from student
where sno = '201215148';--2. 带子查询的删除
delete
from sc
where 'CS' in (select sdeptfrom studentwhere sc.sno = student.sno
);--3. 删除所有行
delete
from student;
注意:
同数据更新,结果很危险,操作需谨慎。