sql基础语法-联接查询
2016-08-03 13:28
316 查看
交叉联接
1.不带where条件的,将返回两个表的 行乘积
select c.*, e.* from Sales.Customers c cross join hr.Employees e
2.带where 条件的,交叉联接不能使用ON
select e1.empid,e1.firstname,e1.lastname, e2.empid,e2.firstname,e2.lastname from HR.Employees as e1 cross join HR.Employees as e2 where e1.empid= e2.empid
内联接
内联接先对两个表做笛卡尔乘积,再用on进行筛选,Inner join,默认Inner可以忽略。
SELECT E.empid,E.firstname,E.lastname,O.orderid From HR.Employees AS E JOIN Sales.Orders AS O ON E.empid=O.empid
外联接
1)左外连接LEFT [OUTER] JOIN
显示符合条件的数据行,同时显示左边数据表不符合条件的数据行,右边没有对应的条目显示NULL
例如,以下查询会查询出,没有订单的客户信息,orderid 填充NULL
SELECT C.custid,C.companyname,O.orderid FROM Sales.Customers AS C LEFT OUTER JOIN Sales.Orders AS O ON C.custid=O.custid
2)右外连接RIGHT [OUTER] JOIN
显示符合条件的数据行,同时显示右边数据表不符合条件的数据行,左边没有对应的条目显示NULL
例如,以下查询会查出所有的订单信息,没有订单信息的customer信息不会被查出。
SELECT O.orderid,C.custid,C.companyname FROM Sales.Orders AS O LEFT OUTER JOIN Sales.Customers AS C ON O.custid=C.custid
3)全外连接full [outer] join
显示符合条件的数据行,同时显示左右不符合条件的数据行,相应的左右两边显示NULL,即显示左连接、右连接和内连接的并集。
例如以下代码,返回的结果集行数相通,对于没有订单的customer同样会返回数据。
SELECT C.custid,C.companyname,O.orderid FROM Sales.Customers AS C FULL OUTER JOIN Sales.Orders AS O ON C.custid=O.custid SELECT O.orderid,C.custid,C.companyname FROM Sales.Orders AS O FULL OUTER JOIN Sales.Customers AS C ON O.custid=C.custid
其他联接-复合联接
其他联接-不等联接
其他联接-多联接查查询
相关文章推荐
- Hadoop Hive基础SQL语法(DQL 操作:数据查询SQL)
- Hive常用的基础sql语法--聚合函数,分组函数的使用和多表查询
- 【T-SQL基础】02.联接查询
- 【T-SQL基础】02.联接查询
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-03 联接查询
- SQL操作数据——SQL组成,查询基础语法,where,Oracle常用函数等
- vs2005入门 .Net2.0视频教程 之 SQL查询语法基础 [视频]
- SQL查询之基础(语法和概念)完整版
- 2008技术内幕:T-SQL语言基础 联接查询摘记
- 联接基础知识---SQL中
- 一个sql语句,包含有几乎所有标准查询语法
- SQL基础(四)数据查询
- SQL查询前十条的语法
- 基础查询sql
- MySQL基础入门-05MySQL的SQL语法
- T-SQL查询语言基础(表)
- SQL查询语句语法
- 编写 SQL 查询:让我们从基础知识开始
- SQL基础语法
- SQL查询语句基础