视图(View)
概念:
有结构(有行有列),但没有结果(结构中不真实存储数据)的虚拟的表
虚拟表的结构来源不是自己定义,而是从对应的基表中产生(视图数据的来源)
特点:
- 视图一旦创建,系统会在视图对应的 数据库文件夹下,
创建一个对应的结构文件 —— frm文件- 视图的使用,只是为了简化查询,你可以把 视图当作表一样去使用
- 视图的执行,本质就是 执行封装的select语句
语法:
1. 创建视图:
create view 视图名称 as select 语句
本人现在对上述语法中的语句做下说明:
说明:
这个语句可以是一张或多张表的普通查询,或多表查询
例如:
创建单表视图
create view my_v1 as select * from student;
创建多表视图
create view my_v2 as select student.*,teacher.* from student,teacher where student.id=teacher.id;
(注意:MySQL中视图不支持封装子查询查出来的数据)
2. 查看视图:
语法:
- show tables;
查看所有 视图 或 表- desc 视图名;
查看指定视图 的信息- show create view 视图名;
查看视图创建语句
3. 删除视图:
语法:
drop view 视图名称
例如:
drop view my_v1
4. 修改视图:
视图本身不可以修改,
但是视图的来源是可以修改的
其实就是修改select 语句
语法:
alter view 视图名字 as 新的select语句
例如:
alter view my_v1 as select * from student;
意义:
意义:
- (1)视图可以节省SQL语句,
将一条复杂的查询语句,使用视图进行保存,
以后可以直接对视图进行操作- (2)数据安全,
视图操作注意是针对查询语句的,
如果对视图结构进行处理(比如删除),
不会影响基表的数据,所以相对来说数据比较安全- (3)视图往往是在大项目中去使用,
而且是多系统中去使用
我可以对外提供一些有用的数据,隐藏一些关键的数据- (4)视图对外可以提供友好的数据:
不同的视图提供不同的数据,
对外提供的数据好像是经过专门设计的一样- (5)视图可以更好地进行权限控制
比如对外隐藏我的一些基表的名称
视图数据的操作:
视图是可以进行数据操作的(比如 增,删,改,视图中的数据),但是有很多限制
视图插入数据:
- (1)多表视图不能插入数据
- (2)单表视图中可以插入数据
(如果视图中字段 没有基表中不能为空的字段且没有默认值的字段,是插入不成功的)- (3)视图是可以向基表中插入数据的
(视图的操作是影响基表的)
视图删除数据:
- (1)多表视图不能删除数据
- (2)单表视图可以删除数据,也会影响到基表
视图更新数据:
无论单表视图,多表视图都可以更新数据
更新限制:
with check option(限制试图不能被更新)
例如:
create view my_v1 as select * from student where age>30 with check option;
上述sql语句表示视图数据的来源都是年龄大于30的,
其中的 with check option 决定通过视图更新的时候,
不能将已得到的数据age>30的学生 改成age<30 的
那么若是我们执行如下语句:
update my_v1 set age=20 where id=1;
就会报错 不允许更改改,因为做了限制
那么,本篇博文的知识点在这里就讲解完毕了。
(请观看本人博文 —— 《数据库 —— 专栏总集篇》)