多表连接查询 & 嵌套查询

多表连接查询

在数据库实际编程中,往往需要查询许多数据,有可能这些数据出现在两个或以上的表中
我们却希望这些数据出现在一个结果集中,这就需要用到连接查询
在SQL中,可以使用ANSI连接语法形式,使连接写在FROM子句中,使用JOIN...ON关键字
另一种是使用SQL Server连接语法形式,连接写在WHERE子句中。语法如下:
SQL Server连接的语法格式:
Select 查询列表
From 表1, 表2
Where 表1.列1 <比较运算符> 表2.列2
其中比较运算符可以是=、>、<、>=、<=等
ANSI连接的语法形式:
Select 表名.列名...
From {表名1 [连接类型] JOIN 表名2 ON 连接条件} [...n]
Where 查询条件

内连接

内连接也称为等同连接,返回的结果集是两个表中所有相匹配的数据,而舍弃不匹配的数据。
用SQL Server形式连接查询学生信息
Select b.NAME,a.score,b.AGE
From student b,score a
Where a.id=b.id // 通过where过滤建立内连接
用ANSI形式连接查询学生信息
Select b.NAME,a.score,b.AGE
From student b INNER JION score a ON a.id=b.id//通过on条件建立内连接
order by a.id

外连接

SQL的外连接共有三种类型:左外连接(LEFT OUTER JION)、右外连接(RIGHT OUTER JION)和全外连接(FULL OUTER JION)

左外连接

DBMS在生成的结果表中,除了包括匹配行外,还包括JION关键字(FROM子句中)左边表的不匹配行。
左外连接实际上可以表示为:左外连接=内连接+左边表中失配的元组
或者左表全部元组+右表中符合on条件的元组

右外连接

右外连接实际上可以表示为:右外连接=内连接+右边表中失配的元组
或者右表全部元组+左表中符合on条件的元组

全外连接

全外连接等同于左外连接加上右外连接,返回左表和右表的所有数据行,匹配的行进行合并显示,不匹配的也置空进行单独显示。

嵌套查询

嵌套查询也叫做子查询。即在一个外层查询中包含另一个内层查询,相当于在一个select中的where子句中包含另一个select子句。或者将一个select语句作为另一个select语句的新增列。可以完成复杂的查询操作。
注意

  • 先执行括号内的SQL语句,层层到外
  • 内部查询只执行一次
  • 如果里层结果返回多个,不能用运算比较符,要用IN。
posted @ 2022-04-05 15:49  土豆泥不好吃  阅读(592)  评论(0编辑  收藏  举报