数据库 の 联表查询


一. 概念

联表查询使用关键字 join

在sql语句中,某些字段名和表名,尽量用~来代替。

  • 坐标查询
  • 右表查询
  • 中间查询

在这里插入图片描述



在这里插入图片描述


操作描述
Inner jion如果表中有一个匹配,就返回行
left join会从左表中返回所有的值,即使右表中没有匹配的值
right join会从右表中返回所有的值

比较详细的参考资料。

https://blog.csdn.net/plg17/article/details/78758593



二.笛卡尔积

一个表有 n 行,另一个表有 m 行,那么进行连接查询的时候,就会有 m*n 行。

之所以会出现这种情况,就是因为,我们在对 A 表和 B表进行联合查询的时候,没有有效的连接条件。

如何避免?就是添加上有效的链接条件。

class表
在这里插入图片描述

students

在这里插入图片描述

执行查询的 SQL 语句

SELECT `classname`, `name` FROM class,studentes;

在这里插入图片描述

相当于每个都对应这乘了一次。
在这里插入图片描述

三.查询的分类

按照年代分

  • 192 标准
  • 199 标准


3.1按照功能来分

内链接

  • 等值连接
  • 非等值连接
  • 自连接

外连接

  • 左外连接
  • 右外连接
  • 全外连接

交叉连接



2.1等值连接
SELECT
	`classname`,
	`name` 
FROM
	`class`,
	`studentes`
	WHERE 
	class.id=studentes.classid;

在这里插入图片描述

2.2 为表起别名

直接在表的后面加 AS ,或者省略。

SELECT
	`classname`,
	`name` 
FROM
	`class` AS c,
	`studentes` s
	WHERE 
	c.id=s.classid;
2.3加筛选条件
# 注释可以给表起别名
SELECT
	`classname`,
	s.id,
	`name` 
FROM
	`class` AS c,
	`studentes` s 
WHERE #添加筛选条件
	s.id > 2;

在这里插入图片描述


3.2 外连接

外连接,一般用于查询一个表中有,另一个表中没有的记录。

做外连接的时候,主表始终是显示的。从表是能查找到匹配的,才能显示出来。



主表和从表的区分
  • 左外连接:left join 左边的是主表
  • 右外连接:right join 右边的是主表
SELECT c.id ,s.* 
FROM class AS c
LEFT OUTER JOIN studentes AS s
ON s.classid=c.id;

在这里插入图片描述



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值