学习笔记输出来源:拉勾教育Java就业急训营
修改时间:2021年1月18日
作者:pp_x
邮箱:[email protected]
文章目录
多表
- 因为单表会出现数据冗余索引出现了多表
外键约束
什么是外键
- 外键指的是在
从表
中 与主表
的主键对应的那个字段 - 使用外键约束可以让两张表之间产生一个对应关系,从而保证主从表的引用的完整性
创建外键约束
- 新建表时添加外键
[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
- 已有表后添加外键(DDL语句)
ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主 键字段名);
删除外键约束
alter table 从表 drop foreign key 外键约束名称
注意事项
从表外键
类型必须与主表主键
类型一致,否则创建失败- 添加数据时,应该先添加主表中的数据
- 删除数据时,应该先删除从表中的数据
级联操作删除
- 如果想实现删除主表数据的同时,也删除掉从表数据,可以使用级联删除操作
级联删除
ON DELETE CASCADE
多表查询
- DQL:查询多张表,获取到需要的数据
多表查询的分类
内连接
- 特点:通过指定的条件匹配两张表中的name 匹配不上就不显示
- 隐式内连接
语法格式:select 字段名 from 左表,右表 where 连接条件
- 显示内连接
语法格式:select 字段名 from 左表 [inner]join 右表 on 连接条件
- 隐式内连接
左外连接
- 特点:以左表为基准 匹配右表中的数据 如果能匹配上就显示,匹配不上就左表正常显示 右表数据显示null
语法格式:关键字 left [outer] join select 字段名 from 左表 left join 右表 on 条件
右外连接
- 特点:以右表为基准 匹配左表中的数据 如果能匹配上就显示, 匹配不上就右表正常显示 左表数据显示null
语法格式:关键字 left [outer] join select 字段名 from 左表 right join 右表 on 条件
子查询
- 概念:一条select 查询语句的结果, 作为另一条 select 语句的一部分
- 特点:
- 子查询必须放在小括号中
- 子查询一般作为父查询的查询条件使用
- 分类:
- where型子查询:将子查询的结果, 作为父查询的比较条件
- from型子查询: 将子查询的结果, 作为 一张表,提供给父层查询使用
- exists型 子查询:子查询的结果是单列多行, 类似一个数组, 父层查询使用 IN 函数 ,包含子查询的结果
子查询作为查询条件
SELECT 查询字段 FROM 表 WHERE 字段=(子查询);
子查询作为一张表
SELECT 查询字段 FROM (子查询)表别名 WHERE 条件;
注意:子查询作为一张表的时候需要取别名,否则无法访问子查询的字段
子查询结果为单列多行
- 子查询的结果类似一个数组, 父层查询使用 IN 函数 ,包含子查询的结果
SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);
子查询总结
- 子查询如果查出的是一个字段(单列), 那就在where后面作为条件使用
- 子查询如果查询出的是多个字段(多列), 就当做一张表使用(要起别名)