Mysql学习历程(12)-连接查询

连接查询:将多张表进行记录的连接(按照某个指定条件进行数据拼接)

意义:在用户查看数据的时候,需要显示的数据来自多张表;


SQL中连接查询分为四类:内连接,外连接,自然连接,交叉连接   

语法: 左表  join  右表 


一.交叉连接

cross  join   语法   左表 cross   join  右表 

交叉连接是笛卡尔集连接,等价于 from 左表,右表


二.内连接 [inner ]  join ,从左表中取出一条记录,去与右表中所有的记录进行匹配:匹配必须满足某个条件在左表中与右表中相同,最终才会保留结果,否则不保留;

左表 [inner ]  join  右表   on  左表.字段=右表.字段;

on表示连接条件,条件字段就是代表相同的业务含义,如my_student.c_id和my_class.id;


字段别名和表别名的使用:在查询数据的时候,不同表有同名字段,这时候需要加上表名才能区分,而表名太长,

通常可以使用别名;

select s.*,c.name,c.room
from my_student as  s  join my_class  c
on s.c_id=c.id;
内连接可以没有连接条件,没有on之后内容,这时候系统会保留所有结果(交叉连接);

内连接还可以使用where代替关键字on 不过where没有on效率高



三.外连接

outer join 以某张表为主,取出里面的所有记录,,然后每条与另外一张表进行连接,不管能不能匹配上条件,最终都会保留,能匹配则正确保留,不能匹配则其他表的字段设置为NULL

外连接分为左右连接

left join :左连接,以左表为主;

right  join:右连接,以右表为主;

基本语法:左表  left/right  join  右表 on  左表.字段=右表.字段;

左连接: 

select s.*,c.number,c.room
from my_student_1 as  s  left join my_class  c
on s.c_id=c.id;
右连接:

select s.*,c.number,c.room
from my_student_1 as  s  right join my_class  c
on s.c_id=c.id;

左连接与右连接有差异,但是显示的数据左表数据在左边,右表数据在右边;


四.自然连接

natural join 自动匹配连接条件,系统以字段名字作为匹配模式(同名字段作为条件,多个同名字段都作为条件)

自然连接可以分为自然外连接和自然内连接;

自然内连接:左表  natural join  右表;

自然外连接:左表  natural    left/right join 右表;

 

左表  left/right/inner join  右表  using(字段名);   --  使用同名字段作为连接条件,自动合并条件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值