数据库系统概论第五版学习笔记连接查询 第三章(三)

连接查询

内连接:

  1. 表与表用逗号“,”分开

  2. 增加连接条件(属性相等):student.sno = sc.sno

  3. 公共属性一定要加前缀

 

1. 等值与非等值连接查询

  1)连接查询的where子句中用来连接两个表的条件称为连接条件连接谓词

  格式:[<表名1>.]<列名1>  <比较运算符>  [<表名2>.]<列名2>

       比较运算符主要有:=  >  <  >=  <=  !=

  连接运算符为 = 时,称为等值连接,使用其他运算符称为非等值连接

   查询每个学生及其选修课程的情况

   /*这两个表之间的联系是通过公共属性sno实现的*/

   Select student.*, sc.*

   From student, sc

   Where student.sno = sc.sno

 2)自然连接:若在等值连接中把目标列中重复的属性列去掉则为自然连接

  对上例用自然连接完成

  Select student.sno, sname, sex, sage, sdept, cno, grade

  From student, sc

  Where student.sno = sc.sno

 3)一条SQL语句可以同时完成选择和连接查询,这时WHERE子句是由连接谓词和选择谓词组成的复合条件。

  查询选修2号课程且成绩在90分以上的所有学生的学号和姓名

  Select student.sno, sname

  From student, sc

  Where student.sno = sc.sno and sc.cno = 2 and sc.grade>90

 

2. 自身连接

   一个表与其自己进行连接,称为表的自身连接

   查询每一门课的间接先修课(即先修课的先修课)

   Select first.cno, second.cpno

   From course first, course second

   Where first.cpno = second.cno

 

3. 外连接:

  1. 外连接的表是有顺序的

  2. 外连接条件不是全局条件

  3. 当行一个不能少时,使用外连接

有时想以student表为主体列出每个学生的基本情况及其选课情况。

若某个学生没有选课,仍把student的悬浮元组保存在结果关系中,而在sc表的属性上填空值NULL,这时就需要使用外连接。

  外连接:把悬浮元组也保存在结果关系中,而在其他属性上填空值NULL

  查询每个学生及其选修课程情况

  Select student.sno, sname, sex, sage, sdept, cno, grade

  From student LEFT OUTER JOIN sc ON ( student.sno = sc.sno )

/*也可以用USING来去掉结果中的重复值:From student LEFT OUTER JOIN sc USING ( sno )*/

 左外连接:T1 LEFT OUTER JOIN T2 ON T1.A = T2.A

 右外连接:T1 RIGHT OUTER JOIN T2 ON T1.A = T2.A

 全外连接:T1 FULL OUTER JOIN T2 ON T1.A = T2.A

 

4. 多表连接

  两个以上的表进行连接

  查询每个学生的学号、姓名、选修课程名及成绩

  Select student.sno, sname, cname, grade

  From student, sc, course

  Where student.sno = sc.sno and sc.cno = course.cno

你可能感兴趣的:(数据库学习笔记)