视图

概念

是人机交互的界面 类似于生活中的窗口

工作也是查询 但视图是一张虚拟表 本身不存在

数据还在数据库里面 视图并不存放数据

用来集中、简化、自定义每个用户对数据库的不同认识

视图可用作安全机制

对象资源管理器中可以看见 视图是和表并列的 可知 视图是面向一个数据库的

概括:

建立在表的查询基础上的虚拟表,表示一张表的部分数据或多张表的综合数据,不存放数据。

根据不同用户的不同需求,可以创建不同的视图(可用作安全机制)

用途

筛选表中的行

防止未经许可的用户访问敏感数据

降低数据库的复杂程度

将多个物理数据库抽象为一个逻辑数据库

可以面向视图对象进行增删改查 对视图对象的增删改查会导致原表被操作

这就很有意思

与表复制不同 表复制是复制内容建一张全新的表 对新表操作不关原表的事

但视图创建后 指向了它后面的一堆记录

视图增删改查了 原表也会相应修改

(类似于一个是另存为 一个是共享文档)

就理解为封装

不但简化了sql语句 如果很常用 就无需每次都写一大串代码 直接拿这个视图进行操作

如果要修改 也只要修改这个视图里的东西(就是函数 封装成一个功能)

还有更加直观的修改局部数据

对于不同用户给不同视图 修改各自数据 不影响其他数据

(简化开发、增强复用、利于维护)

视图对象在数据库中也是以文件的形式存在的

最大特点:通过对视图的操作,会影响到原表数据

创建视图with check option

只有DQL语句才能以view的形式创建

CREATE VIEW 视图表名 AS (一串查询)

image-98d6d15d image-6998dc23

通过视图是可以插入信息的(当然可以 不然怎么达成前后台互通的效果)

在视图里面插入数据 原表里也会做出相应修改

反过来 在原表里面插入、修改数据 视图里面也会相应改变

所以可以通过视图检索表数据、添加表数据、修改表数据、删除表数据

其实就相当于是做查询 做生成表查询 那些语法语句、多表查询什么的都是可以用的

image-4425ca41 image-4971b8ff image-4a016ef1

有一个注意点:

image-6042e1c2

在这个表里做插入不符合约束的数据是不会报错的

使用SSMS插入会飘红无法保存 使用INSERT INTO 会运行成功 原表会改变 但视图表内不会成功插入

image-1a2d5196 image-bcde8909 image-8660f0c4

显然 不满足条件的数据能够被插入进表格 是不安全的

为了数据安全性 在创建视图时需要一条命令——with check option

(创建视图时保证对视图的操作必须遵循视图定义时where子句指定条件的语句)

image-701d7c7b

可见 再想插入不符合条件的数据时就会报错

image-89037c73

查询视图

与表一样 查询用SELECT

SELECT * FROM 视图名

image-faf65fa3

同样可以对查询做操作

image-69b096fe

可以利用这一点 节省在AS后面的工作量

修改视图

跟创建视图时的操作一模一样 可以理解为创个新的覆盖了旧的

关键词也是ALTER

image-e2a0ebc0

删除视图

DROP 视图名

image-fdfd8451

查看视图创建过程

EXEC sp_helptext 名字

image-b23480c7

重命名视图

EXEC sp_rename 旧名,新名

image-d54f6c96

通过视图对表进行操作

通过视图检索表数据

——创建视图 查询视图

CREATE VIEW 大于等于3学分课程信息

AS

SELECT * FROM 课程 where 学分数>=3

SELECT * FROM 大于等于3学分课程信息

通过视图添加表数据

INSERT INTO 视图名

VALUES(列值1,列值2,列值3,…,列值n)

通过视图修改表数据

UPDATE 视图名

SET 列1=列值1

列2=列值2

…….

列n=列值n

WHERE 逻辑表达式

通过视图删除表数据

DELETE FROM 视图名

WHERE 逻辑表达式


⬅️ 20-索引 🏠 00-数据库 ➡️ 22-用户管理(DBA命令)