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 条件]
相关文章推荐
- SQL 多表一起查询的语句总结
- 几个sql多表查询语句,with as
- SQL 多表一起查询的语句总结
- SQL多表查询优化 高效率SQL语句 11条原则
- 多表查询语句写法、数据库数字如何转化为汉子、Sql语句拼接
- SQL 多表一起查询的语句总结
- SQL 语句的多表查询方式
- SQL多表查询语句
- oracle sql语句之多表查询
- 不用SQL语句查询DataTable中的数据【原创】
- SQL查询语句精华使用简要
- 标准的SQL查询语句
- 数据库知识—SQL查询语句精华使用简要
- 在ASP中使用SQL语句之6:存储查询
- 一个sql语句,包含有几乎所有标准查询语法
- SQL查询语句的使用
- docmd.runsql 语句执行的操作查询如何回滚?
- SQL查询语句精华使用简要----关于连接
- 数据库知识—SQL查询语句精华使用简要
- 用标准的SQL语句实现查询记录分页