您的位置:首页 > 数据库

SQL语句(十三)多表查询

2017-03-27 14:21 363 查看

多表查询

1. 笛卡尔乘积

简单格式

SELECT * 或字段列表

FROM 数据表列表







实例

--1. 笛卡尔乘积 (五条件的连接--很多条件无意义)
Select *
from Student, SC


2. 等值连接

-- 查询选课的学生全部信息
SELECT *
From Student, SC
where Student.Sno = SC.Sno


3. 不等值连接



select numb, cnumb, score, grade
from score, grade
where score.score between grade.gstart and grade.gend


4. 使用INNER JOIN (内连接, 匹配项)

Select * 或字段列表

From 表1

INNER JOIN 表2 ON 连接规则1

INNER JOIN 表3 ON 连接规则2

...

[WHERE 条件]

[ORGER BY]

--7. 使用INNER JOIN
-- (1)
select *
from score
INNER JOIN stu1 on score.numb = stu1.numb

-- (2)
select *
from score, stu1, course
where score.numb = stu1.numb
and   score.cnumb = course.cnumb
and   stu1.name = '王宁'
order by course.cname, score.score

-- 用 INNER 改写(2)
select *
from score
INNER JOIN stu1 on score.numb = stu1.numb
INNER JOIN course ON score.cnumb = course.cnumb
where stu1.name = '王宁'   --将where里面条件放到了INNER里面
ORDER BY course.cname, score.score


5. 外连接OUTER JOIN (能够查到不匹配项)

按连接条件得到结果

内连接

左外连接 LEFT OUTER JOIN

查找左边表的不匹配项

SELECT * | 字段列表

FROM 表1

LEFT OUTER JOIN 表2 ON 条件


左表与表2没有对应项的话,左边表的记录显示出来



右外连接RIGHT OUTER JOIN

查找右边表的不匹配项

SELECT * | 字段列表

FROM 表1

RIGHT OUTER JOIN 表2 ON 条件


左表与表2没有对应项的话,表2 的记录显示出来



--8. 外连接OUTER JOIN
-- 查询所有同学的学生信息 和 选课信息(选课的列出课程编号和成绩,
-- 没有选课的这两项为NULL)
select *
from stu1
--左外连接,左边表里的,也就是stu1这个表里头的不匹配项也显示出来
LEFT OUTER JOIN score on stu1.numb = score.numb

--或者是
select *
from score
--右外连接,右边表里的,也就是这个score表里头的不匹配项也显示出来
LEFT OUTER JOIN score on stu1.numb = score.numb


多表连接查询

笛卡尔乘积

等值连接

不等值连接

内连接、外连接

SELECT *

FROM 表1

[INNER JOIN 表2 ON 条件 ] |

[LEFT | RIGHT OUTER JOIN 表2 ON 条件 ]

[WHERE 条件]

[GROUP BY 字段列表]

[HAVING 条件]

[ORDER BY 条件]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: