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--外连接

相关推荐
tongyiixiaohuang9 小时前
技术案例分享:金蝶云星空客户数据同步到MySQL的实现
android·数据库·mysql
运维全栈笔记9 小时前
K8S部署WordPress+MySQL:模块化YAML配置详解
服务器·mysql·docker·云原生·容器·kubernetes·服务发现
Rick199310 小时前
mysql 慢查询如何快速定位
数据库·mysql
Vect__10 小时前
MySQL的数据类型和约束
android·数据库·mysql
ChoSeitaku10 小时前
5.MySQL表的约束|空属性|默认值|列描述|主键|自增长|唯一键|外键
android·数据库·mysql
A_aspectJ11 小时前
【Java基础开发】基于 Java Swing +MySQL + JDBC 版实现图书管理系统
java·开发语言·mysql
小菜同学爱学习12 小时前
突破瓶颈!MySQL高级优化与企业级实战场景详解
android·数据库·mysql
小肝一下12 小时前
1. 数据库基础(重点)初阶
数据库·mysql
两点王爷13 小时前
使用命令行备份/还原docker运行的数据库 (MySQL、PostgreSQL)
mysql·docker·容器
User_芊芊君子13 小时前
从零入门!MySQL 约束、范式设计与联合查询核心精讲
数据库·人工智能·mysql