SQL学习系列(一)之多表查询
在数据库中,各个表之间存在一定的联系,如果需要对数据进行一系列的查询是,仅仅从一个表或一个库中获得数据信息是不够的,需要从多个表或多个数据库提取所需要的数据信息,而进行一些简单select语句查询是无法满足用户需求的,这时就需要涉及到高级查询。
以下都用A、B代表数据库表。
1.内连接查询-内连接使用比较运算符对各个表中的数据进行比较操作,并列出各个表中与条件相匹配的所有数据行。
关键字:INNER JOIN或JOIN
(1).等值连接
语句格式:select a * ,b * from A as a INNER JOIN b as b on a.ID=b.ID
(2).非等值连接-非等值连接就是除等值(=)运算符之外的比较运算符,主要有>、<、>=、<=、<>、还有范围运算符BETWEEN
语句格式:select a * ,b * from A as a INNER JOIN b as b on a.ID=b.ID and b.age<40
2.外连接-完全连接指定返回两个表中所有匹配行以及不匹配的行。
关键字:FULL OUTER JOIN
语句格式:select * from a *, b * from A as a FULL OUTER JOIN B as b on a.ID=b.ID
3.左外连接-左外连接指定返回两个表中所有匹配行以及join关键字左边表中不匹配的行。
关键字: LEFT OUTER JOIN
语句格式:select * from a *, b * from A as a LEFT OUTER JOIN B as b on a.ID=b.ID
4.右外连接-右外连接指定返回两个表中所有匹配的行以及join关键字右边不匹配的行。
关键字: RIGHT OUTER JOIN
语句格式:select * from a *, b * from A as a RIGHT OUTER JOIN B as b on a.ID=b.ID
5.交叉查询-使用交叉查询将返回两个表中所有行的可能组合,即在结果集中,将显示所有两个表可能匹配的数据行。交叉查询分使用where和不使用where子语句两种情况。
不使用WHERE子句:将会返回被连接两个表中所有行。
使用WHERE子句:将返回被连接两个表中所有行减去不符合where子句查询条件的数据行。
(1)不使用WHERE子句
语句格式:select * from a *, b * from A as a CROSS JOIN B as b
(2)使用WHERE子句
语句格式:select a *, b * from A as a CROSS JOIN B as b where a.ID=b.ID and 编号=‘10‘
6.自然连接-在对多个表进行查询时,不仅可以对两个不同的表进行连接查询,还可以一个表与自己进行连接查询,这件就叫自然连接
语句格式: select a *,b * from A as a,B as b where a.ID=b.ID
7.联合查询-使用UNION运算符将两个或两个以上的select语句查询结果集合合并成一个结果集显示的就叫联合查询
语句格式:select * from A where age=20 UNION select * from B where sex=‘男‘
8.交查询-使用INTERSECT运算符返回两个或两个以上select语句查询结果集的交集就是交查询。
语句格式:select * from A INTERSECT select * from B where age=20
9.差查询-使用EXCEPT运算符用于返回两个或两个以上select语句查询结果集合的差集就是差查询
语句格式:select * from A EXCEPT select * from B where age<35
写的比较基础,希望可以帮到您,谢谢您的阅读。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。