注册 登录
编程论坛 SQL Server论坛

谈谈你对高级查询的理解

编程3869768 发布于 2008-12-01 22:04, 1065 次点击
内连接查询
select ProductInfo.ProdID'生产号',ProductInfo.ProdName'产品

号',EmporiumSell.SellAmout'销售数量',EmporiumSell.SellDate'销售日

期',EmporiumInfo.EmpName'商场名称'
from ProductInfo inner join  EmporiumSell
on ProductInfo.ProdID=EmporiumSell.ProdID
join EmporiumInfo
on EmporiumInfo.EmpID=EmporiumSell.EmpID


外连接查询
select ProductInfo.ProdID'生产号',ProductInfo.ProdName'产品

号',EmporiumSell.SellAmout'销售数量',EmporiumSell.SellDate'销售日期'
from EmporiumSell left outer  join ProductInfo
on EmporiumSell.ProdID=ProductInfo.ProdID


交叉连接
select EmporiumSell.SellAmout'销售数量',EmporiumSell.SellDate'销售日期

',ProductInfo.ProdID'生产号',ProductInfo.ProdName'产品名'
from EmporiumSell cross join ProductInfo


合并结果集
select kecheng.KCMC'课程名称'
from kecheng
union
select BJ.BJMC'班级名称'
from BJ



这几天  都在研究这些连接的区别  
不是很了解
哪位能系统  言简意赅的谈谈你的理解
来解除菜鸟的困惑
1 回复
#2
zhouhouyang012008-12-02 12:47
作为数据库开发人员,你可能需要从多个表中一起抽取数据以作为单一的结果集的一部分。在这个情况中,结果集中的不通列可以从不同的表中得到数据。为了从多表中抽取数据,SQL server允许你使用连接。
内连接在公共列的列上使用比较操作符从多表中抽取数据。当内链接被使用的时候,仅满足公共列中的连接条件的值行被显示。两个表中不满足连接的条件的行不显示。连接使用SELECT语句实现,这里SELECT列表包含要从表中抽取的列名。FROM从句包含联合数据要被抽取的表的名称。WHERE从句指定条件,带有比较操作符,基于这些操作符表被连接。
与内连接相比,外联接显示包含自一个表中所有行和来自另一个表中匹配行的结果集。例如,如果你在A表和B表上创建了连接,它将向你显示表A中所有的记录和来自表B中那些公共列保持条件为真的记录。外联接又分为:左连接,右连接和完全外连接,它们的关键字分别是left outer join,right outer join和full outer join。
交叉连接也被称为笛卡尔积,在两个表中将一个表中的每行与另一个表中的每行连接。结果集中行的数量是第一个表中行的数量与第二个表中行的数量的乘积。这表示如果表A有10行,表B有5行,那么结果集显示的就是50行!关键字是CROSS JOIN。
1