一、视图
view:是一种有结构,但是没结果的虚拟表
1、创建视图
基本语法:create view 视图名字 as select 语句;
创建单表视图:基表只有一个
创建多表视图:基表来源至少两个
2、查看视图
show tables [like] / desc 视图名 / show create table 视图名;
3、修改视图
alter view 视图名字 as 新的select语句;
4、删除视图
drop view 视图名字;
二、新增数据
多表视图不能新增数据
可以向单表视图插入数据,但是视图中包含的字段必须有基表中所有不能为空、或没有默认值的字段
视图是可以向基表插入数据的
三、删除数据
多表视图不能删除数据
单表视图可以删除数据
四、更新数据
多表视图不能更新数据
更新限制:with check option;
五、视图算法
视图算法:系统对视图以及外部查询视图的select语句的一种解析方式
视图算法分三种
1、undefined:未定义(默认的)
2、temptable:临时表算法
3、merge:合并算法
六、算法指定
算法指定:在创建视图的时候create algorithm=指定算法 view 视图名字 as select语句;
七、方式:
1、数据表备份
2、单表数据备份
3、SQL备份
4、增量备份
八、数据表备份
1、存储引擎:innodb、myisam
(1)innodb:只有表结构,数据全部存储到 ibdata1 文件中
(2)myisam:表、数据和索引全部单独分开存储
九、单表数据备份
1、备份:select */字段列表 into outfile 文件所在路径 from 数据源;
2、高级备份:select */字段列表 into outfile 文件所在路径 fields 字段处理 lines 行处理 from 数据源;
(1)fields:字段处理,enclosed by(默认'')、terminated by(默认'\t')、escaped by(默认'\\')
(2)lines:行处理,starting by(默认'')、terminated by(默认'\r\n')
3、数据还原:
(1)load data infile 文件所在路径
(2)into table 表名[(字段列表)]
(3)fields 字段处理
(4)lines 行处理;
十、SQL备份
1、备份:mysqldump.exe
mysqldump/mysqldump.exe -hPup 数据库名字 [数据表名字1 [数据表名字2...]] > 外部文件路径
2、整库备份:
mysqldump/mysqldump.exe -hPup 数据库名字 > 外部文件路径
十一、SQL还原数据
1、方案一:使用mysql.exe客户端还原
mysql.exe/mysql -hPup 数据库名字 < 备份文件目录
2、方案二:使用SQL指令还原
source 备份文件所在路径
十二、增量备份
备份的是系统日志文件
代码部分————————————————————————
-- 视图:单表+多表
create view my_v1as select *from my_student;
create view my_v2as select *from my_class;
create view my_v3as select *from my_student
as sleft join my_classas con s.c_id=c.id;-- id重复
-- 多表视图
create view my_v3as select s.*,c.c_name,c.roomfrom my_student
as sleft join my_classas con s.c_id=c.id;
-- 查看视图创建语句
showcreate view my_v3\G
-- 视图使用
select *from my_v1;
select *from my_v2;
select *from my_v3;
-- 修改视图
alter view my_v1as select id,name,sex,age,height,c_idfrom my_student;
-- 删除视图
drop view 视图名;
-- 多表视图插入数据
insert into my_v3
values(null,'bc20190006','张三丰','男',150,180,1,'Python1907','B407');-- 错误的
-- 将学生表的学号字段设置为不允许为空
alter table my_student modify numberchar(10)not null unique;
-- 单表视图出入数据,视图不包含所有不允许为空的字段
insert into my_v1
values(null,'张三丰',150,'男',180,1);-- 失败(学号不允许为空)
-- 单表视图插入数据
insert into my_v2
values(2,'Python1811','B410');
-- 多表视图删除数据
delete from my_v3where id=1;-- 失败(不可更改)
-- 单表视图删除数据
delete from my_v2where id=4;
-- 多表视图更新数据
update my_v3set c_id=3 where id=5;
-- 视图:age字段限制更新
create view my_v4as select *from my_student
where age>30 with check option;-- 表示视图的数据来源都是年龄大于30岁,是由where age >30决定的
-- with check option决定通过视图更新的时候,不能讲已经得到的数据age>30的改成<30的
-- 将视图可以查到的数据改成年龄小于30
update my_v4set age=28 where id =3;
-- 可以修改数据:可以改,但是视图查不到
update my_v4set age=32 where id=2;
-- 获取所有班级中最高的一个学生
create view my_v5as select *from my_studentorder by heightdesc;
select *from my_v5group by c_id;
select *from my_studentgroup by c_idorder by heightdesc;
-- 指定算法为临时表算法
create algorithm=temptableview my_v6as select *from my_studentorder by heightdesc;
select *from my_v6group by c_id;
——————————————————————————
-- 查看MySQL的版本
select @@version;
-- 创建myisam表
create table my_myisam(
idint
)charset utf8 engine=myisam;
-- 向my_myisam表插入几条记录
insert into my_myisamvalues(1),(2),(3);
-- 单表数据备份
select *into outfile
'D:/1907/web/student.txt'
from my_student;
select *into outfile
'D:/1907/web/student.txt'
from my_class;
-- 指定备份处理方式
select *into outfile
'D:/1907/web/student.txt'
-- 字段处理
fields
enclosedby '''' -- 数据使用双引号包括
terminatedby '|'-- 使用竖线分隔字段数据
-- 行处理
lines
startingby 'START:'
from my_class;
-- 删除表
delete from my_class;
-- 还原数据
load data infile
'D:o1907/web/student.txt'
into table my_class
-- 字段处理
fields
enclosedby '''' -- 数据使用双引号包括
terminatedby '|'-- 使用竖线分隔字段数据
-- 行处理
lines
startingby 'START:'
-- SQL备份
mysqldump -uroot -p123456
mydatabase my_student > D:/1907/web/student.sql
-- 整库备份
mysqldump -uroot -p123456
mydatabase > D:/1907/web/mydatabase.sql
-- 还原数据:mysql客户端还原
mysql -uroot -p123456 mydatabase < D:/1907/web/student.sql
-- SQL指令还原SQL备份
source D:/1907/web/student.sql;