一、连接查询
- 交叉连接
select 字段列表[字段别名]/* from 左表 cross join 右表;
或
select 字段列表[字段别名]/* from 左表, 右表;
结果为笛卡尔积,都可以跟条件where/on,效果和内连接一样。
- 内连接
select 字段列表[字段别名]/* from 左表 [inner] join 右表 on 左表.字段 = 右表.字段;
去掉on条件效果和交叉连接一样,on也可以换成where。
- 外链接
select 字段列表[字段别名]/* from 左表 left/right [out] join 右表 on 左表.字段 = 右表.字段;
在需要包含没有关联的那些行时使用。
- 自然连接
内连接:natural join,外链接:natural left/right join
使用同名字段自动匹配。
二、联合查询
select 语句1 union [union选项] select 语句2;
union选项:all、distinct,联合查询中使用order by时语句要加括号并且搭配limit使用。
三、外键
- 新增:在所有字段之后foreign key(字段名) references 表名(主键字段);或alter table 表名 [constraint 外键名] add foreign key(字段名) references 表名(主键字段);
- 删除:alter table 表名 drop foreign key 外键名;
外键约束(针对父表):foreign key(字段名) references 表名(主键字段) on delete 约束 on update 约束;
- district:不允许删除或更新已引用的值
- cascade:父表的操作影响子表
- set null:置空
四、视图
- 新增:create view 视图名字 as select 语句;
- 查看:用查看表的方式可以查看视图
- 修改视图来源:alter view 视图名字 as select 语句;
- 删除:drop view 视图名字;
五、备份
- 数据表备份:直接复制文件夹下的表结构以及数据文件,innodb不适用,myisam适用
- 单表数据备份
- 备份:select */字段列表 into outfile '文件路径' from 数据源;
- 还原:load data infile '文件路径' into table 表名;
- SQL备份
- 备份:mysqldump -hPup 数据库名 数据表名 > 文件路径
- 还原
- mysql客户端:mysql -hPup 数据库名 < 文件目录- SQL指令:source 文件目录