数据库复习——笛卡尔积,等值连接,自连接,非等值连接,外连接的原理并用sql92和sql99表示

  • 1.笛卡尔积:

                           假设两个表做笛卡尔积,就相当于A表中的每一行信息和B表中的所有信息进行映射,所形成的的新表,其他操作就是在此新表基础上进行查询操作。

sql92: select * from A,B

            A表                                                                                             B表

                                                      

 

 

                                 新表(A表和B表进行笛卡尔积):

                          

 

  • 2.等值连接:

                           在上图的新表上做筛选,选出符合条件的

sql92:select * from A,B where A.学号=B.学号

  • 3.非等值连接:

sql92:select * from B,B mm where B.成绩>mm.成绩

  • 4.自连接:自己和自己做笛卡尔积

sql92:select * from A mm,A tt where mm.姓名=tt.姓名

  • 5.外连接:

                       利用此语句 select * from A,B where A.成绩=B.成绩 将两个表等值连接了起来,次结果会将A表或B表中不符合的行删除。此时保留不合格的次行信息,便有了左外连接和右外连接和全连接

定义:

左(外)连接,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

右外连接:与左外连接实现效果相反

全连接:实现左外和右外连接的效果。

 

现在对表A和表B进行某些字段的增加和数据的更新,得到新的表A和表B

表A                                                            表B

      

 

 

 

现在进行等值连接: select * from A,B where A.成绩=B.成绩 order by A.学号,B.学号 ,得到:次结果出现了上面红字(5.外连接此处红字)说明的情况

 

左外连接:sql92:select * from A,B where A.成绩=B.成绩(+) order by A.学号 (+在那边就显示那边的null)

 

 

右外连接:sql92 : select * from A,B where A.成绩(+)=B.成绩 order by A.学号

 

 

接着把上面的内容用sql99表示:

  • 1.笛卡尔积:

select * from A cross join B

  • 2.对sql92等值连接的变形
  • 2.1 自然连接:

       自动使用多表中所有相同字段(不但值相同,名字也要相同)进行连接(两表中有几个相同,就连接合并几个相同字段)

select * from A natural join B

  • 2.2 使用using关键字对指定字段进行链接查询,但是必须是同名字段

select * from A inner join B using(学号)

 

  • 2.3 使用on关键字可以直接在其后书写链接条件,没有限制 ,想和那个字段连接都可以。

select * from A inner join B on A.成绩>B.学号

 

select * from A inner join B on A.成绩=B.学号

 

  • 3.外连接
  • 3.1 左外链接 left outer join

select * from A left outer join B on A.成绩=B.成绩 order by A.学号

 

  • 3.2右外链接 right outer join

 

  • 3.3全外链接 full outer join

select * from A full outer join B on A.成绩=B.成绩 order by A.学号

 

 

  • 36
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值