SQL基本使用-多表查询

多表查询

1内链接查询

隐式内链接

使用where 消除无用数据

SELECT * FROM 表1,表2 WHERE 表1外键 = 表2主键;

推荐书写格式

SELECT 
	t1.列1, -- 备注
	t1.列2, -- 备注
	t2.列3 -- 备注
FROM 
	表1 t1,
	表2 t2 
WHERE 
	t1.外键 = t2.主键;

显式内链接

SELECT * FROM 表1 INNER JOIN 表2 ON 表1外键 = 表2主键;
SELECT * FROM 表1 JOIN 表2 ON 表1外键 = 表2主键;

2 外链接查询

左外链接

语法

SELECT 字段列表 FROM 表1 LEFT 【OUTER】 JOIN 表2 ON 条件 ;

查询的是 左表所有的数据以及交集部分

SELECT 
	t1.*,
	t2.`name` 
FROM 	
	表1 t1
LEFT JOIN
	表2 t2 
ON
	t1.外键 = t2.主键;

右外链接

SELECT 字段列表 FROM 表1 RIGHT 【OUTER】 JOIN 表2 ON 条件 ;

查询的是 右表所有的数据以及交集部分

SELECT 
	t1.*,
	t2.`name` 
FROM 	
	表1 t1
RIGHT JOIN
	表2 t2 
ON
	t1.外键 = t2.主键;

3 子查询

概念 查询中嵌套查询,称嵌套查询为子查询;

子查询是的结果是单行单列的

子查询作为条件,使用运算符去判断

SELECT * FROM 表1 WHERE 列1 = (SELECT MAX(列1) FROM 表1);

SELECT * FROM 表1 WHERE 列1 < (SELECT AVG(列1) FROM 表1);

子查询是的结果是多行单列的

子查询作为条件,使用运算符去判断

SELECT * FROM 表1 WHERE 表2 IN(SELECT 表2.列1 FROM 表2 WHERE 表2.列2='xx部' OR 表2.列2='xx部');

子查询是的结果是多行多列的

子查询作为虚拟表参与查询

SELECT * FROM 表1 t1,表2 t2 WHERE t1.外键 = t2.主键 AND t1.列1 >= 30;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值