《关系运算与SQL实例.ppt》由会员分享,可在线阅读,更多相关《关系运算与SQL实例.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1关系运算与关系运算与SQL实例实例金秋乐金秋乐2一:关系代数一:关系代数-传统的集合运算传统的集合运算n1、并、并(Union)nR S=t|t R t Sn2、交、交(Intersection)nRS=t|t R t Sn3、差、差(Difference)nR-S=t|t R t S3一:关系代数一:关系代数-传统的集合运算传统的集合运算n4、广义笛卡儿积、广义笛卡儿积(Extended Cartesian Product)nRS=trts|tr R ts SABCa1b1c1a1b2c2a2b2c1RABCa1b2c2a1b3c2a2b2c1S4一:关系代数一:关系代数-传统的集合运算传
2、统的集合运算n运算结果运算结果ABCa1b1c1a1b2c2a2b2c1a1b3c2RSABCa1b2c2a2b2c1RSABCa1b1c1R-S5一:关系代数一:关系代数-传统的集合运算传统的集合运算n运算结果运算结果RSABCABCa1b1C1a1b2C2a1b1C1a1b3C2a1b1C2a2b2C1a1b2C2a1b2C2a1b2C2a1b3C2a1b2C2a2b2C1a2b2C1a1b2C2a2b2C1a1b3C2a2b2C1a2b2C16一:关系代数一:关系代数-专门的关系运算专门的关系运算n专业标记专业标记n1、设关系模式为、设关系模式为R(A1,A2,An).它的一个关系设它的
3、一个关系设为为R。t R表示表示t是是R的一个元组。的一个元组。tAi表示元组表示元组t中中相应于属性相应于属性Ai的一个分量的一个分量n2、若、若A=Ai1,Ai2,Aik,其中其中Ai1,Ai2,Aik是是A1,A2,An中的一部分,则中的一部分,则A称为属性列或域列。称为属性列或域列。tA=(tAi1,tAi2,tAik)表示元组表示元组t在属性列在属性列A上诸上诸分量的集合。分量的集合。A则表示则表示A1,A2,An中去掉中去掉Ai1,Ai2,Aik后剩余的属性组后剩余的属性组7一:关系代数一:关系代数-专门的关系运算专门的关系运算n专业标记专业标记n3、R为为n目关系。目关系。S为为
4、m目关系。目关系。tr R,ts S,trts称为元组的连接称为元组的连接(Concatenation).它是一个它是一个n+m列的元组,前列的元组,前n个分量为个分量为R中的一个中的一个n元组,后元组,后m个个分量为分量为S中的一个中的一个m元组元组n4、给定一个关系、给定一个关系R(X,Z),X和和Z为属性组。定义:为属性组。定义:当当tX=x时,时,x在在R上的象集上的象集(Image Set)为:为:Zx=tZ|t R,tX=x,它表示,它表示R中属性组中属性组X上上值为值为x的诸元组在的诸元组在Z上分量的集合上分量的集合8一:关系代数一:关系代数-专门的关系运算专门的关系运算n专门的
5、关系运算专门的关系运算n1、选择、选择(Selection)n又称为限制又称为限制(Restriction),在关系在关系R中选择满足给定条件中选择满足给定条件的诸元组,记作的诸元组,记作nF(R)=t|t R F(t)=真真n例例1、查询信息系、查询信息系(IS系系)全体学生全体学生nSdept=IS(Student)n5=IS(Student)n例例2、查询年龄小于、查询年龄小于20岁的学生岁的学生nSage20(Student)n420(Student)9一:关系代数一:关系代数-专门的关系运算专门的关系运算-例例学号Sno姓名Sname性别Ssex年龄Sage 所在系Sdept9500
6、1李勇男20CS95002刘晨女19IS95003王民女18MA95004张力男19ISStudent课程号Cno课程名Cname先行课Cpno学分Ccredit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL84Couse学号Sno课程号Cno成绩Grade9500119295001285950013889500229095002380SC10一:关系代数一:关系代数-专门的关系运算专门的关系运算-例例学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩G
7、radeStudentCouseSC11一:关系代数一:关系代数-专门的关系运算专门的关系运算n专门的关系运算专门的关系运算n2、投影、投影(Projection)n从从R中选择若干个属性列组成新的关系。记作:中选择若干个属性列组成新的关系。记作:nA(R)=tA|t R,A是是R中的属性列中的属性列n例例3:查询学生的姓名和所在的系:查询学生的姓名和所在的系nSname,Sdept(Student)n 2,5(Student)n例例4:查询学生关系:查询学生关系Student中有哪些系中有哪些系nSdept(Student)12一:关系代数一:关系代数-专门的关系运算专门的关系运算n专门的关
8、系运算专门的关系运算n3、连接、连接(Join)n又称又称连接。从两个关系的笛卡儿积中选取属性间满足一连接。从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记作;定条件的元组。记作;nR S=trts|tr R ts S trA tsBnA和和B分别为分别为R和和S上度数相等且可比的属性组上度数相等且可比的属性组.为比较运为比较运算符算符n特殊的连接特殊的连接:n等值连接等值连接:R S=trts|tr R ts S trA=tsBn自然连接自然连接:将等值连接中重复的属性列去掉将等值连接中重复的属性列去掉,记作记作:nR S=trts|tr R ts S trA=tsBABA=B13一:
9、关系代数一:关系代数-专门的关系运算专门的关系运算-连接例题连接例题ABCa1b15a1b26a2b38a2b412RBEb13b27b310b32b52SAR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32ABCEa1b153a1b267a2b3810a2b382R SCER SR.B=S.BR S14一:关系代数一:关系代数-专门的关系运算专门的关系运算n专门的关系运算专门的关系运算n4、除、除(Division)nR(X,Y)与与S(Y,Z)的除运算得到
10、一个新的关系的除运算得到一个新的关系P(X),P是是R中满足下列条件的元组在中满足下列条件的元组在X属性列上属性列上的投影的投影:元组在元组在X上分量值上分量值x的象集的象集Yx包含包含S在在Y上投影的集合上投影的集合,记作记作:nRS=trX|tr R y(S)Yxn其中其中Yx为为x在在R中的象集中的象集,x=trX15一:关系代数一:关系代数-专门的关系运算专门的关系运算-除例题除例题ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1RBCDb1c2d1b2c1d1b2c3d2SRSAa1分析:在关系R中A可以取4个值a1,a2,a3,a4.其中a
11、1的象集为:(b1,c2),(b2,c3),(b2,c1)a2的象集为:(b3,c7),(b2,c3)a3的象集为:(b4,c6)a4的象集为:(b6,c6)S在(B,C)上的投影为(b1,c2),(b2,c1),(b2,c3)16一:关系代数一:关系代数-专门的关系运算专门的关系运算-例题例题n例例7:查询至少选修了查询至少选修了1号课程和号课程和3号课程的学生号码号课程的学生号码n先建立临时关系先建立临时关系K:nSno,Cno(SC)K学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩Gr
12、adeStudentCouseSCCno1317一:关系代数一:关系代数-专门的关系运算专门的关系运算-例题例题n例例8:查询选修了查询选修了2号课程的学生的学号号课程的学生的学号nSno(Cno=2(SC)=95001,95002n例例9:查询至少选修了一门其直接先行课程为查询至少选修了一门其直接先行课程为5号课程的学生姓名号课程的学生姓名nSname(Cpno=5(Course)SC Sno,Sname(Student)nSno,Cno(SC)Cno(Course)Sno,Sname(Student)学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cnam
13、e先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeStudentCouseSC18一:关系代数一:关系代数-专门的关系运算专门的关系运算-例题例题n例例10:查询选修了全部课程的学生号码和姓名查询选修了全部课程的学生号码和姓名nSno,Cno(SC)Cno(Course)Sno,Sname(Student)学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudent19二:二:SQLn1、SQL概述概述nStructured Query Langu
14、age:通用的、功通用的、功能极强的关系数据库语言能极强的关系数据库语言n特点:特点:n(1).综合统一综合统一n(2).高度非过程化高度非过程化n(3).面向集合的操作方式面向集合的操作方式n(4).以同一种语法结构提供两种使用方式以同一种语法结构提供两种使用方式n(5).语言简捷、易学易用语言简捷、易学易用20二:二:SQLn数据查询数据查询nSELECTn数据定义数据定义nCREATE、DROPn数据操纵数据操纵nINSERT、UPDATE、DELETEn数据控制数据控制nGRANT、REVOKE21二:二:SQL-数据查询数据查询SELECT FROM WHERE GROUP BY H
15、AVING 内部内部函数表达式函数表达式ORDER BY ASC 或或 DESC 22二:二:SQL-数据操纵数据操纵1、UPDATEUPDATE SET=,WHERE 2、INSERTINSERT INTO(列名列名,)VALUES(表达式或函数表达式或函数,)23二:二:SQL-数据操纵数据操纵n2、INSERT(续)(续)INSERT INTO SQL子查询子查询n3、DELETEDELETE FROM WHERE 24二:二:SQL-实例实例-查询查询n例例1:查询全体学生的学号和姓名:查询全体学生的学号和姓名n例例2:查询全体学生的姓名、学号、所在系:查询全体学生的姓名、学号、所在系
16、学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeStudentCouseSCSELECT Sno,Sname FROM StudentSELECT Sname,Sno,Sdept FROM Student25二:二:SQL-实例实例-查询查询n例例3:查询全体学生的详细记录:查询全体学生的详细记录n例例4:查询全体学生的姓名及其出生年份:查询全体学生的姓名及其出生年份学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccre
17、dit学号Sno课程号Cno成绩GradeStudentCouseSCSELECT *FROM StudentSELECT Sname,2004-Sage FROM Student26二:二:SQL-实例实例-查询查询n例例5:查询全体学生的姓名、出生年份和所在系,要求用小写字:查询全体学生的姓名、出生年份和所在系,要求用小写字母表示所在系名母表示所在系名n例例6:查询选修了课程的学生的学号:查询选修了课程的学生的学号学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCSt
18、udentSELECT Sname,Year of Birth,2004-Sage,LOWER(Sdept)FROM StudentSELECT Sno FROM SCSELECT DISTINCT Sno FROM SC27二:二:SQL-实例实例-查询查询n例例7:查询计算机系全体学生的名单:查询计算机系全体学生的名单n例例8:查询所有年龄在:查询所有年龄在20岁以下的学生姓名及其年龄岁以下的学生姓名及其年龄学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStude
19、ntSELECT Sname FROM Student WHERE Sdept=CSSELECT Sname,Sage FROM Student WHERE Sage=2028二:二:SQL-实例实例-查查询询n例例9:查询考试成绩有不及格的学生的学号:查询考试成绩有不及格的学生的学号n例例10:查询年龄在:查询年龄在20-23岁之间的学生的姓名、系别和年龄岁之间的学生的姓名、系别和年龄学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT DIST
20、INCT Sno FROM SC WHERE Grade60SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23SELECT Sname,Sdept,Sage FROM Student WHERE Sage=2029二:二:SQL-实例实例-查询查询例例11:查询年龄在:查询年龄在20-23岁之间的学生的姓名、系别和年龄岁之间的学生的姓名、系别和年龄例例12:查询信息系:查询信息系(IS),数学系数学系(MA),和计算机科学系和计算机科学系(CS)学生的姓学生的姓名和性别名和性别学号Sno姓名Sname性别Ssex年
21、龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23SELECT Sname,Ssex FROM Student WHERE Sdept IN(IS,MA,CS)30二:二:SQL-实例实例-查询查询例例13:查询不是信息系:查询不是信息系,数学系数学系,和计算机科学系学生的姓名和性别和计算机科学系学生的姓名和性别例例14:查询学号为:查询学号为95001的学生
22、的详细情况的学生的详细情况学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sname,Ssex FROM Student WHERE Sdept NOT IN(IS,MA,CS)SELECT*FROM Student WHERE Sno LIKE 95001SELECT*FROM Student WHERE Sno=9500131二:二:SQL-实例实例-查询查询n例例15:查询所有姓刘的学生的姓名、学号和性别:查询所有姓刘的学生的姓名、学号
23、和性别n例例16:查询姓:查询姓欧阳欧阳且全名为三个汉字的学生的姓名且全名为三个汉字的学生的姓名学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 刘%SELECT Sname FROM Student WHERE Sname LIKE 欧阳_32二:二:SQL-实例实例-查询查询n例例17:查询名字中第:查询名字中第2个字为个字为阳阳字的学生的姓名和学号字
24、的学生的姓名和学号n例例18:查询所有不姓刘的学生的姓名:查询所有不姓刘的学生的姓名学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sname,Sno FROM Student WHERE Sname LIKE _阳%SELECT Sname FROM Student WHERE Sname NOT LIKE 刘%33二:二:SQL-实例实例-查询查询n例例19:查询:查询DB_Design课程的课程号和学分课程的课程号和学分n例例20:查询
25、以:查询以DB_开头,且倒数第开头,且倒数第3个字符为个字符为i 的课程的详细情况的课程的详细情况 学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_DesignESCAPE SELECT*FROM Course WHERE Cname LIKE DB_%i_ESCAPE 34二:二:SQL-实例实例-查询查询n例例21:查询缺少成绩的学生的学号和课程号:查
26、询缺少成绩的学生的学号和课程号n例例22:查询所有有成绩的学生的学号和课程号:查询所有有成绩的学生的学号和课程号学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sno,Cno FROM SC WHERE Grade IS NULLSELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL35二二:SQL-实例实例-查询查询n例例23:查询计算机系年龄在:查询计算机系年龄在20岁以下的学生姓名岁以下的学生姓名n
27、例例12改写:改写:学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sname FROM Student WHERE Sdept=is AND Sage340二二:SQL-实例实例-查询查询n例例32:查询每个学生及其选修课程的情况:查询每个学生及其选修课程的情况n例例33:改写:改写学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩Grade
28、CouseSCStudentSELECT Student.*,SC.*FROM Student,SC WHERE Student.Sno=SC.SnoSELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno=SC.Sno41二二:SQL-实例实例-查询查询n例例34:查询每门课程的间接先行课查询每门课程的间接先行课学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseS
29、CStudent课程号课程号Cno课程名课程名Cname先行课先行课Cpno学分学分Ccredit课程号课程号Cno课程名课程名Cname先行课先行课Cpno学分学分CcreditCouse FIRSTCouse SECONDSELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST,Course SECONDWHERE FIRST.Cpno=SECOND.Cno42二二:SQL-实例实例-查询查询n例例35:查询选修了查询选修了2号课程且成绩在号课程且成绩在90分以上的所有学生的学号和姓名分以上的所有学生的学号和姓名学号Sno姓名Sname性别Ssex年龄S
30、age所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Student.Sno,Sname FROM Student,SCWHERE Student.Sno=SC.Sno AND SC.Cno=2 AND SC.Grade9043二二:SQL-实例实例-查询查询n例例36:查询每个学生的学号、姓名、选修的课程名及成绩查询每个学生的学号、姓名、选修的课程名及成绩学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno
31、课程号Cno成绩GradeCouseSCStudentSELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,CourseWHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno44二二:SQL-实例实例-查询查询n例例37:查询与查询与“刘晨刘晨”在同一个系学习的学生的学号、姓名、所在同一个系学习的学生的学号、姓名、所在系在系学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStude
32、ntSELECT Sno,Sname,Sdept FROM StudentWHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname=刘晨)可用连接实现45二二:SQL-实例实例-查询查询n例例38:查询选修了查询选修了课程名为课程名为信息系信息系统统的学生的学号的学生的学号和姓名和姓名学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sno,SnameFROM StudentWHERE Cno
33、IN (SELECT Cno FROM SC WHERE Cno IN (SELECT Cno FROM Course WHERE Cname=信息系统)可用连接实现46二二:SQL-实例实例-查询查询n例例37改写改写学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sno,Sname,Sdept FROM StudentWHERE Sdept=(SELECT Sdept FROM Student WHERE Sname=刘晨)47二二:SQ
34、L-实例实例-查询查询n例例39:查询其他系中比信息系某一学生年龄小的学生的姓名和年龄:查询其他系中比信息系某一学生年龄小的学生的姓名和年龄学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sname,SageFROM StudentWHERE Sage ANY(SELECT Sage FROM Student WHERE Sdept=IS)48二二:SQL-实例实例-查询查询n例例40:查询其他系中比信息系所有学生年龄小的学生的姓名和年龄:查
35、询其他系中比信息系所有学生年龄小的学生的姓名和年龄学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sname,SageFROM StudentWHERE Sage ALL(SELECT Sage FROM Student WHERE Sdept=IS)49二二:SQL-实例实例-查询查询n例例41:查询所有选修了:查询所有选修了1号课程的学生姓名号课程的学生姓名学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名
36、Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sname FROM StudentWHERE EXISTS (SELECT*FROM SC WHERE Sno=Student.Sno AND Cno=1)50二二:SQL-实例实例-查询查询n例例42:查询没有选修了:查询没有选修了1号课程的学生姓名号课程的学生姓名学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Snam
37、e FROM StudentWHERE NOT EXISTS (SELECT*FROM SC WHERE Sno=Student.Sno AND Cno=1)51二二:SQL-实例实例-查询查询n例例43:查询选修了全部课:查询选修了全部课程的学生姓名程的学生姓名学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT Sname FROM StudentWHERE NOT EXISTS (SELECT*FROM Course WHERE NOT EX
38、ISTS (SELECT*FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno)52二二:SQL-实例实例-查询查询n例例44:查询至少选修了学:查询至少选修了学生生95002选修的全部课程选修的全部课程的学生号码的学生号码学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentSELECT DISTINCT Sno FROM SC SCXWHERE NOT EXISTS (SELECT*FROM SC SCY WHER
39、E SCY.Sno=95002 AND NOT EXISTS (SELECT*FROM SC SCZ WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno)53二二:SQL-实例实例-数据更新数据更新n例例1:将一个新学生记录:将一个新学生记录(学号学号:95020,姓名姓名:陈东陈东,性别性别:男男,所在系所在系:IS,年龄年龄:18)插入到插入到Student表中表中n例例2:插入一条选课记录插入一条选课记录(95020,1)学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课
40、程号Cno成绩GradeCouseSCStudentINSERT INTO StudentVALUES(95020,陈东,男,IS,18)INSERT INTO SC(Sno,Cno)VALUES(95020,1)54二二:SQL-实例实例-数据更新数据更新n例例3:对每一个系:对每一个系,求学生的平均年龄求学生的平均年龄,并把结果存入数据库并把结果存入数据库学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentCREATE TABLE Deptage(Sdep
41、t CHAR(15),Avgage SMALLINT)INSERT INTO Deptage(Sdept,Avgage)SELECT Sdept,AVG(Sage)FROM StudentGROUP BY Sdept55二二:SQL-实例实例-数据更新数据更新n例例4:将学生:将学生95001的年龄改为的年龄改为22岁岁n例例5:将所有的学生年龄增加将所有的学生年龄增加1岁岁学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentUPDATE Student SE
42、T Sage=22 WHERE Sno=95001UPDATE Student SET Sage=Sage+156二二:SQL-实例实例-数据更新数据更新n例例6:将计算机科学系全体学生的成绩置零:将计算机科学系全体学生的成绩置零学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentUPDATE SCSET Grade=0WHERE CS=(SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno)57二二:SQL-实
43、例实例-数据更新数据更新n例例7:删除学号为:删除学号为95019的学生记录的学生记录n例例8:删除所有学生的选课记录删除所有学生的选课记录学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentDELETE FROM Student WHERE Sno=95019DELETE FROM SC58二二:SQL-实例实例-数据更新数据更新n例例9:删除计算机科学系所有学生的选课记录:删除计算机科学系所有学生的选课记录学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit学号Sno课程号Cno成绩GradeCouseSCStudentDELETE FROM SCWHERE CS=(SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno)
限制150内