SQL多表查询的内外连接查询分类及子查询

一、连接查询

1.笛卡尔积

#笛卡尔积 后面没有where 条件,会查询出很多无效的数据
SELECT p.*,g.* FROM product p,category g;

2.内连接

隐式内连接(隐式内连接接条件用where,用on错误)

SELECT p.*,g.* FROM product p, category g WHERE p.cno=g.cid;
#SELECT p.*,g.* FROM product p,category g ON p.cno=g.cid;

显示内连接(inner可以省略掉,where/on都可运行)

SELECT p.*,g.* FROM product p INNER JOIN category g ON p.cno=g.cid;

3.左外连接(以左表为依据)

SELECT p.*,g.* FROM product p LEFT OUTER JOIN category g on p.cno=g.cid;

4.右外连接(以右表为依据)

SELECT p.*,g.* FROM product p RIGHT OUTER JOIN category g ON p.cno=g.cid;

5.完全连接

#ORACLE里面FULL JOIN
SELECT p.*,c.* FROM product p FULL JOIN category c ON p.cno=c.cid;
# mysql 里面做完全连接UNION
SELECT p.*,g.* FROM product p LEFT OUTER JOIN category g on p.cno=g.cid 
UNION 
SELECT p.*,g.* FROM product p RIGHT OUTER JOIN category g ON p.cno=g.cid;

6.不等连接

#ON 等值连接才能使用ON
SELECT p.*,g.* FROM product p, category g WHERE p.cno!=g.cid;

7.自然连接

#当字段名称相同进行连接,并且去除掉重复的列
SELECT * FROM product p NATURAL JOIN category c;
二、子查询
# 1.查询出编号为小米手机所属的类名
#1.查询小米所在的分类编号
SELECT cno FROM product WHERE pname="小米mix4";
#2.查询该分类编号的类名
SELECT cname FROM category WHERE cid=
(SELECT cno FROM product WHERE pname="小米mix4");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值