- 浏览: 442171 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
鱼里的yeol:
正在学习EJB 感觉有些吃力
Ejb3学习之二----Ejb3的Ejb Bean类型介绍 -
phoenix5870:
默认就是singleton的。
Spring中的Singleton模式和Java中的Singleton模式 -
jhys7s8jd:
pdf打印机下载 无水印http://www.onlinedo ...
PDFCreate工具的使用 -
wang371134086:
:e vil:
浅谈Struts2中的拦截器实现责任链模式 -
liu765023051:
亲,local与remote有什么区别呢
EJB学习之三---Local和Remote接口
这篇文章重要讲述下关于视图的作用:
一、视图的作用
1.简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
2.安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上:
使用权限可被限制在基表的行的子集上。
使用权限可被限制在基表的列的子集上。
使用权限可被限制在基表的行和列的子集上。
使用权限可被限制在多个基表的连接所限定的行上。
使用权限可被限制在基表中的数据的统计汇总上。
使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。
3.逻辑数据独立性。视图可帮助用户屏蔽真实表结构变化带来的影响。
二、视图的优点
(1)视图能简化用户的操作
(2)视图机制可以使用户以不同的方式查询同一数据
(3)视图对数据库重构提供了一定程度的逻辑独立性
(4)视图可以对机密的数据提供安全保护
三、视图的安全性
视图的安全性可以防止未授权用户查看特定的行或列,是用户只能看到表中特定行的方法如下:
1 在表中增加一个标志用户名的列;
2 建立视图,是用户只能看到标有自己用户名的行;
3 把视图授权给其他用户。
四、逻辑数据独立性
视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立:
1 如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。
2 如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。
3 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。
4 如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。
五、视图的书写格式
CREATE VIEW <视图名>[(列名组)]
AS <子查询>
DROP VIEW <索引名>
注意:视图可以和基本表一样被查询,但是利用视图进行数据增,删,改操作,会受到一定的限制。
(1)由两个以上的基本表导出的视图
(2)视图的字段来自字段表达式函数
(3)视图定义中有嵌套查询
(4)在一个不允许更新的视图上定义的视
六、创建和管理视图
(创建视图时注意事项的介绍)
(一). 利用企业管理器创建与管理视图
1.使用企业管理器创建视图:
2.使用企业管理器的“向导”创建视图:
3.使用企业管理器的修改视图:
注意:在 “设计视图”时完成的工作:
添加表/删除表,添加引用字段/删除引用字段,调整字段顺序,设置分组
设置过滤条件, 设置引用字段是否输出,设置视图其他属性
4.使用企业管理器的删除视图:
(二). 用T-SQL语句创建与管理视图
(查看由企业管理器创建的视图—“项目信息”其相应的T-SQL语句)(“视图属性”)
1. 使用CREATE VIEW创建视图的语法: 参见教材p130~135
例子1: 选择‘员工表’和‘项目表’中的部分字段和记录创建视图,并且限制表‘员工表’ 中的记录只能是部门为“项目部”的记录集合,视图定义为V_ProjectPart,其程序清单如下:
CREATE VIEW V_ProjectPart
AS
SELECT 员工表.编号, 员工表.姓名,员工表.性别,
员工表.所属部门, 项目表.项目编号, 项目表.名称
FROM 项目表 INNER JOIN 员工表 ON 项目表.负责人 = 员工表.编号
WHERE 员工表.所属部门='项目部'
例子2:定义视图时指定别名并加密
CREATE VIEW 项目信息视图
(项目名称,项目客户,项目负责人,开始日期,[计划工期(天)])
with encryption
A
SELECT 项目表.名称,客户表.客户名称, 员工表.姓名,项目表.开始日期,
DATEDIFF(day,项目表.开始日期,项目表.结束日期)
FROM 项目表 INNER JOIN 员工表 ON 项目表.负责人 = 员工表.编号
INNER JOIN 客户表 ON 项目表.客户 = 客户表.客户编号
WHERE 员工表.所属部门='项目部'
使用语句:exec sp_helptext ‘项目信息视图’显示消息为:
“对象备注已加密。”
例子3:使用WITH CHECK OPTION子句
问题提出:
若创建视图V_Employee,其程序清单如下:
CREATE VIEW V_Employee
AS
SELECT * FROM 员工表
WHERE 员工表.性别=‘女’执行下列语句,插入新记录:
INSERT INTO V_Employee(姓名,性别,工资)
values(‘李立三’,‘男’,2300)
插入操作成功,但不合理!
解决办法:使用with check option,程序清单如下:
CREATE VIEW V_Employee
AS
SELECT * FROM 员工表 WHERE 员工表.性别=‘女’With check option
同样,插入新记录:
INSERT INTO V_Employee(姓名,性别,工资) values(‘李立三’,‘男’,2300)
插入操作将失败!
2.使用ALTER VIEW修改视图
3.删除视图DROP VIEW
使用DROP VIEW命令删除视图的语法如下: DROP VIEW 视图名1 [, ……]
例: DROP VIEW V_Employee
七、使用视图操作表数据
(一)、通过视图添加表数据
使用INSERT语句实现。
注意:视图是虚拟表,其本身不存储数据(来自其引用表), 添加的数据是存储于视图参照的数据表中。
条件分析:
1)用户有向数据表插入数据的权限;
2)视图只引用表中部分字段,插入数据时只能是明确其应用的字段取值;
3)未引用的字段应具备下列条件之一:
允许空值;设有默认值;是标识字段;数据类型是timestamp或uniqueidentifer;
4)视图不能包含多个字段的组合
5)视图不能包含使用统计函数的结果;
6)视图不能包含DISTINCT或GROUP BY子句;
7)定义视图使用WITH CHECK OPTION,则插入数据应符合相应条件;
8)若视图引用多个表,一条INSERT语句只能同一个基表表中数据;
例:
首先创建了一个新的视图:
CREATE VIEW V_Employee
AS
SELECT * FROM 员工表 WHERE 员工表.性别=‘女’ with check option
然后,通过执行以下语句使用该视图向基表添加一条新的数据记录:
INSERT INTO V_Employee(姓名,性别,工资) values(‘李立平’,‘女’,2300)
(二). 更新数据记录
使用视图可以更新基表数据记录(注意使用INSERT时的限制同样适用)。
例子4:
(1) update 项目_view
set 项目负责人= ‘王大力’ where 项目负责人= ‘王立兵’
(2) update 项目_view
set 结束日期= DATEADD(day, 50, 结束日期) where 客户名称=‘CCH公司’
(三)、删除数据记录
利用DELETE语句,使用视图删除记录,可以删除任何基表中的记录。
注意: 必须指定在视图中定义过的字段来删除记录;
视图引用多个表时,无法用DELETE命令删除数据。
例子5:delete V_Employee where 员工工资<1500
一、视图的作用
1.简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
2.安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上:
使用权限可被限制在基表的行的子集上。
使用权限可被限制在基表的列的子集上。
使用权限可被限制在基表的行和列的子集上。
使用权限可被限制在多个基表的连接所限定的行上。
使用权限可被限制在基表中的数据的统计汇总上。
使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。
3.逻辑数据独立性。视图可帮助用户屏蔽真实表结构变化带来的影响。
二、视图的优点
(1)视图能简化用户的操作
(2)视图机制可以使用户以不同的方式查询同一数据
(3)视图对数据库重构提供了一定程度的逻辑独立性
(4)视图可以对机密的数据提供安全保护
三、视图的安全性
视图的安全性可以防止未授权用户查看特定的行或列,是用户只能看到表中特定行的方法如下:
1 在表中增加一个标志用户名的列;
2 建立视图,是用户只能看到标有自己用户名的行;
3 把视图授权给其他用户。
四、逻辑数据独立性
视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立:
1 如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。
2 如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。
3 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。
4 如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。
五、视图的书写格式
CREATE VIEW <视图名>[(列名组)]
AS <子查询>
DROP VIEW <索引名>
注意:视图可以和基本表一样被查询,但是利用视图进行数据增,删,改操作,会受到一定的限制。
(1)由两个以上的基本表导出的视图
(2)视图的字段来自字段表达式函数
(3)视图定义中有嵌套查询
(4)在一个不允许更新的视图上定义的视
六、创建和管理视图
(创建视图时注意事项的介绍)
(一). 利用企业管理器创建与管理视图
1.使用企业管理器创建视图:
2.使用企业管理器的“向导”创建视图:
3.使用企业管理器的修改视图:
注意:在 “设计视图”时完成的工作:
添加表/删除表,添加引用字段/删除引用字段,调整字段顺序,设置分组
设置过滤条件, 设置引用字段是否输出,设置视图其他属性
4.使用企业管理器的删除视图:
(二). 用T-SQL语句创建与管理视图
(查看由企业管理器创建的视图—“项目信息”其相应的T-SQL语句)(“视图属性”)
1. 使用CREATE VIEW创建视图的语法: 参见教材p130~135
例子1: 选择‘员工表’和‘项目表’中的部分字段和记录创建视图,并且限制表‘员工表’ 中的记录只能是部门为“项目部”的记录集合,视图定义为V_ProjectPart,其程序清单如下:
CREATE VIEW V_ProjectPart
AS
SELECT 员工表.编号, 员工表.姓名,员工表.性别,
员工表.所属部门, 项目表.项目编号, 项目表.名称
FROM 项目表 INNER JOIN 员工表 ON 项目表.负责人 = 员工表.编号
WHERE 员工表.所属部门='项目部'
例子2:定义视图时指定别名并加密
CREATE VIEW 项目信息视图
(项目名称,项目客户,项目负责人,开始日期,[计划工期(天)])
with encryption
A
SELECT 项目表.名称,客户表.客户名称, 员工表.姓名,项目表.开始日期,
DATEDIFF(day,项目表.开始日期,项目表.结束日期)
FROM 项目表 INNER JOIN 员工表 ON 项目表.负责人 = 员工表.编号
INNER JOIN 客户表 ON 项目表.客户 = 客户表.客户编号
WHERE 员工表.所属部门='项目部'
使用语句:exec sp_helptext ‘项目信息视图’显示消息为:
“对象备注已加密。”
例子3:使用WITH CHECK OPTION子句
问题提出:
若创建视图V_Employee,其程序清单如下:
CREATE VIEW V_Employee
AS
SELECT * FROM 员工表
WHERE 员工表.性别=‘女’执行下列语句,插入新记录:
INSERT INTO V_Employee(姓名,性别,工资)
values(‘李立三’,‘男’,2300)
插入操作成功,但不合理!
解决办法:使用with check option,程序清单如下:
CREATE VIEW V_Employee
AS
SELECT * FROM 员工表 WHERE 员工表.性别=‘女’With check option
同样,插入新记录:
INSERT INTO V_Employee(姓名,性别,工资) values(‘李立三’,‘男’,2300)
插入操作将失败!
2.使用ALTER VIEW修改视图
3.删除视图DROP VIEW
使用DROP VIEW命令删除视图的语法如下: DROP VIEW 视图名1 [, ……]
例: DROP VIEW V_Employee
七、使用视图操作表数据
(一)、通过视图添加表数据
使用INSERT语句实现。
注意:视图是虚拟表,其本身不存储数据(来自其引用表), 添加的数据是存储于视图参照的数据表中。
条件分析:
1)用户有向数据表插入数据的权限;
2)视图只引用表中部分字段,插入数据时只能是明确其应用的字段取值;
3)未引用的字段应具备下列条件之一:
允许空值;设有默认值;是标识字段;数据类型是timestamp或uniqueidentifer;
4)视图不能包含多个字段的组合
5)视图不能包含使用统计函数的结果;
6)视图不能包含DISTINCT或GROUP BY子句;
7)定义视图使用WITH CHECK OPTION,则插入数据应符合相应条件;
8)若视图引用多个表,一条INSERT语句只能同一个基表表中数据;
例:
首先创建了一个新的视图:
CREATE VIEW V_Employee
AS
SELECT * FROM 员工表 WHERE 员工表.性别=‘女’ with check option
然后,通过执行以下语句使用该视图向基表添加一条新的数据记录:
INSERT INTO V_Employee(姓名,性别,工资) values(‘李立平’,‘女’,2300)
(二). 更新数据记录
使用视图可以更新基表数据记录(注意使用INSERT时的限制同样适用)。
例子4:
(1) update 项目_view
set 项目负责人= ‘王大力’ where 项目负责人= ‘王立兵’
(2) update 项目_view
set 结束日期= DATEADD(day, 50, 结束日期) where 客户名称=‘CCH公司’
(三)、删除数据记录
利用DELETE语句,使用视图删除记录,可以删除任何基表中的记录。
注意: 必须指定在视图中定义过的字段来删除记录;
视图引用多个表时,无法用DELETE命令删除数据。
例子5:delete V_Employee where 员工工资<1500
发表评论
-
Oracle的Hash Join之探究整理
2012-04-08 15:48 11312Hash join算法原理 自从or ... -
Oracle Event 10046
2012-03-29 23:17 1596下面是一个10046的例子,可以用来分析具体的一些sql执行计 ... -
使用SQL_TRACE进行数据库诊断
2012-03-29 23:08 965From:http://www.eygle.com/archi ... -
Oracle索引之B-Tree和Bitmap索引对比
2012-03-23 18:32 2327B树索引是所有大型关系 ... -
Oracle性能优化五大工具介绍
2012-03-23 15:55 1535本文介绍了Oracle性能优化工具Oracle数据库在线数据字 ... -
Oracle事物处理中回滚段容量的问题
2012-03-23 15:33 1593在执行大事务时,有时oracle会报出如下的错误: ORA- ... -
Oracle 中条件分歧总结
2011-06-01 23:17 1308Oracle 中条件分歧总结: * Decode * IF ... -
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
2011-06-01 23:07 2271转载:http://blog.csdn.net/songsen ... -
Oracle For Update 行锁
2010-11-08 23:43 1922转自:http://hi.baidu.com/mcj0127/ ... -
Mysql的存储引擎:InnoDB和MyISAM区别
2010-10-05 02:25 1334InnoDB和MyISAM是许多人在 ... -
SSMAを活用してMySQL/AccessからSQL Server/Azureへマイグレーション
2010-09-10 23:03 2299作者 Abel Avram , 翻訳者 (株)ネクストスケープ ... -
Oracle 嵌套事务与自治事务思考
2010-04-22 21:35 6203关键字 嵌套事务和自治事务的概念 嵌套事务的使用 ... -
Oracle中Cursor介绍
2010-04-21 22:09 1734关键字 概念 类型 异常处理 一 概念 游标是SQL ... -
Oracle 10g 中动态性能视图
2010-04-16 19:18 2017动态性能视图用于记录当前例程的活动。启动例程时,oracle会 ... -
Oracle 和 Sql Server中日期的显示问题
2010-03-10 02:01 2820在日常的项目中,经常遇见User需要显示不同的日期格式。当然, ... -
Oracle中RowNum的用法
2010-02-08 22:05 1772ROWNUM,是一种伪列,它根据特定记录返回一个序列化的数字。 ... -
ORACLE 分析函数解析
2010-01-17 21:29 1307分析函数是oracle 8.1.6中就引入的一个全新的概念,为 ... -
ORACLE LOB大对象处理
2010-01-16 21:42 2419ORACLE LOB大对象处理 主要是用来存储大量数据的数据库 ... -
DUMP用法
2010-01-16 09:13 1818一 DUMP():查看表中列在datafile中的存储内容,它 ... -
全角,半角互换
2010-01-12 12:08 1999对于全角和半角互换,oracle 提供了两个函数to_mult ...
相关推荐
android-pullView
DebugView作用: 在debug版的exe直接运行的时候,DebugView.exe可以获取调试信息; DebugView可以将显示的信息保存问log文件; 还有其它的功能,可以查看帮助文档;
systemview电子书systemview电子书systemview电子书systemview电子书systemview电子书systemview电子书systemview电子书systemview电子书systemview电子书systemview电子书systemview电子书
本章的图符库包括了systemview的所有功能图符,可供读者快速查阅。它是一个高度浓缩了的图符功能表,您可以快速选取或查阅所需的图符功能,而不用频繁的翻阅英文使用说明书。
学习systemview强大的助手,可以了解systemview所有图标的作用!!
Power View——卡片.pdf 学习资料 复习资料 教学资源
Dynamic-load-view Overview 中文介绍 Dynamic-load-view can load View in external apk. you can use it to hotfix View or update module in your App. ScreenShot download Demo APK PicUrl Future The ...
它能够在您的本机上或跨往际往路,在不需要作用中的侦错工具情况下,检视和录制侦错工作阶段输出。 DiskExt 显示磁碟区磁碟对应。 Diskmon 这个公用程式会撷取全部的硬碟活动,或是提供系统匣中的软体磁碟...
它能够在您的本机上或跨往际往路,在不需要作用中的侦错工具情况下,检视和录制侦错工作阶段输出。 DiskExt 显示磁碟区磁碟对应。 Diskmon 这个公用程式会撷取全部的硬碟活动,或是提供系统匣中的软体磁碟...
它能够在您的本机上或跨往际往路,在不需要作用中的侦错工具情况下,检视和录制侦错工作阶段输出。 DiskExt 显示磁碟区磁碟对应。 Diskmon 这个公用程式会撷取全部的硬碟活动,或是提供系统匣中的软体磁碟...
有时我们需要在应用中动态改变图片或某一块布局的大小。...这要看你要操作的view在布局文件中的父控件是什么类型的,若父控件是RelativeLayout则需要强制转换为RelativeLayout.LayoutParams,其它类型依次类推。
自定义加载等待View,模拟小球在最低点以一定初速度在重力作用下绕圆环做变速圆周运动的效果(详见:http://blog.csdn.net/l_wwbs/article/details/53408830)。
MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。...
详解介绍Qt中视图框架机制及场景中主要的常用函数作用及用法,是学习者可以对Qt的场景视图有深入的了解。
放在这里作为工具资源备忘。 工具作用是在谷歌浏览器中访问URL地址返回的json数据能否按照json格式展现出来。 相关链接以及安装参考:https://www.cnblogs.com/whycxb/p/7126116.html
view函数的-1参数的作用在于基于另一参数,自动计算该维度的大小 很重要的一点 view函数只能由于contiguous的张量上,具体而言,就是在内存中连续存储的张量。 具体而言,可以参看 ...
” 就相当于 Model,DOM 就相当于 View,Vue 实例 “vm” 则是起连接 Mode 和 View 作用的 ViewModel,因此我们才得以通过数据驱动视图,而不需要关心它是怎么实现的,因为 Vue 已经帮我们做好了一切。 Vue 实
一个Chrome浏览器的插件,提供了将json格式以更加清晰的方式展示的功能,页面的得到json字符串将看起来更加容易,十分的方便。
FastWebView 背景 Android原生WebView有磁盘缓存最大上限,在4.4之前只有10M,在4.4及其之后虽然提升至20M,但对频繁的H5业务场景来说,还是太小了。...不仅浪费用户的流量,也会造成不好的用户体验。...
汉明编码和解码是通信中常用的信道编码,对进一步减少误码传输有一定的作用