查询内外连接

create table tmp3
(
age int,
name char(100)
)
GO

create table tmp3
{
age int,
made char(100)
}
GO

insert into tmp1 values(10,'liwei')
insert into tmp1 values(11,'lijing')
insert into tmp1 values(12,'lijia')


insert into tmp3 values(10,'liwei')
insert into tmp3 values(12,'lijing')
insert into tmp3 values(14,'lijia')

--内连接:从结果中删除其他被连接表中没有匹配行的所有行
select * from tmp1,tmp3 where tmp1.age = tmp3.age
select * from tmp1 join tmp3 on tmp1.age = tmp3.age

age name age name
10 liwei 10 liwei
12 lijia 12 lijing

--左外连接:保留第一个表中的所有行,但只包含第二个表与第一表匹配的行,第二个表相应的空行被放入NULL值
select * from tmp1 left join tmp3 on tmp1.age = tmp3.age
10 liwei 10 liwei
11 lijing NULL NULL
12 lijia 12 lijing

--右外连接:保留了第二个表的所有行,但只包含第一个表与第二个表匹配的行,第一个表相应行被放入NULL值
select * from tmp1 right join tmp3 on tmp1.age = tmp3.age
10 liwei 10 liwei
12 lijia 12 lijing
NULL NULL 14 lijia

--全外连接:把两个表的所有行都显示在结果表周苏红,并尽可能多的匹配数据和连接条件
select * from tmp1 full join tmp3 on tmp1.age = tmp3.age
10 liwei 10 liwei
12 lijia 12 lijing
NULL NULL 14 lijia
11 lijing NULL NULL

--交叉连接(笛卡尔积):两个表的记录进行交叉组合。其中不能有on条件。
select * from tmp1 cross join tmp3
10 liwei 10 liwei
11 lijing 10 liwei
12 lijia 10 liwei
10 liwei 12 lijing
11 lijing 12 lijing
12 lijia 12 lijing
10 liwei 14 lijia
11 lijing 14 lijia
12 lijia 14 lijia


create table student
(
student_no int,
name char(100),
group_no int
)

insert into student values(100,'liwei',99)
insert into student values(101,'lijia',100)
insert into student values(102,'lijing',101)

--自连接:指同一个表自身与自身进行连接。如果同一时间需要一个表中两个不同行的信息(一般数据库操作每次只操作其中一行的多列),则需要将表与自身连接。为了更好地理解自身连接,用户可以把一个表想象成两个独立的表。而在from子句中表被列出了两次。
select a.student_no,a.name,b.student_no as 组长编号,b.name as 组长名称 from student a,student b where a.group_no = b.student_no
student_no name 组长编号 组长名称
101 lijia 100 liwei
102 lijing 101 lijia
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值