数据库 の 联表查询


一. 概念

联表查询使用关键字 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;

在这里插入图片描述



posted @ 2021-05-20 16:00  沧海一声笑rush  阅读(115)  评论(0编辑  收藏  举报