数据库系统概论 数据查询之连接查询

大纲

  1. 等值或其他比较连接
  2. 自身连接
  3. 外连接
  4. 多表连接

SQL中“连接”是用“连接条件来表达的”。
连接条件一般格式:
表1.列名1<比较运算符>表2.列名2。

等值连接:连接运算符为“=”
自然连接:把目标列中重复的属性列去掉。
在SQL中没有自然连接,即自动把冗余部分删掉,故需要在SELECT中需显示的字段显示出来。

查询选修2课程并且分数大于80分的学生的学号和名字。
SELECT Student.Sno,Sname
From Student,SC
WHERE Student.Sno=SC.Sno AND
	  SC.Cno='2' AND SC.Grade>80

连接操作的执行过程:
1、嵌套循环法
2、排序合并法,排序之后使用指针移动
3、索引连接

自身连接

  • 一个表与其自己进行连接,是一种特殊的连接。
  • 需要给表起别名以示区别。
  • 由于所有属性名都是同名属性,因此必须使用别名前缀
查询每一个每门课的先修课名称。
SELECT FIRST.Cname,SECOND.Cname
From Course First,Course Second
Where First.Cpno=Second.Cno

外连接
外连接一般格式:
Select …
From 表一 Right/Left outer JOIN 表二 ON
(连接条件)
外连接与普通连接的区别:

  • 普通连接操作只输出满足连接条件的元组。
  • 外连接以指定表为连接主体,不满足连接条件的元组也输出
  • 左外连接:以左边为主体,列出左边关系,Left outer JOIN
  • 右外连接:以右边为主体,列出右边关系,Right outer JOIN
  • 如想列出每个学生的基本情况和选课情况,若有些学生没有选课,使用普通连接时这些学生的信息就被舍弃掉。而外连接则会保留这些学生的信息,在选课的属性写Null。
列出每个学生的基本情况和选课情况
Select Student.Sno,Sname,Ssex,Sage,Sdept,cno,grade
From Student Student Left outer JOIN SC ON
	 (Student.Sno=SC.Sno)

多表连接
两个以上的表进行连接

查询每个学生的学号,姓名,选修课程名及成绩。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章