MySQL笔记--多表查询

1--多表关系

多表关系基本上分为三种:

一对多(多对一)

多对多

一对一

1-1--多对一

在多的一方建立外键,指向一的一方的主键;

1-2--多对多

建立第三张中间表,中间表至少包含两个外键,分别关联两方主键;

1-3--一对一

在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE);

2--多表查询分类

多表查询存在笛卡尔乘积的问题,可借助where语句实现多表查询;

bash 复制代码
# 借助 where 语句查询 emp 表和 dept 表
select * from emp, dept where emp.dept_id = dept.id;

多表查询分类:

连接查询:内连接、外连接、自连接;

子查询

2-1--内连接

内连接查询语法:隐式内连接显式内连接

内连接查询的是两张表交集的部分;

bash 复制代码
# 隐式内连接语法
SELECT 字段列表 FROM 表1, 表2 WHERE 条件...;

# 显式内连接语法
SELECT 字段列表 FROM 表1 [INNER] JOIN ON 连接条件...;

# 内连接案例
1. 查询每一个员工的姓名,以及关联的部门的名称,表结构为 emp 和 dept,连接条件是 emp.dept_id = dept.id;

# 隐式实例
select emp.name, dept.name from emp, dept where emp.dept_id = dept.id;
# 使用表别名
select e.name, d.name from emp e, dept d where e.dept_id = d.id;

# 显式实例
select e.name, d.name from emp e inner join dept d on e.dept_id = d.id;
# 省略 inner
select e.name, d.name from emp e join dept d on e.dept_id = d.id;

2-2--外连接

相关推荐
许愿OvO1 小时前
MySQL 8.3.0 运维与集群架构实战
运维·mysql·架构
程序员张32 小时前
MySQL创建用户且只能访问指定数据库表
mysql
阿维的博客日记3 小时前
我现在能理解mvcc让读不阻塞,但是无法理解mvcc让写不阻塞??
mysql·事务·mvcc
禹凕3 小时前
MYSQL——基础知识(SQL的临时表和克隆表)
sql·mysql
jvvz afqh3 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
阿维的博客日记4 小时前
隔离性和mvcc有什么关系吗
数据库·mysql·事务·mvcc·隔离性
Vect__4 小时前
初识MySQL,数据库相关概念,库操作,表操作
数据库·mysql
空空潍4 小时前
MySQL索引不生效?一文理解CBO成本模型
数据库·sql·mysql
nLYA SCOL4 小时前
MySQL数据的增删改查(一)
android·javascript·mysql
code bean4 小时前
MySQL 远程访问实战:从基础操作到真实踩坑记录
数据库·mysql