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

相关推荐
源代码•宸12 小时前
goframe框架签到系统项目(BITFIELD 命令详解、Redis Key 设计、goframe 框架教程、安装MySQL)
开发语言·数据库·经验分享·redis·后端·mysql·golang
思成不止于此14 小时前
【MySQL 零基础入门】事务精讲(二):ACID 特性与并发问题
数据库·笔记·学习·mysql
Boilermaker199214 小时前
[MySQL] 初识 MySQL 与 SQL 基础
数据库·mysql
Boilermaker199215 小时前
[MySQL] 服务器架构
数据库·mysql·架构
qualifying16 小时前
MySQL——表的操作
数据库·mysql
学Linux的语莫17 小时前
mysql主从同步(复制)搭建
数据库·mysql
MySQL实战17 小时前
MySQL 在哪些场景下不会写 binlog
mysql
苹果酱056717 小时前
解决linux mysql命令 bash: mysql: command not found 的方法
java·vue.js·spring boot·mysql·课程设计
问道飞鱼18 小时前
【数据库知识】MySQL 多表关联高效实现指南:场景化方案与底层原理
数据库·mysql·多表关联
dblens 数据库管理和开发工具18 小时前
MySQL :5.7与8.0版创建用户与授权、密码认证插件、角色、密码过期策略
数据库·mysql·dblens·mysql创建用户·mysql设置密码·mysql用户授权