文档详情

SQL语句辅导解读.ppt

发布:2017-03-29约1.41万字共129页下载文档
文本预览下载声明
(1) 基于本表条件的更新 例.将学生95001的年龄改为22岁 UPDATE Student SET Sage = 22 WHERE Sno = ‘95001’ (2)基于其它表的更新 用子查询实现 用多表连接查询实现 例.将计算机系全体学生的成绩置0 1. 用子查询实现 UPDATE SC SET Grade = 0 WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept=’CS’) 2. 用多表连接查询实现 UPDATE SC SET Grade = 0 FROM SC JOIN Student ON SC.Sno = Student.Sno WHERE Sdept=’CS’ 例 . 查询选修了课程名“信息系统”的 学生的学号、姓名 SELECT Sno, Sname FROM Student WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM Course WHERE Cname = ‘信息系统’) ) (1) (2) (3) 嵌套查询 二.带有比较运算符的子查询 二.带有比较运算符的子查询 带比较运算符的子查询指父查询与子查询之间用比较运算符连接, 当用户能确切知道内层查询返回的是单值时,可用、、=、=、=、运算符 例.查询与“刘晨”在同一个系学习的学生 当知道一个学生只在一个系学习时,即子查询只返回一个结果时,可用比较运算符 SELECT Sno, Sname, Sdept FROM Student WHERE Sdept = ( SELECT Sdept FROM Student WHERE Sname = ‘刘晨’) 例. 查询‘c01’课程考试成绩最高的学生的姓名 SELECT Sname FROM Student WHERE Sno IN ( SELECT Sno FROM SC WHERE Grade = ( SELECT MAX(Grade) FROM SC WHERE Cno = ‘C01’) and cno = ‘c01’) 相关子查询 相关子查询在子查询的Where子句中关联外部表 经常用EXISTS( )函数引导 EXISTS代表存在量词,带EXISTS函数的子查询不返回结果数据,只产生逻辑真值和逻辑假值。 例.查询选修了1号课程的学生姓名 SELECT Sname FROM Student WHERE EXITSTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno = ‘1’) 等价于: SELECT Sname FROM Student JOIN SC ON SC.Sno = Student.Sno WHERE Cno = ‘1’ 注1:处理过程为:先外后内;由外层的值决定内层的结果;内层执行次数由外层结果数决定。 注2: 由于EXISTS的子查询只能返回真或假值,因此在这里给出列名无意义。所以在有EXISTS的子查询中,其目标列表达式通常都用*。 上句的处理过程为: 1.找外层表Student表的第一行,根据其Sno值处理内层查询 2.由外层的值与内层的结果比较,由此决定外层条件的真、假 3.顺序处理外层表Student表中的第2、3、 …行。 例 查询没有选修1号课程的学生姓名 SELECT Sname FROM Student WHERE NOT EXITSTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno = ‘1’) 等价于: SELECT Sname FROM Student WHERE Sno NOT IN ( SELECT Sno FROM SC WHERE Cno =‘1’ ) 修改数据 基本表数据的插入 基本表数据更新 基本表数据删行 基本表数据的插入 一.单行数据的插入 一.单行数据的插入 插入单行记录的INSERT语句的格式为: INSERT INTO 表名 [列名表]
显示全部
相似文档