天天看点

SQL Server ——连接查询

二、连接查询 JOIN…IN

  • 内连接查询:
  • 内连接查询是最典型、最常用的连接查询,根据表中共同的列来进行匹配,特别是两个表存在主外键时通常会使用内连接查询。
  • 外连接查询:

    外连接查询是至少返回一个表中的所有记录,根据匹配条件有选择性的返回另一张表的记录,外连接可以是左外连接、右外连接。

  • 内连接查询INNER JOIN…ON
  • 内连接通常会使用 = 或者< >等比较运算符判断两列数据值是否相等。 内连接使用INNER JOIN…ON

    关键字或where子句进行表之间的关联

SQL Server ——连接查询
SQL Server ——连接查询

针对以上两个表格score分数表、student02学生表操作。

  1. 2 在where子句中指定连接条件
--查询学生姓名和成绩
SELECT Score.CourseID AS 课程, student02.SName AS 学生姓名, Score.Score AS 成绩
FROM  student02,Score
where student02.SCode = Score.StudentID
--1.2用join...on子句
SELECT Score.CourseID AS 课程, student02.SName AS 学生姓名, Score.Score AS 成绩
FROM student02 
INNER JOIN Score 
ON student02.SCode = Score.StudentID
           

如:

SQL Server ——连接查询
  • 内连接查询中的说明:
  • 1)INNER JOIN 用来连接两个表
    • 2)INNER 可以省略
    • 3)ON来设置条件
    • 4)AS 指定表的别名。

1.3 限定条件

--查询科目编号为1的及格学生的姓名和分数
SELECT Score.CourseID AS 课程, student02.SName AS 学生姓名, Score.Score AS 成绩
FROM  student02 INNER JOIN
Score ON student02.SCode = Score.StudentID
WHERE (Score.CourseID = 1) AND (Score.Score >= 60)
           

如:

SQL Server ——连接查询

1. 4 连接三个表

  1. 准备课程表course
    SQL Server ——连接查询
--查询学生姓名、分数,并且通过课程编号显示课程表中对应课程的名称。
--第一种形式:直接用where子句
SELECT student02.SName AS 学生姓名, Course.CName AS 课程名称, Score.Score AS 成绩
FROM  student02,Score,course
where student02.SCode = Score.StudentID and Score.CourseID = Course.Id
--第二种inner join..ON
SELECT student02.SName AS 学生姓名, Course.CName AS 课程名称, Score.Score AS 成绩
FROM  student02 
INNER JOIN Score 
ON student02.SCode = Score.StudentID 
INNER JOIN Course 
ON Score.CourseID = Course.Id
           

如:

SQL Server ——连接查询
  1. 外连接查询

    内连接:从两个或两个以上表的组合中挑选出符合连接条件的数据。内连接查询中,参与连接的表的地位是平等的。

    与内连接查询相对的方式称为外连接查询。在外连接查询中参与连接的表有主从之分,以主表的每行数据匹配从表的数据列。对不符合连接条件的列,将被****填上NULL空值后再返回到结果集中。

  2. 左外连接LEFT JOIN…ON或Left OUTER JOIN…ON
  3. 显示所有参加考试学生的考试分数,没有参加考试的学生也显示出来。 学生成绩表中增加科目的考试记录:
    SQL Server ——连接查询
SELECT student02.SName, Score.CourseID, Score.Score
FROM  student02 
INNER JOIN Score 
ON student02.SCode = Score.StudentID
           

如:

SQL Server ——连接查询
  1. 右外连接RIGHT JOIN…ON或Right OUTER JOIN…ON 新建书籍表booktitles和出版商表Bookpublishers
    SQL Server ——连接查询
    SQL Server ——连接查询
SELECT BookTitles.Title_id AS 书籍编号, BookTitles.Title AS 书名, BookPublishers.Pub_name AS 出版商 FROM  BookTitles 
RIGHT OUTER JOIN BookPublishers 
ON BookTitles.Pub_id = BookPublishers.Pub_id
           

如:

SQL Server ——连接查询

将包括所有的出版商在表BookTitles中没有书名的出版商也会被列出。