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'
posted @ 2021-04-01 22:44  -SuPer  阅读(208)  评论(0)    收藏  举报