ICode9

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

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

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

标签:窗口 单击 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

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

ICode9版权所有