增加外键
创建表的时候增加外键:在所有的表字段之后,使用foreign key(外键字段) references 外部表(主键字段)
在新增表之后增加外键:修改表结构,使用alter table 表名 add [constraint 外键名字] foreign key(外键字段) references 父表(主键字段);
修改外键&删除外键
alter table 表名 drop foreign key 外键名;
外键条件
外键要存在,首先必须保证表的存储引擎是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为全部
方式:
数据表备份
单表数据备份
SQL备份
增量备份
数据表备份
存储引擎:innodb、myisam
innodb:只有表结构,数据全部存储到 ibdata1 文件中
myisam:表、数据和索引全部单独分开存储
单表数据备份
备份:select */字段列表 into outfile 文件所在路径 from 数据源;
高级备份:select */字段列表 into outfile 文件所在路径 fields 字段处理 lines 行处理 from 数据源;
fields:字段处理,enclosed by(默认'')、terminated by(默认'\t')、escaped by(默认'\\')
lines:行处理,starting by(默认'')、terminated by(默认'\r\n')
单表数据备份
数据还原:
load data infile 文件所在路径
into table 表名[(字段列表)]
fields 字段处理
lines 行处理;
SQL备份
备份:mysqldump.exe
mysqldump/mysqldump.exe -hPup 数据库名字 [数据表名字1 [数据表名字2...]] > 外部文件路径
整库备份:
mysqldump/mysqldump.exe -hPup 数据库名字 > 外部文件路径
SQL还原数据
方案一:使用mysql.exe客户端还原
mysql.exe/mysql -hPup 数据库名字 < 备份文件目录
方案二:使用SQL指令还原
source 备份文件所在路径
