首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

等值连接,天然连接,自连接分别是什么意思啊

2012-06-22 
等值连接,自然连接,自连接分别是什么意思啊?等值连接示范:select * from sales s join titles t on s.titl

等值连接,自然连接,自连接分别是什么意思啊?
等值连接示范:
select * from sales s join titles t on s.title_id=t.title_id join publishers p on t.pub_id=p.pub_id 
在结果集中显示冗余列数据
自然连接示范:
select t.title,p.pub_name from titles t join publishers p on t.pub_id=p.pub_id
自连接示范:
select t1.title,t2.title,t1.price from titles t1 join titles t2
on t1.price=t2.price where t1.price=2.99


[解决办法]
在聯機幫助上查看
[解决办法]
第二条是内联接,不是自然联接
[解决办法]

探讨
1\2屬於同一類型

[解决办法]
再帖一边吧!

现有两张表如下,请说出如下语句的执行结果
create table T1(id int,age int)
create table T2(age int,name int)

insert into T1 select Null,Null union all
select 1,Null union all
select 1,1 union all
select 1,2 union all
select 2,1

insert into T2 select Null,Null union all
select Null,1 union all
select 1,1 union all
select 2,1 union all
select 1,2

--不使用JOIN直接双表关联,join和inner join一样只会取表中有交集的部分,注意有多条匹配的将会全列出,此外NULL在SQL Server中不被认

为有交集,
select T1.*,T2.* from T1,T2 where T1.age=T2.age
1111
1112
1221
2111
2112
select T1.*,T2.* from T1 join T2 on T1.age=T2.age
1111
1112
1221
2111
2112
select T1.*,T2.* from T1 inner join T2 on T1.age=T2.age
1111
1112
1221
2111
2112
--left join是左表(T1表中)有的数据都会显示,注意对于NULL右表有多条相匹配的数据只取出第一条
select T1.*,T2.* from T1 left join T2 on T1.age=T2.age
NULLNULLNULLNULL
1NULLNULLNULL
1111
1112
1221
2111
2112
--right join是右表(T2表中)有的数据都会显示,注意对于NULL左表有多条相匹配的数据只取出第一条
select T1.*,T2.* from T1 right join T2 on T1.age=T2.age
NULLNULLNULLNULL
NULLNULLNULL1
1111
2111
1221
1112
2112
--FULL JOIN是将两表中存在的数据都取出来,不过有多条相匹配的还是只取第一条
select T1.*,T2.* from T1 FULL JOIN T2 on T1.age=T2.age
NULLNULLNULLNULL
1NULLNULLNULL
1111
1112
1221
2111
2112
NULLNULLNULLNULL
NULLNULLNULL1
--CROSS JOIN脱离任何匹配,只要是表中有的数据都会被关联起来(包括NULL值),所以不能指定on关键字
select T1.*,T2.* from T1 ,T2 或select T1.*,T2.* from T1 ,T2 CROSS JOIN
NULLNULLNULLNULL
1NULLNULLNULL
11NULLNULL
12NULLNULL
21NULLNULL
NULLNULLNULL1
1NULLNULL1
11NULL1
12NULL1
21NULL1
NULLNULL11
1NULL11
1111
1211
2111
NULLNULL21
1NULL21
1121
1221
2121
NULLNULL12
1NULL12
1112
1212
2112
[解决办法]
去掉重复的列的等值连接叫做自然连接

热点排行