T-SQL 语句(四)—— 视图操作
一、视图的优点
1、简化查询语句;
2、增加可读性,视图中可以只使用要显示的字段,并且可以使用字段别名
3、方便程序维护,当数据表的结构发生改变时只要修改视图存储的查询语句无需修改程序。
4、增加数据的安全性和保密性:针对不同的用户,可以创建不同的视图,此时用户只能看和修改其所能看到的视图中的数据,而真正的数据表中的数据都是不可见的。
二、创建视图
注意事项:
1、不能包括 Compute 和 Compute by 子句
2、不能包括 ORDER BY 子句,除非在 SELECT 子句里有 TOP 子句
CREATE VIEW v_employee(id,name,hhhhh) AS
SELECT id,name,'哈哈哈哈' FROM employee -- 创建视图
GO -- 创建视图语句必须是批处理的唯一语句
SELECT * FROM v_employee -- 使用视图
-- 创建一个视图获取最新 10 条新闻
CREATE VIEW v_lastest_news AS
SELECT TOP 10 * FROM news ORDER BY id DESC
-- 创建加密视图,加密后用户无法看到视图的信息(视图的创建语句)
CREATE VIEW v_enpcrypted_news WITH ENCRYPTION AS
SELECT * FROM news
-- 创建引用限制视图,当有视图引用表时表或视图不能被更改设计和删除
CREATE VIEW v_test_news WITH SCHEMABINDING AS
SELECT * FROM news
DROP TABLE news -- 将引发错误消息
-- 检查视图的数据变动
CREATE VIEW view_product AS
SELECT * FROM product WHERE price > 20 WITH CHECK OPTION -- 创建带数据检查的视图
UDPATE view_product SET price = 16 WHERE id = 3 -- 拒绝执行,不符合视图创建时设定的 price > 20 的条件
UPDATE product SET price = 16 WHERE id = 3 -- 可以执行
三、修改视图和操作视图记录
ALTER VIEW v_enpcrypted_news AS(SELECT * FROM news) ——修改视图,去除视图加密
INSERT INTO v_employee(name,age) VALUES('Jim',12) -- 插入数据
UPDATE v_employee SET name = 'KT' WHERE id = 1 -- 更新数据
DELETE v_employee WHERE id = 4 -- 删除数据,如果查询后视图本身不包含满足 WHERE 查询条件的记录但在数据表存在满足 WHERE 的记录,此时数据表不受影响
ALTER VIEW v_employee1 AS SELECT TOP 5 * FROM employee
DELETE v_employee WHERE id = 6 -- 删除数据
ALTER VIEW v_employee AS
SELECT TOP 5 * FROM employee WITH CHECK
四、删除视图
DROP VIEW v_employee