mysql左连接,右连接,内连接应用

/*
左连接:语法

假设a表在左不动,b表在a表的右边上下滑动
a表与b表通过一个关系来筛选b表的行

a left join b on 条件  ,条件为真,则b表对应的行取出

a left join b on 条件 这一块形成的也是一个结果集
可以看成一张表 设为c表

这时,可以对c表做查询 ,where ,group ,having,order by ,limit
照常使用

问 c表的可以查询的列有哪些列?
答: a b 的列都可以查

*/


goods left join category on goods.cat_id=
category.cat_id 当成c表看

select goods_id,goods_name,goods_number,shop_price
cat_name from c;


/*
***************************
左连接,右连接,内链接的区别在哪儿?

左右连接是可以互换的
A left join B ,就<==> B right join A
注意:既然左右连接可以互换,尽量用左连接,出于移植的
兼容性考虑


内连接的特点:
结婚的站出来,此时,男屌丝,跟女宝格格,出局

---------
从集合的角度:
A inner join B 和 left join/right join 的关系
 答:内连接是左右连接的交集
 
-----------
左右连接的并集呢?称为外连接 ,但是mysql
不支持外连接
 

*/

建表
create table boy(
bname varchar(20),
other char(1),
)engine myisam charset utf8;

insert into boy
value
('屌丝','A'),
('李四','B'),
('王五','C'),
('高富帅','D'),
('郑七','E'),


create table girl(
gname varchar(20),
other char(1)
)engine myisam charset utf8;

insert into boy
value
('空姐','B'),
('大S','C'),
('阿娇','D'),
('二奶','D'),
('林妹妹','E'),
('宝格格','F');

mysql> select boy.*,girl.* from
    -> boy left join girl on boy.other=girl.other;
+-----------+-------+-----------+-------+
| bname     | other | gname     | other |
+-----------+-------+-----------+-------+
| 李四      | B     | 空姐      | B     |
| 王五      | C     | 大S       | C     |
| 高富帅    | D     | 阿娇      | D     |
| 高富帅    | D     | 二奶    | D     |
| 郑七      | E     | 林妹妹    | E     |
| 屌丝      | A     | NULL      | NULL  |
+-----------+-------+-----------+-------+
6 rows in set (0.00 sec)


mysql> select boy.*,girl.* from
    -> girl left join boy on boy.other=girl.other;
+-----------+-------+-----------+-------+
| bname     | other | gname     | other |
+-----------+-------+-----------+-------+
| 李四      | B     | 空姐      | B     |
| 王五      | C     | 大S       | C     |
| 高富帅    | D     | 阿娇      | D     |
| 高富帅    | D     | 二奶    | D     |
| 郑七      | E     | 林妹妹    | E     |
| NULL      | NULL  | 宝格格    | F     |
+-----------+-------+-----------+-------+
6 rows in set (0.00 sec)

mysql> select boy.*,girl.* from
    -> boy right join girl on boy.other=girl.other;
+-----------+-------+-----------+-------+
| bname     | other | gname     | other |
+-----------+-------+-----------+-------+
| 李四      | B     | 空姐      | B     |
| 王五      | C     | 大S       | C     |
| 高富帅    | D     | 阿娇      | D     |
| 高富帅    | D     | 二奶    | D     |
| 郑七      | E     | 林妹妹    | E     |
| NULL      | NULL  | 宝格格    | F     |
+-----------+-------+-----------+-------+
6 rows in set (0.00 sec)

mysql> select boy.*,girl.* 
    -> from
    -> boy inner join girl
    -> on boy.other=girl.other;
+-----------+-------+-----------+-------+
| bname     | other | gname     | other |
+-----------+-------+-----------+-------+
| 李四      | B     | 空姐      | B     |
| 王五      | C     | 大S       | C     |
| 高富帅    | D     | 阿娇      | D     |
| 高富帅    | D     | 二奶    | D     |
| 郑七      | E     | 林妹妹    | E     |
+-----------+-------+-----------+-------+
5 rows in set (0.00 sec)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱酥网络

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值