SQL语言-数据查询(2).pptVIP

  • 4
  • 0
  • 约3.7千字
  • 约 33页
  • 2021-04-21 发布于浙江
  • 举报
连接条件: 格式: [表名1.]列名1 比较运算符 [表名2.]列名2 当比较运算符为=时,称等值连接;使用其它运算符为非等值连接 连接谓词中的列名,称连接字段 连接字段的类型必须是可比的,但连接字段名可以不同;例1 查询每个学生及其选修课程的情况 等值连接 SELECT Student .*, SC.* FROM Student, SC WHERE Student.Sno=SC.Sno 自然连接 SELECT Student .Sno, Sname, Ssex, Sage, Sdept, Cno, Grade FROM Student, SC WHERE Student.Sno=SC.Sno;在多表连接查询中,应综合使用在单表查询中所学的各种查询方法,把多表连接的结果看作是一个新表,在其基础上应用字符匹配、条件\分组查询等方法。 例 查询选修2号课程且成绩在90分以上的所有学生。 SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=‘2’ AND SC.Grade=90 例 查询每个学生选修的课程及其成绩。 SELECT Student.Sno,Sname,Cname,Grade FROM Student, SC, Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;;外连接 SELECT Student .Sno, Sname, Ssex, Sage, Sdept, Cno, Grade FROM Student, SC WHERE Student.Sno=SC.Sno(*) *为外连接符, 相当于在表中增加了一个全部为空值的万能匹配行 它可以将那些不能与另一个表连接的元组进行连接 笛卡儿积连接 SELECT Student .*, SC.* FROM Student, SC;SQL SERVER中的多表连接;内连接;;外连接;;表的别名;别名的使用;自身连接(特殊的多表连接);;子查询(嵌套查询);从一个表中返回单一值的子查询称为单一行子查询。 例 查询年龄大于学生平均年龄的学生的信息, SELECT Sno,Sname,Ssex , Sage ,Sdept FROM Student WHERE Sage (SELECT AVG(Sage) FROM Student) 单一行比较运算符:=,,=,= 练习:查询与‘刘晨’同一个系的其他学生学号与姓名;2.多行子查询 ;查询所有被学生选修的课程的信息。 SELECT Cno,Cname,Cpno,Ccredit FROM Course WHERE Cno IN (SELECT DISTINCT(Cno) FROM SC) 说明: (1) 利用子查询查找SC表当中,被学生选修的课程 (2) 外查询从Course表中查找课程号(Cno)在子查询中查找出的课程号范围的课程信息。 练习:查询所有未被学生学修的课程信息 查询选修了“数据结构”课程的同学的信息;例. 查询其他系中比信息系(IS)任意一学生年龄小的学生姓名和年龄 带有ANY谓词的子查询 SELECT Sname,Sage FROM Student WHERE Sage ANY (SELECT Sage FROM Student WHERE Sdept=‘IS’) AND Sdept’IS’ 效果等同于: 带有集函数MAX的子查询 SELECT Sname,Sage FROM Student WHERE Sage (SELECT MAX(Sage) FROM Student WHERE Sdept=‘IS’) AND Sdept’IS’ ;例2. 查询其他系中比信息系(IS)所有学生年龄小的学生姓名和年龄 带有ALL谓词的子查询 SELECT Sname,Sage FROM Student WHERE Sage ALL (SELE

文档评论(0)

1亿VIP精品文档

相关文档