视图
概述
视图是一个虚拟表,同真实的表一样,视图包含一系列带有名称的行和列数据。行和列数据用来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
视图是从一个或多个表中导出的,它的行为与表非常相似,但视图时一个虚拟表。
视图分类
分为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'
问题
- 视图和表的区别是什么?
- 视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化表,而表不是。
- 视图没有实际的物理记录,而基本表有。
- 表示内容,视图是窗口。
- 表占用物理空间而视图不占,视图只是逻辑概念的存在。表可以及时对它进行修改,但视图只能用创建的语句来修改。
- 视图是查询表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以防止用户接触数据表,从而不知道表结构。
- 表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
- 视图的建立和删除只影响其本身,不影响对应的基本表。
- 视图和表有什么联系?
视图是在基本表上建立的表,它的结构和内容都来自基本表,依据基本表存在。
一个视图可以对应一个基本表,也可以对应多个基本表。
视图是基本表的抽象和在逻辑意义上建立的新的关系。
本文来自博客园,作者:一纸年华,转载请注明原文链接:https://www.cnblogs.com/nullcodeworld/p/18210652