一.视图view,是一种结构(有行有列)但没结果(结构中不存放真实数据)的虚拟表,虚拟表中的结构不是自己定
义而是由基表产生(视图的的数据来源)
1.创建视图:create view 视图名字 select 语句(可以是普通select语句、连接查询、联合查询、子查询);
1):创建单表视图:create view stu as select * from student;
2):创建多表视图(视图基表多张的情况下:字段名不能重复): create view class as select s.*,
c.teacher,c.room from student as s left join my_class as c on s.id=c.id;
2.查看视图结构:desc 视图名称/show tables/show create view class;
3.使用视图:select * from 视图名称;
4.修改视图:alter view as 新视图名 select 语句;
5.删除视图:drop view 视图名称;
6.视图的意义:
1):节省sql语句:可以用视图保存复杂的sql语句
2):视图安全,视图主要针对数据查询,如果视图结构进行处理(删除),不会影响基表数据(相对安全)。
3):视图往往在大型项目、多系统中使用,可以对外提供必要的数据
4):视图可以提供友好型,可以专门设计针对不同的需求。
5):视图可以更好的进行权限控制
7.视图数据操作
1):新增数据(针对视图):不能向多表视图插数据,视图如果没有包含基表中的非空字段则不能插入成功。
insert into stu values(6,'leetcode','male',24);
2):删除数据:多表试图不能删除数据
delete from stu1 where id=1;
3):更新数据:无论单表还是多表都可以更新视图
update stu_class set sex='male' where id=5;
限制更新
create view stu2 as select * from student where age>30 with check option;
4)视图算法:系统对视图及外部查询select的一种解析方式
1.undefined:未定义(系统默认),这不是一种实际的算法,告诉系统没有定义算法,系统随机选择
2.temptable:临时算法,系统先执行视图的select语句,后执行外部的查询语句。
create algorithm=temptable view stu4 as select * from student order by height desc;
3.merge(效率高,常态):合并算法,系统应先将视图select语句和外部查询语句合并后执行查询。
总结:如果视图select语句中包含(where、group by、having、order by、limit)建议使用temptable
二.数据备份与还原
1.概念:备份将当前数据或记录保留,还原将以保留的数据恢复到对应的表中。
2.myisam和innodb:数据存储对比
1):innodb只有表结构数据全部存储在ibadata1文件中
2):myisam将表、数据、索引分别单独存储。直接将三个文件放在对应的数据库下即可使用
3.数据库高级备份:自己定义字段和行的处理方式
1.语法:select */字段列表 into outfile 文件路径 files 字段处理 lines 行处理 from 数据源;
4.Sql备份及还原
1) 备份:mysqldump -u root -p 数据库 表 > E:\sql\student.sql;
2) 还原:mysql -u root -p 数据库 <E:\sql\student.sql; 或 source E:\sql\student.sql