视图

概述

视图是一个虚拟表,同真实的表一样,视图包含一系列带有名称的行和列数据。行和列数据用来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
视图是从一个或多个表中导出的,它的行为与表非常相似,但视图时一个虚拟表。

视图分类

分为3类:标准视图、索引视图、分区视图。

创建视图

需要先创建的表

CREATE TABLE student(s_id INT,name VARCHAR(40))
CREATE TABLE stu_detail(s_id INT,glass VARCHAR(40),addr VARCHAR(90))

CREATE TABLE t (quantity INT, price INT);
INSERT INTO t VALUES(3, 50);

单表上创建视图

【例1】在数据t上创建一个名为view_t的视图

CREATE VIEW view_t
AS
SELECT quantity,price,quantity*price AS Total_price
FROM t

SELECT * FROM view_t

多表上创建视图

【例2】在表student和表stu_detail上创建视图stu_glass

首先向两个表中插入一些数据。

INSERT INTO student VALUES(1,'wanglin1'),(2,'gaoli'),(3,'zhanghai');
INSERT INTO stu_detail VALUES(1, 'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong');
CREATE VIEW stu_glass(id,name,glass)
AS
SELECT student.s_id,student.name,stu_detail.glass
FROM student,stu_detail
WHERE student.s_id = stu_detail.s_id

SELECT * FROM stu_glass

修改视图

【例3】使用ALTER语句修改视图view_t

ALTER VIEW view_t AS SELECT quantity FROM t

查看视图信息

【例4】使用sp_help存储过程查看view_t视图的定义信息

EXEC sp_help 'dbo.view_t'

【例5】使用sp_helptext存储过程查看view_t视图的定义信息

EXEC sp_helptext 'dbo.view_t'

使用视图修改数据

通过视图向基本表中插入数据

【例6】通过视图向基本表中插入一条新记录

CREATE VIEW view_stuinfo(编号,名字,成绩,性别)
AS
SELECT s_id,s_name,s_score,s_sex
FROM stu_info
WHERE s_name = '张三'

SELECT * FROM stu_info

-- 插入一条记录
INSERT INTO view_stuinfo
VALUES(8,'雷子',90,'男')

SELECT * FROM stu_info
SELECT * FROM view_stuinfo

通过视图修改基本表中数据

【例7】通过view_stuinfo更新表中姓名为’张三’的同学的成绩

SELECT * FROM view_stuinfo

UPDATE view_stuinfo SET 成绩 = 99
WHERE 名字 = '张三'

SELECT * FROM stu_info

通过视图删除基本表中数据

【例8】通过视图删除基本表stu_info中的记录

DELETE view_stuinfo WHERE 名字 = '张三'

SELECT * FROM stu_info
SELECT * FROM view_stuinfo

删除视图

【例9】同时删除系统中的view_stuinfo和view_t视图

DROP VIEW dbo.view_stuinfo,dbo.view_t

exec sp_help 'view_stuinfo'
exec sp_help 'view_t'

问题

  1. 视图和表的区别是什么?
  • 视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化表,而表不是。
  • 视图没有实际的物理记录,而基本表有。
  • 表示内容,视图是窗口。
  • 表占用物理空间而视图不占,视图只是逻辑概念的存在。表可以及时对它进行修改,但视图只能用创建的语句来修改。
  • 视图是查询表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以防止用户接触数据表,从而不知道表结构。
  • 表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
  • 视图的建立和删除只影响其本身,不影响对应的基本表。
  1. 视图和表有什么联系?

视图是在基本表上建立的表,它的结构和内容都来自基本表,依据基本表存在。
一个视图可以对应一个基本表,也可以对应多个基本表。
视图是基本表的抽象和在逻辑意义上建立的新的关系。

posted @ 2020-06-15 10:24  一纸年华  阅读(7)  评论(0编辑  收藏  举报  来源