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

 

  写的比较基础,希望可以帮到您,谢谢您的阅读。

 

   

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。