实验7 视图

  • 实验目的
    1. 熟练掌握对象资源管理器(界面)方式及命令方式视图的创建方法。
    2. 熟练掌握对象资源管理器(界面)方式及命令方式通过视图添加、修改、删除数据的方法。
  • 实验内容

1.创建视图

(1)创建YGGL数据库上的视图DS_VIEW, 视图包含Departments表的全部列。代码如下:

CREATE VIEW DS_VIEW

AS SELECT * FROM Departments

(2)创建YGGL数据库上的视图Employees_view, 视图包含员工编号、姓名和实际收入三列。使用如下SQL语句:

CREATE VIEW Employees_view(EmployeesID, Name, RealIncome)

AS

SELECT Employees.EmployeesID, Name, InCome-OutCome

FROM Employees, Salary

WHERE Employees.EmployeesID = Salary.EmployeesID

GO

2. 查询视图

(1)从视图DS_VIEW中查询出部门编号为“3”的部门名称。代码如下,

SELECT DepartmentName

FROM DS_VIEW

WHERE DepartmentID='3'

(2)从视图Employees_view中查询出姓名为“王林”的员工的实际收入。代码如下:

SELECT RealIncome

FROM Employees_view

WHERE Name='王林'

3.更新视图

在更新视图前需要了解可更新视图的概念,了解什么视图是不可以进行修改的。更新视图真正更新的是和视图关联的表。

(1)向视图DS_VIEW中插入一行数据“6,广告部,广告业务”。代码如下:

INSERT INTO DS_VIEW VALUES(6,'广告部','广告业务')

执行完该命令,使用SELECT语句分别查看视图DS_VIEW和基本表Departments中发生的变化,尝试向视图Employees_view中插入一行数据,看看会发生什么情况。

 (2)修改视图DS_VIEW,将部门编号为“5”的部门名称修改为“生产车间”。代码如下:

UPDATE DS_VIEW

SET DepartmentName='生产车间'

WHERE DepartmentID ='5'

执行完该命令,使用SELECT语句分别查看视图DS_VIEW和基本表Departments中发生的变化,

(3)将视图Employees_view中员工编号为“000001”的员工的姓名修改为“王浩”。代码如下:

UPDATE Employees_view

SET Name='王浩'

WHERE EmployeesID='000001'

(4)删除视图DS_ VIEW中部门编号为“1”的一行数据。代码如下:

DELETE FROM DS_VIEW

WHERE DepartmentID='1'

注意:

为了便于以后的操作,请将删除的数据尽快恢复到原来的状态。

4. 删除视图

删除视图DS_VIEW。代码如下:

DROP VIEW DS_VIEW

5.在界面工具中操作视图

(1)创建视图:启动“SQL Server Management Studio”,在“对象资源管理器”中展开“数据库”-“YGGL”, 选择其中的“视图”,右击鼠标,在弹出的快捷菜单上选择“新建视图”菜单项。在随后出现的“添加表”窗口中,添加所需关联的基本表。在视图窗口的关系图窗口显示了基本表的全部列信息,根据需要在窗口中选择创建视图所需的字段,完成后单击“保存”按钮保存。

(2)查询视图:新建一个查询,输入T-SQL查询命令即可像查询表一样查询视图。

(3)删除视图:展开“YGGL数据库”-“视图”,选择要删除的视图,右击并选择“删除”菜单项,确认即可。

三、思考与练习

(1)在创建视图时SELECT语句有哪些限制?

不能在SELECT语句的FROM子句中使用子查询来定义视图的。

(2)在创建视图时有哪些注意点?

1).与创建表一样,创建视图的名称必须唯一

2).创建视图的个数并没限制,但是如果一张视图嵌套或者关联的表过多,同样会引发性能问题,在实际生产环节中部署时务必进行必要的性能检测。

3).在过滤条件数据时如果在创建视图的sql语句中存在where的条件语句,而在使用该视图的语句中也存在where条件语句时,这两个where条件语句会自动组合

4).order by 可以在视图中使用,但如果从该视图检索数据的select语句中也含有order by ,那么该视图中的order by 将被覆盖。

5).使用可以和普通的表一起使用,编辑一条联结视图和普通表的sql语句是允许的。

(3)创建视图,包含员工编号、姓名、所在部门名称和实际收入这几列。

(4)若视图关联了某表中的所有字段,而此时该表中添加了新的字段,视图中能否查询到该字段?

不能。

(5)自己创建一个视图,并查询视图中的字段。

(6)视图Employees_view中无法插入和删除数据,其中的RealIncome字段也无法修改,为什么?

例如有个表 TestTab (id INT PRIMARY KEY, val VARCHAR(10), remark VARCHAR(80) )
CREATE VIEW view1 AS SELECT id, val FROM TestTab;这个视图是可以 插入/修改/删除数据的
    但是如果是一个CREATE VIEW view2 AS SELECT val, COUNT(1) FROM TeseTab GROUP BY val.
那么这个视图要插入/修改/删除,那是不行的了。

  • 17
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值