SQL数据库语言基础之SqlServer视图的创建、修改与视图数据的增删改查

一、认识视图

1、视图的理解
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据 。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表 。

从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表 一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作等,但是这些对视图的操作是会影响到表的原数据。

2、视图的作用
(1)筛选表中的行;

(2)降低数据库的复杂程度;

(3)将多个物理数据库抽象为一个逻辑数据库;

(4)防止未经许可的用户访问敏感数据。

(5)创建视图时,将列名改为有意义的名称,使用户更容易理解列所代表的内容。

(6)使获得数据更容易,通过创建视图来方便用户访问多个表中的数据。

3、视图的注意事项
(1)只能在当前数据库中创建视图;
(2)一个视图最多可以引用1024个列;
(3)不能在视图上创建全文索引,不能在规则、默认的定义中引用视图;
(4)如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称;
(5)当视图引用基表或视图被删除,该视图也不能再被使用;
(6)视图最多可以嵌套32层;
(7)视图的命名必须遵循标识符命名规则,不可与表同名。

二、创建、查询视图

1、语法格式

CREATE VIEW 视图名(字段名1,字段名2……)
AS 
SELECT 
[with check option]

字段名的选是给视图中选取字段的别名,常用于多表连接时。
[with check option]用于限制用户的操作,比如创建加密视图。

2、测试操作
(1)创建STU表中的SNO,SNAME字段组成的视图

CREATE VIEW STU_V
AS
SELECT SNO,SNAME FROM STU

--查询视图
SELECT * FROM STU_V

(2)创建所有男生信息的学号、姓名、班级组成的视图

--创建视图
CREATE VIEW STU_V2(学号,姓名,班级)
AS
SELECT SNO,SNAME,CLASS FROM STU WHERE SEX='男'

--查询视图
SELECT * FROM STU_V2
--查询原表
SELECT * FROM STU

2.2.1
(3)别名的使用也可以用原来的AS

CREATE VIEW STU_V2
AS
SELECT SNO AS 学号,SNAME AS 姓名,CLASS AS 班级 FROM STU WHERE SEX='男'

3、创建视图注意事项
(1)不能包括COMPUTER、COMPUTER BY语句
(2)不能有ORDER BY语句(除非使用TOP关键字)
(3)不能有OPTION关键字
(4)不能有INTO关键字
(5)不能使用临时表、表变量

4、视图使用ORDER BY 例外

CREATE VIEW STU_V3(学号,姓名,班级)
AS
SELECT TOP 4 SNO,SNAME,CLASS FROM STU WHERE SEX='男'
ORDER BY SNO DESC

--查询视图
SELECT * FROM STU_V3

此处的TOP 4表示选择前4条记录,若为1,则是前1条记录。不加TOP,则会报错。
2.4.1

5、查询数据库中的所有视图

SELECT * FROM INFORMATION_SCHEMA.VIEWS

6、创建加密视图(encryption)

CREATE VIEW STU_V4(学号,姓名,班级)
with encryption
AS
SELECT SNO,SNAME,CLASS FROM STU WHERE SEX='男'
--查询所有视图
SELECT * FROM INFORMATION_SCHEMA.VIEWS

2.6.1

三、修改、删除视图

1、修改视图(ALTER VIEW)
(1)语法格式

ALTER VIEW 视图名(字段名1,字段名2……)
AS 
SELECT 
[with check option]

(2)原视图STU_V2
3.1.1
(3)只留一个班级的别名,并且只检索女生信息

--修改前
SELECT * FROM STU_V2

--修改
ALTER VIEW STU_V2
AS
SELECT SNO,SNAME,CLASS as 班级
FROM STU
WHERE SEX='女'

--修改后
SELECT * FROM STU_V2

3.1.2

2、删除视图(DROP VIEW)

--判断:如果存在指定视图则删除
IF EXISTS (SELECT * FROM STU WHERE name='STU_V3')  --单引号里面为视图名称
    DROP VIEW STU_V3 --视图名称

四、修改视图数据(与操作表一样,只是把table换成view)

1、测试练习

--创建视图并修改字段的别名
CREATE VIEW STU_V5(学号,姓名,性别,班级,出生日期,联系电话)
AS 
SELECT * FROM STU
SELECT * FROM STU_V5  --查询一下创建的视图

--插入视图数据
INSERT INTO STU_V5(学号,姓名,性别)
VALUES('0477','莫卡','女')
SELECT * FROM STU_V5  --查询视图,数据已修改
SELECT * FROM STU  --查询原表,原表的数据也被修改了

--修改视图的数据值
UPDATE STU_V5
SET 班级='挖掘06'
WHERE 姓名='莫卡'
SELECT * FROM STU_V5  --查询修改了值的视图

--删除视图的行数据
DELETE FROM STU_V5
WHERE 姓名='莫卡'
SELECT * FROM STU_V5  --查询删除了值的视图

2、注意事项
当需要更新(UPDATE)视图数据时,
若视图需要值函数返回结果,则不能更新;
若查询的视图所包含的列来自多个表也不能更新;
不能更新GROUP BY和DISTINCT的视图;
不能更新存储过程返回的结果。

  • 14
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值