视图操作

创建视图

虽然视图可以被看成是一种虚拟表,但是其物理上是不存在的,即MySQL并没有专门的位置为视图存储数据。根据视图的概念可以发现其数据来源于查询语句,因此创建视图的基本语法为:

CREATE[OR REPLACE] VIEW viewname[columnlist]
AS SELECT statement

其中,CREATE表示创建新的视图;REPLACE表示替换已经创建的视图;viewname为视图的名称;columnlist为属性列;SELECT statement表示SELECT语句;

注意! 创建视图需要登陆用户有相应的权限,查看权限方法:

mysql>  use school;   #选择数据库school                                                                                                                    
mysql>  select user, Select_priv, Create_view_priv FROM mysql.user;#查询数据库用户创建和选择视图权限 

在表单上创建视图

mysql>  use school;   #选择数据库school 
mysql>  alter table student add privacy varchar(64);# 增加私隐列                                                                                      
mysql>  ;#查询数据库用户创建和选择视图权限    
mysql>  CREATE VIEW view_student AS select id, class_id, name from student ;#为学生表创建视图 
mysql>  desc view_student;#查看视图 
mysql>  select * from view_student;   #根据视图进行查询  

在多表上创建视图
使用内,外连接的方法

mysql>  use school;   #选择数据库school 
mysql>  alter table student add privacy varchar(64);# 增加私隐列                                                                                      
mysql>  ;#查询数据库用户创建和选择视图权限    
mysql>  CREATE VIEW view_student_class AS select student.id, student.name, class.name,  class.teacher from class inner join student  on class.id = student.class_id;#为学生表创建视图 
mysql>  desc view_student_class;#查看视图 
mysql>  select * from view_student_class;   #根据视图进行查询  

查看视图

DESC viewname 查看设计信息(视图的基本定义)

SHOW TABLES 查看表的名字和视图的名字

SHOW CREATE TABLE tablename/VIEW viewname 查看表/视图的创建信息

更新视图数据

更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为视图实质是一个虚拟表,其中没有数据,通过视图更新时都是转换到基本表更新。更新视图时,只能更新权限范围内的数据,超出范围就不能更新了。

视图操作和表操作类似

mysql>  use school;   #选择数据库school 
mysql>  alter table student add privacy varchar(64);# 增加私隐列                                                                                      
mysql>  ;#查询数据库用户创建和选择视图权限    
mysql>  CREATE VIEW view_student AS select id, class_id, name from student ;#为学生表创建视图 
mysql>  desc view_student;#查看视图 
mysql>  select * from view_student;   #根据视图进行查询  
mysql>  update view_student set name='小花花' where name='小花'; #通过视图更新小花为小花花

不能更新的情况:

  1. 视图中包含SUM()、COUNT()、MAX()和MIN()等函数
  2. 视图中包含UNION、UNION ALL、DISTINCT、GROUP BY和HAVING等关键字
  3. 视图对应的表存在没有默认值的列,而且该列没有包含在视图里
  4. 包含子查询的视图
  5. 其他特殊情况

修改视图

修改视图是指修改数据库中存在的视图,当基本表的某些字段发生变化的时候,可以通过修改视图来保持与基本表的一致性。ALTER语句来修改视图。
(原表的某些列被改变了,基于这个表创建的视图按原本的代码会无法实现,所以需要修改)

使用ALTER语句修改视图

ALTER VIEW viewname[columnlist]
AS SELECT statement

这个语法中的所有关键字和参数除了alter 外,其他都和创建视图是一样的,因此不再赘述。

mysql>  use school;   #选择数据库school 
mysql>  alter table student add privacy varchar(64);# 增加私隐列                                                                                      
mysql>  ;#查询数据库用户创建和选择视图权限    
mysql>  ALTER VIEW view_student_class AS select student.id, student.name, class.name, class.id as class_id, class.teacher from class inner join student  on class.id = student.class_id;#为学生班级表视图增加 class_id 字段 
mysql>  desc view_student_class;#查看视图 
mysql>  select * from view_student_class;   #根据视图进行查询  

删除视图

删除视图是指删除数据库中已存在的视图。删除视图时,只能删除视图的定义,不会删除数据。
在MySQL中,可使用DROP VIEW语句来删除视图,但是用户必须拥有DROP权限。删除视图的语法如下:

DROP VIEW viewname [,viewnamen];

在上述语句中,参数viewname表示所要删除视图的名称,可同时指定删除多个视图。

mysql>  use school;   #选择数据库school      
mysql>  ;#查询数据库用户创建和选择视图权限    
mysql>  CREATE VIEW view_student_class AS select student.id, student.name, class.name, class.id as class_id, class.teacher from class inner join student  on class.id = student.class_id;#为学生表创建视图 
mysql>  drop view view_student_class;#删除视图 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值