【SQL Server学习笔记】11:视图和公用表表达式
来源:互联网 发布:alchemy软件 编辑:程序博客网 时间:2024/06/05 16:40
视图
视图是基于结果集的可视化的表,用于简化查询,对视图的操作不会影响到数据库本身。
①创建视图
CREATE VIEW 视图名 ASSELECT 列名表FROM 源表名
例如:
create view MyView asselect Cno,CName,Credit from Course
可以看到在视图中多了一个文件:
查看一下:
②删除视图
DROP VIEW 视图名
删除后可以刷新对象资源管理器看到视图已经被删除了。
③视图的更新
sp_refreshview 视图名
因为视图是基于表的,这相当于使用存储过程来刷新了视图。
(1)如果添加一个列,因为这个列必然不在视图创建时要求的列中(即便创建时使用了*,也只表示那个时候的全部,并不包括这个列),是不会对视图有影响的。
但是,如果你使用*的初衷不是为了只使用当前表中全部的列,还希望当表增加新的列时视图也能增加,这时候就需要去更新视图了。
create view MyView asselect * from Coursealter table Course add XinDe char(10)sp_refreshview MyViewselect * from MyView
(2)因为视图来自表,所以在表中删除了视图中使用了的列(这时候没问题,因为视图不影响表),在查看视图时会报错,即便查看的仅是没删除的列。这时候就需要刷新视图。
alter table Course drop column XinDeselect CName from MyView
刷新视图,去查看全部列也没问题了,这时的全部当然不会包括删掉的那个列。
sp_refreshview MyViewselect * from MyView
(3)对于原表中的数据进行了更改,则视图会自动更新。
create view MyView asselect Cno,CName,Credit from Courseupdate Course set Credit=7 where Cno=1select * from MyView
公用表表达式
前面学的视图是作为数据库对象存储在数据库中的,如果这个结果集仅仅要使用一次,那么建立视图就太奢侈了。
公用表表达式(Common Table Expression)将查询结果指定一个临时命名的名字。
WITH 公用表名 [(自定列名表)] AS(SELECT...)
注意,公用表表达式只能且必须在后面的一个SELECT/INSERT/UPDATE/DELETE/MERGE语句中使用,但这条语句未结束时可以多次使用,结束后就失效了。
例如:
with ok(ok1,ok2) as (select CName,Credit from Course)select * from ok
这里只说了公用表表达式的非递归使用,实际上它还可以递归使用,以后再学。
阅读全文
0 0
- 【SQL Server学习笔记】11:视图和公用表表达式
- SQL SERVER公用表表达式CTE详解
- SQL SERVER公用表表达式 (CTE)的用法和运用场景
- SQL2005学习笔记-公用表表达式(CTE)
- SQL2005学习笔记-公用表表达式(CTE)
- T-SQL 公用表表达式(CTE)
- SQL SERVER 2005 公用表表达式(CTE)处理递归(父子关系)
- SQL Server 2005中使用公用表表达式的递归查询(CTE是个好东西)
- SQL Server-- 使用WITH AS提高性能-CTE(使用公用表表达式)
- Sql Server 2005+中用公用表表达式(CTE)实现递归查询
- Sql Server2005 Transact-SQL 新兵器学习总结之-公用表表达式(CTE)
- 使用公用表表达式(CTE)简化嵌套SQL 和进行递归调用
- 使用公用表表达式(CTE)简化嵌套SQL 和进行递归调用
- Sql — CTE公用表表达式和With用法总结
- SQL-公用表表达式(Common Table Expression)
- Tip - 使用SQL公用表表达式返回日期列
- T-SQL查询进阶--详解公用表表达式(CTE)
- 使用公用表表达式(CTE)简化嵌套SQL
- vue饿了么学习-问题1(style文件报错)
- Java UDP 统计字符串中某子串出现的次数
- 深入理解 Java 垃圾回收机制
- xjoi奋斗群群赛6
- HttpClient
- 【SQL Server学习笔记】11:视图和公用表表达式
- AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localh
- javascript中sort()函数的原理
- 【练习】PTA基础编程题目集
- 2017.9.8——字符串中的\0
- 2017.8.9测试 题一 17倍
- NOIP2015-Junior_sum_Solve.md
- WINDOWS系统电源管理:休眠,睡眠,待机,关机
- Java集合类List、Set、Map