外键条件
外键要存在,首先必须保证表的存储引擎是innodb
列类型必须与父表的主键类型一致
一张表中的外键名字不能重复
增加外键的字段数据已经存在,必须保证数据与父表主键要求对应
外键约束
有三种约束模式
district:严格模式(默认的)
cascade:级联模式
set null:置空模式
语法:foreign key(外键字段) references 父表(主键字段) on delete 模式 on update 模式;
联合查询
基本语法:
select 语句1
union [union 选项]
select 语句2……
union 选项
all:保留所有,不管重复
distinct:去重,默认的
按位置分类
from子查询
where子查询
exists子查询
按结果分类
标量子查询
列子查询
行子查询
表子查询
列子查询
=any等价于in; -- 其中一个即可
any等价于some; -- 二者是一样的
=all为全部
视图(view)
:是一种有结构,但是没结果的虚拟表
创建视图
基本语法:create view 视图名字 as select 语句;
创建单表视图:基表只有一个
创建多表视图:基表来源至少两个
查看视图
show tables [like] / desc 视图名 / show create table 视图名;
修改视图
alter view 视图名字 as 新的select语句;
删除视图
drop view 视图名字;
新增数据
多表视图不能新增数据
可以向单表视图插入数据,但是视图中包含的字段必须有基表中所有不能为空、或没有默认值的字段
视图是可以向基表插入数据的
删除数据
多表视图不能删除数据
单表视图可以删除数据
更新数据
更新限制:with check option;
视图算法:系统对视图以及外部查询视图的select语句的一种解析方式
视图算法分三种
undefined:未定义(默认的)
temptable:临时表算法
merge:合并算法
算法指定:在创建视图的时候create algorithm=指定算法 view 视图名字 as select语句;