一、Mysql 视图入门
视图其相当于从原来的数据表中获取部分数据,然后新建一个只可创建、查询和删除的新表来存放这些数据(一般情况下),可以理解成把想要的数据部分截图下来保存,供以后查询用,此时视图只是为了满足某些数据查询而建立的对象。
当然,也存在可以修改的视图,并且当修改视图的数据时,原来表里的数据也会一同修改,此时视图的作用就是为了保护数据的安全性而只把部分数据展示出来供他人使用,有兴趣的话可以深度自学。
视图和表的区别如下:
1.表直接将数据存储在磁盘上,视图是将sql语句存储到磁盘上
2.视图是建立在表的基础上,表存储数据库中的数据,而视图显示已经在表中的数据的外观
3.表是静态的,而视图是动态的,意思是表中数据发生了改变,其建立在表基础的视图跟着改变
4.通过视图不能改变表中数据(一般情况下)
5.删除视图,表不受影响,而删除表,视图不再起作用
6.视图本身没有数据,只保存了sql语句(本质)
-
举个例子,你们公司使用了别人的开票系统,开票需要一些信息,你能把你们公司的用户信息、订单信息等等这些表的权限给那个开票公司吗,就算能给,私密信息比如密码能给吗?肯定不行
-
解决的方案就是使用视图,把他需要的数据搞成一张表,给他个权限,他只能看这个视图的数据,而不能看整个表的数据。
1.创建视图
基本格式:
create view 视图名(列名1, 列名2, ...) as select 语句;
2.显示视图
基本格式:
show create view 视图名;
或者
select * from 视图名
在视图创建完成后,就可以把其当做一个只读的表来用,此时就可以正常的进行查询了,举例:
mysql> create VIEW temp(id,name,age) as SELECT id,name,age from student where age > 20
#创建视图temp,里面记录了student表的id,name,age
mysql> select * from temp;
#发现可以正常查询
create user lzq@'%' identified by 'lzq123';
grant all on test.temp to zn;
revoke all on test.temp from zn;
drop user lzq;
3.删除视图
基本格式:
drop view 视图名;