- pdf下载:明码7281
- 专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解
SQL数据更新次要有三种模式
- 插入数据(INSERT)
- 批改数据(UPDATE)
- 删除数据(DELETE)
一:插入数据(INSERT)
(1)插入元组
语法:格局如下,用于将新元组插入指定表中。须要留神
INTO
子句中没有呈现的属性列,新元组在这些列上将会取NULL
- 若
INTO
子句中没有指明任何属性列名,则新插入的元祖必须在每个属性列上均有值
演示:
【例1】将一个新学生元组 (学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁) 插入到Student表中
INSERTINTO student(Sno,Sname,Ssex,Sdept,Sage)VALUES('201215128','陈冬','男','IS',18);
- 留神程序能够和表不统一
【例2】插入学生张成民
INSERTINTO studentVALUES('201215126','张成民','男',18,'CS');
- 留神因为没有指定程序,所以依照必须依照表中属性列的程序插入,否则会导致插入谬误
【例3】插入一条选课记录(201215128,1)
INSERTINTO sc(Sno,Cno)values('201215128','1');
- 在这种状况下,
Grade
属性列会设置为NULL
- 须要留神如果没有给出属性列,则必须执行
Grade
为NULL
【例4】插入多条记录
INSERT INTO student VALUES (201515000,'小赵','男',30,'IS'),(201515001,'小钱','女',28,'MA'),(201515002,'小孙','男',33,'MJ'),(201515003,'小李','女',25,'CS'),(201515004,'小周','男',41,'LI');
(2)插入子查问后果
语法:格局如下,子查问同样能够嵌套在INSERT
语句中用于生成待插入的批量数据
演示:
【例5】对每一个系,求学生的平均年龄,并把后果存入数据库
CREATE TABLE dept_age( Sdept char(15), Age SMALLINT);INSERT INTO dept_age(Sdept,Age)SELECT Sdept,AVG(Sage)FROM studentGROUP BY Sdept;
二:批改数据(UPDATE)
语法:格局如下,其性能是批改指定表中满足WHERE
子句条件的元组
- 如果省略WHERE子句,则示意要批改表中所有元组
(1)批改某一个元组的值
演示:
【例6】将学生201215121的年龄改为22岁
UPDATE studentset Sage=22WHERE Sno='201215121';
(2)批改多个元组的值
演示:
【例7】将所有学生的年龄减少1岁
UPDATE studentset Sage=Sage+1;
(3)带子查问的批改语句
演示:
【例8】将CS系所有学生的问题置0
UPDATE scSET Grade=0WHERE Sno IN( SELECT Sno FROM student WHERE Sdept='CS');
三:删除数据(DELETE)
语法:格局如下,其性能是从指定表中删除满足WHERE
子句条件的所有元组,留神
DELETE
删除的是表的数据,而不是表的定义- 如果省略
WHERE
子句,那么就示意删除全副元组
(1)删除某一个元组的值
演示:
【例9】删除学号为201215128的学生记录
DELETE FROM studentWHERE Sno='201215128';
(2)删除多个元组的值
演示:
【例10】删除所有的学生选课记录
DELETEFROM SC;
(3)带子查问的删除语句
演示:
【例11】删除计算机科学系所有学生的选课记录
DELETE FROM scWHERE Sno IN (SELECT Sno FROM student WHERE Sdept='CS');