/*
左连接:语法
假设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)