Mysql视图与数据备份

一.视图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.视图的意义:

扫描二维码关注公众号,回复: 355524 查看本文章

                     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                


猜你喜欢

转载自blog.csdn.net/superstarsteven/article/details/79839636