文章目录

  • 一、视图概述
  • 1.1 视图的优点
  • 1.2 视图的缺点
  • 二、创建视图
  • 2.1 语法介绍
  • 2.2 实践
  • 三、查看视图
  • 四、修改视图
  • 五、删除视图
  • 六、操作视图中的数据


一、视图概述

视图是从数据库中的一张或多张表中导出的表。创建视图时所引用的表称为基表。视图中的数据并不是像表中那样存储在数据库中,它只是读取基表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改和删除等操作。在对视图中的数据进行修改时,相应的基本表中的数据也会发生变化;同时,若基本表的数据发生变化,则这种变化也会反映到视图中。

对视图更新语句sql server mysql对视图操作会影响表吗_数据

1.1 视图的优点
  1. 简化数据操作
  2. 安全性,可以通过视图限制对数据的插入,修改和删除等操作
  3. 逻辑数据独立性
1.2 视图的缺点
  1. 性能差
    对视图查询最终转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,也要把它变成一个复杂的结合体,需要花费一定的时间。
  2. 修改限制
    当用户试图修改试图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的。

二、创建视图

2.1 语法介绍

视图可以以一张表为基础创建,也可以以多张表为基础创建。创建视图使用CREATE VIEW语句,其基本语法格式如下:

CREATE [OR REPLACE] VIEW view_name [(column_list)] 
AS SELECT_statement;
[WITH CHECK OPTION]

创建视图时应该注意以下几点:

  • 定义中引用的任何表或视图都必须存在。如果在创建视图后,删除定义时引用的表或视图,则使用视图时将导致错误。
  • SELECT语句中最大列名长度为64个字符。
  • WITH CHECK OPTION:可选,用于视图数据操作时的检查条件。
    若省略此子句,则不进行检查。
2.2 实践

在MySQL中,可以在单个数据表上创建视图,这也是最简单的一种创建方法。

实践一:
1.在student表上创建一个视图v_stu1,输出学号,姓名

create view v_stu1
as select studentid,studentname
from student;
# 查询所有学生的学号和姓名
select *
from v_stu1;

实践二:
2.在student表上创建一个视图v_Cs010901,输出Cs010901班同学的学号,姓名和性别,班级,并将视图字段重命名为sid,sname,ssex,claid

create view v_Cs010901(sid,sname,ssex,claid)
as select studentid,studentname,sex,classid
from student
where classid = 'Cs010901'
# with check option 条件的使用,是根据前提条件的where后面的条件限制,来实现删除的功能

select *
from v_Cs010901;

show tables;	# 视图和数据表是有相同等级的

select sid,claid from v_Cs010901;


实践三:
3.创建一个视图v_sc1,输出学号,学生名,性别,班级号,班级名,并将视图字段重命名为sid,sname,ssex,claid,claname
使用class表中的calssid
create view v_sc1(sid,sname,ssex,claid,claname)
as select studentid,studentname,sex,class.classid,class.classname
from student,class
where student.classid  = class.ClassID

使用student中的classid
create view v_sc2(sid,sname,ssex,claid,claname)
as select studentid,studentname,sex,student.classid,class.classname
from student,class
where student.classid  = class.ClassID

# 以上两种方式使用的classid是截然不同的,
# 在后面的时间操作中,在class表下的生成的视图表中,
# 是无法修改其中的数据的,所以推荐使用第二种方式,
# 使用同一个表中的数据字段。

desc v_sc1;
# 视图上没有主键外键和其他约束条件

show create view v_sc2;

显示视图v_sc1表的内容
select * from v_sc1;
删除视图v_sc1表的
drop view v_sc1;
drop view v_sc2;

三、查看视图

使用DESC语句可以查看视图的结构,其基本语法格式如下:

DESC 视图名

使用SHOW CREATE VIEW语句可以查看视图定义语句,其基本语法格式如下:

show create view 视图名

四、修改视图

当基本表的某些字段发生改变时,可以通过修改视图来保持与基本表的一致性。MySQL提供CREATE OR REPLACE VIEW和ALTER语句来修改视图。
使用CREATE OR REPLACE VIEW语句修改视图的语法形式如下:

CREATE OR REPLACE VIEW view_name [(column_list)] AS SELECT_statement;

使用ALTER VIEW语句修改视图的语法形式如下:

ALTER VIEW view_name [(column_list)] AS SELECT_statement;

五、删除视图

使用DROP VIEW语句可删除一个或多个视图。其基本语法格式如下:

DROP VIEW [IF EXISTS] 视图1,……视图n;

六、操作视图中的数据

由于视图是一张虚拟表,所以对视图中的数据进行操作,实际上就是对基表进行操作。

Tips:当视图中的数据被修改,基表中的数据会同时被修改。同样,当基表中的数据被修改,视图中的数据也会被修改。