ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL Server-视图的创建、修改和删除以及通过视图操作表的数据

2022-05-19 19:01:59  阅读:69  来源: 互联网

标签:窗口 单击 SNO 数据库 视图 Server SQL VIEW


视图是关系数据库系统中的重要机制。用户通过视图能以多种角度观察数据。视图可以对数据提供一定程度的安全保护。本篇主要介绍用SQL语言实现视图的创建、删除的方法和步骤,以及通过视图向基本表中插人、更新、删除数据的方法和步骤。

 

视图

视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表。数据库中只存储视图的定义而不存储视图中的数据,从视图中可访问的数据应存放在原来的基本表中。视图一经定义,就可以和基本表一样被查询﹑被删除,我们也可以在一个视图之上再定义新的视图,但对视图的更新(增加﹑删除﹑修改)操作则有一定的限制。

 

视图的作用

  • 视图能够简化用户的操作。
  • 视图使用户能从多个角度看待同一数据。
  • 视图对重构数据库提供了一定程度的逻辑独立性。
  • 视图能够对机密数据提供安全保护。

 

可更新视图的限制

  • 若视图是由两个以上的基本表导出的,则次视图不允许更新。
  • 若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。
  • 若视图的字段来自集函数,则此视图不允许更新。
  • 若视图定义中含有GROUP BY子句,则此视图不允许更新。
  • 若视图中含有DISTINCT短语,则此视图不允许更新。
  • 若视图定义中有嵌套查询,并且内层查询FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。
  • 一个不允许更新的视图上定义的视图也不允许更新。

 

创建视图

1.交互式创建一个视图。

要求:视图名称是VIEW_S,其数据来源于一个基本表S,包含的数据有SNO、SN、SEX、DEPT。

启动SQL Server Management Studio,在“对象资源管理器”中,展开数据库jxsk,右击“视图”,在打开的快捷菜单中选择“新建视图”选项,即可打开一个“添加表”对话框。

在“添加表”对话框中,选择表S,单击“添加”按钮,关闭“添加表”对话框,返回创建视图窗口,可看到创建视图窗口中增加了表S。

在表S中,分别选中字段SNO,SN,SEX,DEPT左侧的复选框,表示选中这些字段,将它们加人视图中,观察下面窗格中的变化。

单击视图设计器工具栏中的“!”按钮﹐执行视图定义。窗口下面的表格数据即为视图的内容。

单击工具栏中的保存按钮,打开对话框,输入视图名称VIEW_S。单击“确定”按钮即可保存。

关闭“创建视图窗口”。在“对象资源管理器”中,展开数据库jxsk 中的“视图”节点, VIEW_S即是刚创建的视图,另一个为系统视图文件夹。

 

2.交互式创建一个成绩表视图。

要求:视图名称是VIEW_SCORETABLE,其数据来源于两个基本表C和SC及一个已有的视图VIEW_S,包含的数据有来自视图VIEW_S的字段SN、来自表C的字段CN,来自表SC的字段SCORE。

打开SQL Server Management Studio,在“对象资源管理器”中,展开数据库jxsk,右击“视图”,在打开的快捷菜单中选择“新建视图”选项。打开“添加表”窗口。

在“添加表”窗口中,选择表C和表SC,单击“添加”命令,可看到创建视图窗口上部分窗格中增加了表C和表SC,并查看下面SQL窗格中语句的变化。以此类推,在“视图”选项卡中添加视图VIEW_S。单击“关闭”按钮﹐关闭“添加表”窗口,返回创建视图窗口。

在视图VIEW_S中,选中字段SN左侧的复选框,表示选中字段SN。以此类推,在表C中选择CN,在表SC中选择SCORE。观察下面SQL窗格中语句的变化。

选中视图VIEW_S中的SNO并将其拖曳到表SC中的SNO,查看下面SQL窗格中语句的变化;同样选中表SC中的CNO并拖曳到表C中的CNO,查看下面SQL窗格中语句的变化。

单击视图设计器工具栏中的“!”按钮,执行视图定义。窗口下面的表格数据即是视图的内容。

单击工具栏中的保存按钮,打开对话框,输入视图名称VIEW_SCORETABLE,单击“确定”按钮。关闭“创建视图窗口”。

 在“对象资源管理器”中,展开数据库jxsk中的“视图”节点,右窗格中的VIEW_SCORETABLE即是刚创建的视图。

 

3.使用create语句创建一个课程表视图。

要求:视图名称是VIEW_CTABLE,其数据来源于两个基本表T、C,包含的数据有来自数据库表T的字段TN,来自数据库表C的字段CN。

create view VIEW_CTABLE
as
select TN, CN from T, TC, C
where T.TNO = TC.TNO and C.CNO = TC.CNO

  

修改视图

1.使用交互式方法把视图VIEW_S中的字段SNO删掉。

在“对象资源管理器”中,展开数据库jxsk中的“视图”节点。右击VIEW_S,在快捷菜单中选择“设计”选项,打开设计视图窗口。在此窗口中可查看窗口中各部分内容的关系。

在数据库表S中,取消选中SNO左端的复选框,即取消此项选择,然后查看窗口下部分列表和SQL语句的变化。

单击视图设计器工具栏中的“!”按钮,执行对视图定义进行改变的操作。窗口下部分表格中显示的是删除SNO后视图中的数据。

2.使用alter语句给视图VIEW_CTABLE增加一个课时字段:CT tinyint。

alter view VIEW_CTABLE
as
select TN, CN, CT from T, C, TC
where T.TNO = TC.TNO and C.CNO = TC.CNO

  

通过视图修改数据库数据

1.交互式通过修改视图VIEW_S中的数据来实现对其基本表S中数据的修改。

在SQL Server Management Studio 中, 分别打开视图VIEW_S和数据库表S的内容,可见两个表中“李华”记录的各字段数据相同。

在视图VIEW_S 中,把“李华”的系名DEPT“软工”改为“计算机”。单击“!”按钮﹐执行进行这个改变的操作。单击表S窗口,使其成为当前窗口,查看到“李华”的 DEPT字段值仍然是“软工”,单击按钮“!”﹐再查看“李华”的DEPT字段值时已变为“计算机”,与当前的视图VIEW_S中的改变一致。

 

2.对视图VIEW_S执行INSERT语句,查看此视图的基本表S中数据的变化。

insert into VIEW_S values ('古明', '男', '自动化')

执行语句后系统提示错误。这是因为,视图VIEW_S来源于基本表S,但却不包含基本表S的主键SNO,主键的性质是不许取空值。当向视图中插人一行新数据时,因没有SNO字段值,所以﹐从视图到基本表映射插入此行数据时﹐表S中的SNO字段值自动取空值,这是主键所不允许的,故执行失败。

 

3.修改视图VIEW_S的定义,使其包含基本表S的主键字段SNO,再对VIEW_S 执行插入操作。

alter view VIEW_S
as
select SNO, SN, SEX, DEPT from S
go
insert into VIEW_S values ('S8', '古明', '男', '自动化')
go

  

4.用delete语句对视图VIEW_S执行DELETE操作,查看此视图的基本表S中数据的变化。

delete VIEW_S
where SNO = 'S8'

  

删除视图

1.交互式删除视图VIEW_S。

启动SQL Server Management Studio。在“对象资源管理器”中,展开数据库jxsk中的“视图”节点中的内容即为数据库jxsk 中的视图内容。

右击视图VIEW_S,在打开的快捷菜单中选择“删除”选项,打开“删除对象”对话框。

查看“要删除的对象”列表,单击要删除的视图VIEW_S,单击“确定”按钮,视图VIEW_S即被删除。

在“对象资源管理器”中,刷新数据库 jxsk中的“视图”节点,可看到视图VIEW_S已经不存在。

 

2.使用drop语句删除视图VIEW_CTABLE。

drop view VIEW_CTABLE

  

 

标签:窗口,单击,SNO,数据库,视图,Server,SQL,VIEW
来源: https://www.cnblogs.com/khrushchefox/p/16288197.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有