数据库——(8)连接查询

连接查询:将多张表进行纪录的连接(按照某个指定的条件进行数据拼接)。
最终结果是:纪录数有可能变化,字段数一定会增加(至少两张表的合并)。

连接查询的意义:在用户查看数据的时候,需要显示的数据来自多张表。
连接查询:join,使用方式:左表 join 右表
左表:join左边的表;右表:join右边的表。
SQL中将连接查询分为四类:内连接,外连接,自然连接和交叉连接。

交叉连接:cross join,从一张表中循环取出每一条纪录,每条纪录都去另一张表匹配,匹配结果一定保留,而连接本身字段会增加,最终形成笛卡儿积。
基本语法:左表 cross join 右表;

select * from my_stu cross join my_class;

交叉连接存在的价值:保证连接这种结构的完整性。

内连接:[inner] join,从左表中取出每一条纪录,去右表中与所有的纪录匹配,匹配必须是某个条件在左表中与右表相同最终才会保留结果,否则不保留。
基本语法:左表[inner] join 右表 on 左表.字段 = 右表.字段;

select * from my_stu inner join my_class on my_stu.c_id = my_class.id;

在查询数据的时候,不同表有同名字段,这个时候要加上别名区分。

select s.*,c.name as c_name,c.room as c_room from -- -- 字段别名
my_stu as s inner join my_class as c 
on s.c_id = c.id; -- -- 表别名

注意:
1.内连接要求连接两边的结果都存在。
2.内连接可以没有条件,不过这就形成了笛卡儿积。
3.内连接还可以使用where代替on,不过不推荐因为where没有on效率高。

外连接:outer join(实际没有outer关键字),以某张表为主,取出里面的所有纪录,然后每条与另外一张表连接,不管能不能匹配上条件,最终都会保留。能匹配,正确保留;不能匹配,其他表的字段都置NULL。
外连接分为两种:
left join:左外连接
right join:右外连接
基本语法:左表 left/right join 右表 on 左表.字段 = 右表.字段;

自然连接:natural join,自然连接就是自动匹配连接条件:系统以同名字段作为条件(多个同名字段都作为条件)。
自然连接可以分为自然内连接:

select * from my_stu natural join my_class;

和自然外连接:

select * from my_stu natural left join my_class;

外连接可以模拟自然连接,使用using

select * from my_stu left join my_class using(id);x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值