SQL Server视图
创建视图
CREATE VIEW <视图名>[(<列名>[, ... n])]
AS
<SELECT查询子句>
[WITH CHECK OPTION]
<视图名>——新建视图的名称
<列名>——视图中列使用的名称
AS——指定视图要进行的操作
<SELECT查询子句>——定义视图的SELECT语句
WITH CHECK OPTION——表示对视图进行UPDATE、INSERT和DELECT操作时要保证更新、插入或删除的行满足视图定义中的子查询条件
从学生用户角度设计视图
学生用户:成绩查询,学籍查询,课表查询,学生选课
USE JXGL –只能查询到选课的学生
GO
CREATE VIEW V_STU
AS
SELECT 选修.学号,姓名,选修.课程号,教室编号,教师编号,成绩
FROM 选修 JOIN 学生 ON 选修.学号 = 学生.学号
JOIN 授课地 ON 授课地.课程号 = 选修.课程号
JOIN 讲授 ON 讲授.课程号 = 选修.课程号
修改视图
ALTER VIEW <视图名>[(<列名>[, ... n])]
AS
<SELECT查询子句>
[WITH CHECK OPTION]
参数与创建视图相同
要求修改上述“从学生用户角度设计视图”,只能查询到男生
USE JXGL –只能查询到选课的学生
GO
CREATE VIEW V_STU
AS
SELECT 选修.学号,姓名,选修.课程号,教室编号,教师编号,成绩
FROM 选修 JOIN 学生 ON 选修.学号 = 学生.学号
JOIN 授课地 ON 授课地.课程号 = 选修.课程号
JOIN 讲授 ON 讲授.课程号 = 选修.课程号
WHERE 性别 = '男'
删除视图
DROP VIEW <视图名>
使用视图
查询数据
与表的查询方式一样
SELECT *
FROM <视图名>
修改数据
对于数据库的更新操作(INSERT,DELECT,UPDATA),有以下三条操作:
(1)如果一个视图是从多个基本表使用连接操作导出的,那么不允许对这个视图更新操作;
(2)如果在导出视图的过程中,使用了分组和统计函数操作,也不允许对这个视图执行更新操作;
(3)行列子集视图是可以执行更新操作的。
例子:将学号001的名字改为“朱小七”
USE JXGL
UPDATE V_STU
SET 姓名 = '朱小七'
WHERE 学号 = '001'

浙公网安备 33010602011771号