连接查询

 

  • 连接条件或连接谓词:用来连接两个表的条件
  • 一般格式:
  •  [< 表名1>.]< 列名1> < 比较运算符> [< 表名2>.]< 列名2>

 

等值连接:连接运算符为  “= ”

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

SELECT
    Student.*,
    SC.* 
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 first.访客数,second.下单买家数
FROM
    `飞鸟_访客分布_地域` FIRST,
    `飞鸟_访客分布_地域` SECOND 
WHERE
    FIRST.id = SECOND.id;

 

 


 

外连接

  • 普通连接操作只输出满足连接条件的元组
  • 外连接操作以指定表为连接主体,将主体表中不满足连
  • 接条件的元组一并输出
  •  左外连接
    • 列出左边关系中所有的元组
  •  右外连接
    • 列出右边关系中所有的元组
SELECT
    Student.Sno,
    Sname,
    Ssex,
    Sage,
    Sdept,
    Cno,
    Grade 
FROM
    Student
    LEFT OUT JOIN SC ON ( Student.Sno = SC.Sno );

 

 


 

多表连接

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

SELECT
    Student.Sno,
    Sname,
    Cname,
    Grade 
FROM
    Student,
    SC,
    Course /* 多表连接*/
    
WHERE
    Student.Sno = SC.Sno 
    AND SC.Cno = Course.Cno;

 

posted @ 2018-07-16 13:51  泓清泉  阅读(174)  评论(0编辑  收藏  举报