视图和表的区别

视图和表的区别
视图和表的区别

1.p226页sql什么人来备份数据库?

答:SQLServer备份数据库是动态的,在进行数据库备份时,sql server允许其他用户继续对数据库进行操作。执行备份操作的用户必须拥有对数据库备份的权限许可,sql server只允许系统管理员、数据库所有者和数据库备份执行者备份数据库。

2.p232 数据库还原的概念是指将数据库备份加载纯数据的过程

答:数据库还原的概念是指将数据库加载到系统中的过程。

3.p3 sql提供的系统数据库和用户数据库

答:sql提供的系统数据库和用户数据库。

4.p93 数据安全保护的四个层次

操作系统的安全性 SQL Server2008的登录安全性 数据库的使用安全性 数据库对象的使用安全性5.四个系统数据库

答:master、model、msdb、resource。

1. master数据库Master数据库用于记录SQL Server实例的所有系统级信息,是SQL Server的核心,不能对其进行直接修改,应当对其定期进行备份,如果Master数据库变得不可用,那么SQL Server数据库引擎将无法启动。

2. model数据库model数据库用作SQL Server 2008实例上创建的所有数据库的模板,若对model数据库进行修改,都将应用于以后创建的用户数据库中。。

3. msdb数据库 msdb数据库用于SQL Server 2008代理计划警报和作业,是SQL Server中的一个W indows服务。

4. resource数据库 resource数据库是一个只读和隐藏的数据库,它包含了SQL Server 2008中的所有系统对象,对于resource数据库是唯一没有显示在其中的系统数据库,这是因为它在sys框架中存在。

6.两种身份验证

1.Windows 身份验证模式

当使用Windows身份验证连接到SQL Server时,Microsoft Windows将完全负责对客户端进行身份验证。

在这种情况下,将按其Windows用户账户来识别客户端。

当用户通过Windows用户账户进行连接时,SQL Server使用Windows操作系统中的信息验证账户名和密码,这是SQL Server默认的身份验证模式

,比混合模式安全的多。

2.混合身份验证模式 混合验证模式允许以SQL Server身份验证模式或者Windows身份验证模式来进行验证。

使用哪个模式取决于在最初的通信时使用的网络库。

如果一个用户使用TCP/IP Sockets进行登录验证,则使用SQL Server身份验证模式;如果用户使用命名管道,则登录时将使用Windows验证模式。

这种模式能更好地适应用户的各种环境。

7.事务的概念及四个原则

事务(TRANSACTION)是由对数据库的若干操作组成的一个逻辑工作单元,这些操作作为要么都执行,要么都不做,是一个不可分割的整体。

事务用这种方式保证数据满足并发性和完整性的要求。使用事务可以避免发生有的语句被执行,而另外一些语句没有被执行,从而造成数据不一致的情况。

事务的处理必须满足四原则,即原子性(A)、一致性(C)、隔离性(I)和持久性(D),简称ACID原则:

原子性(Atomicity):事务必须是原子工作单元,事务中的操作要么全部执行,要么全不执行,不可只完成部分操作。原子性在数据库系统中,由恢复机制来实现;

一致性(Consistency):事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态。数据库一致性的定义是由用户负责的,如前面所述的银行转账,用户可以定义转账前后两个帐户金额之和应该保持不变;

隔离性(Isolation):系统必须保证事务不受其他并发执行事务的影响,即当多个事务同时运行时,各事务之间相互隔离,不可互相干扰。事务查看数据时所处的状态,要么是另一个并发事务修改它之前的状态,要么是另一个并发事务修改它之后的状态,事务不会查看中间状态的数据。隔离性通过系统的并发控制机制实现;

持久性(Durability):一个已完成的事务对数据所做的任何变动在系统中是永久有效的,即使该事务产生的修改是不正确,错误也将一直保持。持久性通过恢复机制实现,发生故障时,可以通过日志等手段恢复数据库信息。 事务四原则保证了一个事务或者成功提交,或者失败滚回,二者必居其一,因此它对数据的修改具有可恢复性。即当事务失败时,它对数据的修改都会恢复到该事务执行前的状态。

8.四个隔离级别

未提交读、已提交读、可重复读、可串行读。

9.一个完整的数据库对象由什么组成

答:表,视图,存储过程,触发器,索引。

10.视图和表之间的区别

表是实实在在得保存数据的实体,写入的数据都保存在表中,而视图是不保存数据的,也没有数据。像上面的老兄说的一样视图就是一条语句,实际上视图从表中去数据。只是给我们的感觉好像直接从表中取得一样。

表可以建立各种触发器,可以建立索引,可以建立主健、约束等。但是视图不能建立这些对象(视图可以建立替代触发器)。

表和视图可以更新,但是视图的更新受到约束。

比如,group by和表连接生成的视图不能更新表是实实在在得保存数据的实体,写入的数据都保存在表中,而视图是不保存数据的,也没有数据。像上面的老兄说的一样视图就是一条语句,实际上视图从表中去数据。只是给我们的感觉好像直接从表中取得一样。

表可以建立各种触发器,可以建立索引,可以建立主健、约束等。但是视图不能建立这些对象(视图可以建立替代触发器)。

表和视图可以更新,但是视图的更新受到约束。

比如,group by和表连接生成的视图不能更新

对于INSERT DELETE UPDATE操作,视图要必须遵守规则

比如INSERT:

所有列必须包含在 INSERT 语句中,即使基表中的列可能为 NULL 或在基表中定义了 DEFAULT 约

不能在 INSERT 语句的 VALUES 子句中指定 DEFAULT 关键字。

INSERT 语句提供的值必须符合在一个成员表的分区列上定义的 CHECK 约束逻辑。

如果一个成员表包含具有标识属性的列,则不能使用 INSERT 语句。

如果一个成员表包含 timestamp 列,则不能使用 INSERT 语句。

如果存在具有同一视图或任一成员表的自联接,则不能使用 INSERT 语句

11.t-sql调用标量函数的方法

12.购买Purchase

13.大题

存储过程

1、创建用户定义函数,对数字进行四舍五入,类似系统函数ROUND,并调用。

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE function MS(@m decimal,@n int)

returns decimal

as

begin

DECLARE@par decimal

IF@m*POWER(10,@n+1)/10%10>=5

SET@par=(@m*POWER(10,@n+1)/10+1)/POWER(10.0,@n)

ELSE

set@par=(@m*POWER(10,@n+1)/10)/POWER(10.0,@n) return(@par)

end

go

print dbo.MS(255.6,2)

print dbo.MS(255.4,2)

2、创建用户定义函数,对字符进行截取,类似系统函数SUBSTIRING,并调用。

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

create function cut(@maco varchar(100))

returns varchar(max)

as

begin

while patindex('%[^a-z]%',@maco)> 0

begin

set@maco=stuff(@maco,patindex('%[^a-z]%',@maco),1,'') end

return@maco

end

go

print dbo.cut('asdh23798>>>>:ldsj')

数据库实验报告_数据库的视图和图表的定义及使用

数据库实验报告_数据库的视图和图表的定义及使用贵州大学实验报告 学院:计信学院专业:网络工程班级:101 姓名学号实验组 实验时间 05.30 指导教师罗昊成绩实验项目名称数据库的视图和图表的定义及使用实 验使学生掌握SQL Server中的视图创建向导和图表创建向导的使用方法,加深对视目图和SQL Server图表作用的理解。 的 实本实验属于验证型实验,通过实验,加强对课堂讲授知识的理解。开始实验前,必验须进行预习,写出实现所有查询要求的SQL语句。实验过程中,先集中由老师进行具体要要求和注意事项的讲解,然后各自独立在机器上完成实验。实验过程中出现问题,在实求验指导老师帮助下解决。 1、创建视图 假设在图书_读者数据库中已经建立了图书、读者和借阅3个表,它们的结构为: 图书(书号,类别,出版社,作者,书名,定价); 借阅(书号,读者借书证号,借阅日期); 读者(借书证号,姓名,单位,性别,电话) 实如果要在上述3个表的基础上建立一个视图,取名为读者_VIEW,其操作用SQL语验句表示为: 原CREATE VIEW 读者_VIEW AS SELECT 图书.*,借阅.* FROM 图书,借阅,读者理 WHERE 图书.书号=借阅.书号 AND 借阅.读者借书证号=读者.借书证号;

利用SQL Srever 2000中提供的视图创建向导,来创建读者_VIEW视图。 2、查看和修改视图 视图创建好后,就可以利用它进行查询信息了。如果发现视图的结构不能很好地满 足要求,还可以在企业管理器中对它进行修改 3、删除视图 删除视图的方法是:首先要在企业管理器中,将鼠标指针指向数据库中的视图文件 夹,单击右键。在随后出现的弹出菜单中,选择“删除”项,会出现删除视图对话框。 选中欲删除的视图,单击“全部移出”按钮,被选中的视图就会从视图中被移出。 4、创建关联表 假如要在图书_读者数据库中建立一个读者_借阅_图书关系,要求该图表包括图书、 借阅和读者三个表,并包括它们之间的“图书.书号=借阅.书号 AND 借阅.读者借书证 号=读者.借书证号”的外码与被参照表之间的关联,即用关联表实现上述视图的功能。 在企业管理器中通过向导建立数据库关联表。 5、编辑数据库图表 在企业管理器中,展开数据库图表所属的服务器、数据库文件夹、数据库以及关系

Oracle EBS常用表和视图

fnd_user 系统用户表 fnd_application 应用信息表 FND_PROFILE_OPTIONS_VL 系统配置文件 fnd_menus 菜单 fnd_menu_entries_tl FND_NEW_MESSAGES 消息表 FND_FORM 表单表 FND_CONCURRENT_PROGRAMS_VL 并发程序视图 FND_CONCURRENT_PROGRAMS_TL FND_CONCURRENT_PROGRAMS FND_DESCR_FLEX_COL_USAGE_VL FND_DESCR_FLEX_COL_USAGE_TL FND_DESCR_FLEX_COLUMN_USAGES FND_EXECUTABLES_FORM_V 可执行并发程序视图FND_EXECUTABLES_TL FND_EXECUTABLES FND_DESCRIPTIVE_FLEXS FND_CONC_REQ_SUMMARY_V 并发请求视图FND_CONCURRENT_REQUESTS FND_RESPONSIBILITY 职责表

FND_RESPONSIBILITY_VL 职责FND_USER_RESP_GROUPS 用户职责 fnd_flex_value_sets 值集表 FND_FLEX_VALUES FND_IREP_ALL_INTERFACES 接口表 FND_IREP_CLASSES Fnd_Irep_Classes_Tl fnd_territories_vl 国家视图 fnd_log_messages 日志表 fnd_form_functions 功能 FND_DOCUMENT_SEQUENCES 单据序列 FND_DOC_SEQUENCE_ASSIGNMENTS 序列分配 fnd_id_flexs 关键弹性域定义表 FND_ID_FLEX_STRUCTURES 弹性域结构表 FND_ID_FLEX_SEGMENTS 弹性域段表 fnd_descriptive_flexs 描述性弹性域属性表 FND_DESCR_FLEX_CONTEXTS 弹性域列类别表 FND_DESCR_FLEX_COLUMN_USAGES 弹性域列类别属性表FND_FLEX_VALUE_SETS 值集表 FND_FLEX_VALUES 值表 Fnd_Flex_Values_Tl 值描述表

SQL基本表查询基本表、索引与视图的定义、删除和修改

数据库实验报告 实验二 实验题目:SQL基本表查询基本表、索引与视图的定义、 删除和修改 实验类型:验证 实验地点:软件实验室二 指导老师:*** 专业班级:计算机科学与技术系网络工程方向***班姓名:***

2013年9月29日实验类型:验证实验地点:软件实验室二 一、实验题目 SQL 基本表查询基本表、索引与视图的定义、删除和修改 二、实验目的和要求 使学生熟悉SQL Server的企业管理器的用法,初步了解SQL Server查询分析器的使用方法,熟悉SQL SERVER的常用数据类型,加深对SQL和SQL语言的查询语句的理解。 熟练掌握简单表、索引与视图的创建与修改。 三、实验内容 1. 基本表的建立: a)建立一个“学生表student”,它由学号xh、姓名xm、性别xb、 年龄nl、所在系xi五个属性组成,其中学号属性为主属性,并 且其值是唯一的。 b)建立“课程course”包括课程号kch,课程名称kcmc,先修课程 xxkc,学分xf,要求建立主键课程号 c)建立“选课表sc”包括学号xh,课程号kch,成绩grade,要求 建立主键及与student及sc表联接的外键 2. 基本表的修改: d)在选课表中增加一列“任课教师rkjs” e)删除选课表中rkjs一列 f)将student表的xm一列允许空值的属性更改成不允许为空,将 列xm的长度由char(8)改为char(10) g)建立一个临时表,再将其删除 3. 索引的建立与删除: a) 在学生表中以学生的姓名建立降序索引 b) 在课程表中以课程名建立升序,以学分建立降序索引 c) 删除以上索引 4. 建立、删除和更新视图: a) 建立数学系学生的视图,并要求进行修改和插入操作时仍需保证 该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。 CREATE VIEW C_Student AS SELECT Sno, Sname, Sage, Sdept FROM Students WHERE Sdept=’数学’ WITH CHECK OPTION b) 删除视图 在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学

SQL基本表查询基本表、索引与视图的定义、删除和修改课程设计

数据库实验报告 课程设计 实验题目:教务辅助管理系统 指导老师:李萍 专业班级:计算机科学与技术系1001班 组长:陈嘉斌(2010100137) 组员:刘瑞(20101001) 陈振北(20101001) 陈才(20101001) 2012年12月25日 一、实验题目 教务辅助管理系统

二、实验目的和要求 学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库管理系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库的目的。 三、实验内容 1、主要的数据表 教师基本信息表,课程表,教室资源表等 2、功能模块 1)对上课教师基本信息进行管理。 2)对全院开设的课程进行管理。 3)录入教师基本上课信息。 4)实现自动排课功能。 5)计算工作量 6)能够进行各种数据统计。 7)能够输出相应的报表。 8)具有数据备份和数据恢复功能。 四、实验步骤 1、数据库的ER图: 2.数据库的字段分析 登录表:

课程表: 部门表: 教师表: 中间表:

2.通过Powerdesigner创建数据库的模型,并建立关系,如图: 连接数据源:

3.连接数据库,因为本程序所用的是mysql数据库,所以这里只体现mysql的连接方式,生成一个.sql的文件,并把其导入mysql数据库,如图:

4.在程序中建立数据库的连接,这里所用的就是jdbc连库。其主要实现代码为:配置文件c3p0-config.xml中的代码: jdbc使用库中的代码为: 数据操作层的操作如下: 显示所有老师的信息,其中是采用多表连接查询:

数据库-视图归纳

什么是视图? 视图是从一个或多个表(或视图)导出的表 使用视图有什么优点? 答:1.为用户集中数据,简化用户的数据查询和处理 2.屏蔽数据库的复杂性 3.简化用户权限的管理 4.便于数据的共享 5.可以重新组织数据以便输出到其他应用程序中 视同和表有什么区别? 视图是一张虚表,视图所对应的数据不进行实际存储,不占用存储空间,表是一张实表,表所对应的数据进行实际存储,占用存储空间 视图可以用于界面方式创建和命令方式创建,本章着重于命令方式创建命令方式创建视图格式如下: CREATE VIEW 视图名【视图列名1,视图列名2】 AS 查询语句 视图和表一样可以用作查询,更新,修改和删除 例如 查找平均成绩在80分以上学生的学号和平均成绩 CREATE VIEW CS_CJ (学号,平均成绩) AS SELECT 学号,AVG(成绩) FROM CJB GROUP BY 学号

SELECT 学号,平均成绩 FROM CS_CJ WHERE 平均成绩>=80 更新视图的作用? 通用更新视图(包括插入、修改和删除)数据可以修改基本数据;但并不是所有的视图都可以更新,只有对满足可更新条件的视图,才能进行更新。 哪些视图可更新 1.创建视图的SELECT语句中没有聚合函数,且没有TOP、GROUP BY、UNION子句 及DISTINCT关键字 2.创建视图的SELECT 语句中不包括从基本表列通过计算所得的列 3.创建视图的SELECT语句的FROM句子中至少要包含一个基本表 例如向CS_XS视图中插入以下记录 (‘081115’,’刘明仪’,1,’1998-3-2’,’计算机’,50,NULL) INSERT INTO CS_XS VALUES (‘081115’,’刘明仪’,1,’1998-3-2’,’计算机’,50,NULL) 例如:将CS_KC视图中学号为081101的学生的101号课程成绩改为80 UPDATE CS_KC SET 成绩=80 WHERE 学号=’081101’ AND 课程号=’101’ 修改视图,举例说明 例:将CS_SX视图修改为只包含计算机专业学生的学号、姓名和总学分 ALTER VIEW CS_XS AS SELECT 学号,姓名,总学分 FROM XSB WHERE 专业=’计算机’

数据库表视图的创建与维护实验

北京邮电大学 实验报告 课程名称数据库系统原理 实验名称数据库表/视图的创建与维护实验 计算机学院网络工程11班 薛玥 指导教师吴起凡 成绩 2014-3-27

实验目的 1.掌握将E-R图转换为数据库逻辑模式(关系表)的方法。 2.通过进行数据库表的建立操作,熟悉并掌握在Microsoft SQL Server数据库中建立表的方法,理解关系数据库表的结构,巩固SQL标准中关于数据库表的建立语句。 3.通过对Microsoft SQL Server数据库中建立、维护视图的实验,熟悉Microsoft SQL Server数据库中建立和维护视图的方法,理解和掌握视图的概念。 4.掌握从Excel表向Microsoft SQL Server关系数据库导入数据的方法,利用实 际数据建立GSM网络配置数据库。 ·实验环境 采用Microsfot SQL Server2005数据库管理系统作为实验平台; 个人独立完成此实验。 ·实验内容 将本次试验大致分为一下几个内容: 1.根据上次《GSM移动通信网络配置数据库》相关背景资料及上次试验对于GSM网络各个实体间的关系,将数据需求转化为E-R图; 2.将E-R图转化为逻辑模式,在转化的时候要注意表结构及属性,以及一些primary key的选择,以及键之间的约束关系; 3.接下来,将将逻辑模式转化为物理模式。转化成物理模型的方式主要有以下 三种,1)写好create table、create view等命令的SQL脚本,利用脚本文件一次性生成这些表和视图,然后在Microsoft SQL Server中打开SQL脚本文件并执行;2)把创建表和视图的脚本语句分成一条一条SQL语句执行;3)使用SQL Server所提供的功能,自动创建表和视图。以上说的这三种方法,我都做了尝试,会在后面详细阐述; 3.视图定义: 1)创建单表上的视图: a.在表“小区基本信息”上创建“LAC号为14121的小区基本位置信息” 视图CellInfo,属性包括(CellID、所属地区、LAC号、经度、纬度)。 b.在表“20个小区一周分钟级话务数据”上创建“全速率话务量平均值大于23的小区话务量数据信息”视图CellCallInfo,属性包括(CellID、平均半速率话务量率、平均拥塞率)。 2)创建多表上的视图:

实验五:数据库的视图和图表的定义及使用(20210103123300)

**大学实验报告

2、提高操作实验 将自设计的数据库应用项目中子模式, 用SQL 语句描述其视图定义,并在SQLServer 企业管理器中,用视图创建向导创建这些视图。 1、 写出实现所有操作要求的 SQL 语句。 2、 创建、查看、修改和删除视图。 3、 创建、编辑和删除数据库图表。 --建库 use master go if exists( select * from sysdatabases where name='ccb' ) drop database ccb go create database ccb go --切换数据库 use ccb go --建图书表 if exists (select * from sysobjects drop table Books go create table Books ( BookId varchar (50) primary key , Type varchar ( 50), Press varchar ( 50) , Author varchar (50), BookName varchar (50), Price money ); go --建读者表 实 验 内 容 where n ame ='Books' )

if exists (select drop table Reader go create table Reader ( from sysobjects where n ame='Reader' ) ReaderId varchar (50) primary key , Name varchar ( 50) Un it varchar ( 50) Sgender char ( 10) check ( Sgender ='男' or Sgender ='女'), Tel varchar (50) ); go * from sysobjects where n ame ='Borrow' drop go table Borrow create table Borrow ( BookId varchar ( 50), ReaderId varchar ( 50), Date DateTime , key ( BookId , ReaderId ) alter table Borrow add constraint FK Borrow Books foreig n key (BookId ) referen ces Books ( BookId ) alter table Borrow add con stra int FK Borrow Reader foreig n key (ReaderId ) refere nces Reader (ReaderId ) in sert select '200215121' ,'李勇' ,'CS', '男’, ,'888888888' union select '200215122' ,'刘晨' ,'MA', '女'. ,'857988888' union select '200215123' ,'王明' ,'MA', '女'. ,'999999999' union select '200215124' ,'张力' ,'CS', '女'. ,'999999999' union select '200215125' ,'李小' ,'IS', '男’, ,'999999999' union select '200215126' ,'杜绝’ ,'IS', '女'. ,'999999999' 建借阅表 if exists (select primary into Reader

视图的定义及优点

1、视图的定义及优点 定义:是从一个或者几个基本表导出的表,是用户可以从一个特定的角度来查看数据库中的数据,它与基本表不同,是一个虚表,即视图锁对应的数据不进行实际存储。 优点:视图能够集中数据,简化用户的数据查询和处理。视图便于用户共享数据。视图提高了数据的逻辑独立性。视图能够对机密数据提供安全保护。 2、三级模式二级映像的功能 通过三级模式提供的耳机映像保证了数据库系统中能够具有较高的逻辑独立性和物理独立性。 3、数据模型的三要素: 数据结构,数据操作,完整性约束条件 4、数据库安全性的控制方法 用户标识和鉴别,用户存取权限控制,视图机制,审计方法,数据加密 5、数据库系统的特点 数据结构化,数据的共享性高,冗余度低,易扩充,数据独立性高,数据由DBMS 同意管理和控制 6、基本封锁类型及含义 排他锁:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务不能对A加任何类型锁,知道T释放A锁,才能对A进行封锁和其他读取操作,从而保证其他事务在T释放A上的锁前不能对A进行读取和修改。排他锁实质上是保证事务对数据的独占性,排除其他事务对其知性过程的干扰 共享锁:事务T对某数据A建立了共享锁,则此时事务T都能对数据A进行读操作,但不能进行修改和其他操作,而其他事务只能对数据A加S锁不能加X锁,即其他事务只能对数据A进行读操作。共享锁实质上是保证多个事务可以同时读A,在A上的共享锁被释放前。都不能写A 7、两段锁协议的概念 两段锁协议就是在对任何数据进行读写之前,事务首先要获得对该数据的封锁,在释放一个封锁之后,事务不再获得任何其他封锁,即一个事务被分为两个阶段 扩展阶段:事务可以申请封锁,但是不能接触任何已获得的封锁 收缩阶段:事务可以释放封锁,但是不能申请新的封锁 8、数据库设计的步骤,任务 1应用规划进行系统的必要性和可行性分析 2 需求分析收集分析信息3 概念设计形成独立于具体DBMS的概念模型 4 逻辑设计将概念结构转化成某个DBMS所支持的数据模型,并对其进行优化 5 物理设计为逻辑数据模型选取一个最适合的应用环境的物理结构 6 数据库实施:建立实际数据库结构装入实验数据对应用程序进行调试转入实际数据7运行维护:维护数据库的安全性和完整性检测并改善书库库运行性能根据用户要求对数据库现有功能运行扩充集市改正运行中发现的系统错误9、关系模型的三类完整性规则 实体完整性:若属性A是基本关系R的主属性,则属性A不能取空值。 参照完整性:若属性F是基本关系R的外键,它与基本关系S的主键为Ks,相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元素在F的值必须为a或取空值b 或等于S中某个元组的主码值 用户定义完整性:限定属性的取值范围,即对值域的约束,所以在用户定义完整性中最常见的是域完整性约束

Oracle 数据库视图与基表的关系

Oracle 数据库视图与基表的关系 一:首先解释什么是视图:视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表,与真实表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间,并且基表的变化会导致视图相应的改变。 二:视图的创建: CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中: OR REPLACE:若所创建的试图已经存在,Oracle自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名; subquery:一条完整的SELECT语句,可以在该语句中定义别名可以挑选某个表中你需要的属性; WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY :该视图上不能进行任何DML操作。 三:视图的修改:直接利用前边创建时的or replaece 重建即可。 四:视图上的DML 操作: 1.一般简单视图,也就是基表只有一个的视图,是可以通过修改视图来修改基表的,Oracle是可以通过视图来修改Base table的。所谓base table就是用来构建视图的表,也就是视图的数据来源表。但是这种修改是有条件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_cnst; 如果有这个限制,那么通过视图v_emp 插入数据的deptno字段的值必须是10,否则就会报“ORA-01402: 视图WITH CHECK OPTIDN 违反where 子句”的异常。 2.针对复杂视图,也就是基表有多个表,通过内连接查询建立的视图,只能通过视图来修改key_preserved表, 什么是Key-Preserved Table呢.Oracle给出的定义是: A table is key preserved if every key of the table can also be a key of the result of the join. It is not necessary that the key or keys of a table be selected for it to be key preserved. It is sufficient that if the key or keys were selected, then they would also be key(s) of the result of the join. 如果某一个表的主键可以作为这个join结果(view通常是几个表的join结果)的主键,那么这个表就是key preserved table。 这个表的主键并非一定要出现在select出来的结果集中(select list里面),但是如果其出现在结果集中,那么它必须可以满足作为这个结果集的主键的要求。 通过下面的例子来解释: create view liuwenhe as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.empno in (10,30) and e.deptno = d.deptno;emp表的主键是empno,dept表的主键

索引和视图的区别

SQL Server 索引和视图 ?索引 1、什么是索引 索引就是数据表中数据和相应的存储位置的列表,利用索引可以提高在表或视图中的查找数据的速度。 2、索引分类 数据库中索引主要分为两类:聚集索引和非聚集索引。SQL Server 2005还提供了唯一索引、索引视图、全文索引、xml索引等等。聚集索引和非聚集索引是数据库引擎中索引的基本类型,是理解其他类型索引的基础。 # 聚集索引 聚集索引是值表中数据行的物理存储顺序和索引的存储顺序完全相同。聚集索引根据索引顺序物理地重新排列了用户插入到表中的数据,因此,每个表只能创建一个聚集索引。聚集索引经常创建在表中经常被搜索到的列或按顺序访问的列上。在默认情况下,主键约束自动创建聚集索引。 # 非聚集索引 非聚集索引不改变表中数据列的物理存储位置,数据与索引分开存储,通过索引指向的地址与表中的数据发生关系。 非聚集索引没有改变表中物理行的位置,索引可以在以下情况下使用非聚集索引: 一、如果某个字段的数据唯一性比较高 二、如果查询所得到的数据量比较少 聚集索引和非聚集索引的区别: 聚集索引非聚集索引

每个表只允许创建一个聚集索引最多可以有249个非聚集索引 物理的重排表中的数据以符合索引约束创建一个键值列表,键值指向数据在数据页中的位置 用于经常查找数据的列用于从表中查找单个值的列 # 其他类型索引 除了以上索引,还有以下类型索引: a、唯一索引:如果希望索引键都不同,可以创建唯一索引。聚集索引和非聚集索引都可以是唯一索引。 b、包含新列索引:索引列的最大数量是16个,索引列的字节总数的最高值是900。如果当多个列的字节总数大于900,切又想在这些劣种都包含索引是,可以使用包含性列索引 c、视图索引:提供视图查询效率,可以视图的索引物理化,也就是说将结果集永久存储在索引中,可以创建视图索引。 d、XML索引:是与xml数据关联的索引形式,是XML二进制blob的已拆分持久表示形式 e、全文索引:一种特殊类型的基于标记的功能性功能,用于帮助在字符串中搜索赋值的词 3、创建索引 语法 create [unique] [clustered | noclustered] index index_name on table_name (column_name ...) [with fillfactor=x] unique唯一索引 clustered聚集索引 noclustered非聚集索引 fillfactor填充因子大小,范围在0-100直接,表示索引页填满的空间所占的百分比。 示例

数据库视图作用

视图有以下几方面的功能: 1。简化应用程序。 视图做为数据库中的一种实体,实际上存在的只是它的脚本,而它的内容并不真正的单独存在一份。一般,可以对复杂的应用程序从功能角度进行分析,将可以与其它的应用程序共用的那一部分,分离出来。对这部分功能,视具体情况可做成不同的数据库实体(如过程),有些是可以做成视图的。这样,上层的应用程序就可以从视图中取数据了。 还有,可以把对远地数据库的访问封装在视图中,使之对上层应用程序透明。 2。可以对UNION 后的记录集排序。 直接对以下语句的结果排序,是不可能的(至少我不知道怎么直接排序)。 select a.id id from a union select b.id id from b; 所以把以上语句作成视图后,就可以了。设视图名为A_B: select id from A_B order by id; 3。可以实现一定的权限控制。 可以根据需要,对表中的一部分内容做一个视图,以供一定的角色使用。可以对表中的一部分记录做一个视图(纵向),也可以对一个表中的一部分字段做一个视图(横向),或二者兼而有之。 暂时想了这么多,希望大家多多指正与补充。 -------------------------------------------------------------------- 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。 对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。 一、视图的作用 * 简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。 * 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上: 使用权限可被限制在基表的行的子集上。 使用权限可被限制在基表的列的子集上。 使用权限可被限制在基表的行和列的子集上。

视图和查询的区别

1:什么是视图 2:视图和查询的区别 3:视图的优点 4:如何创建和管理视图 5:如何通过视图修改基本表的数据 6:如何通过视图实现数据的安全性 A:什么是视图: 视图(view):从一个或几个基本表中根据用户需要而做成一个虚表 1:视图是虚表,它在存储时只存储视图的定义,而没有存储对应的数据 2:视图只在刚刚打开的一瞬间,通过定义从基表中搜集数据,并展现给用户 B:视图与查询的区别: 视图和查询都是用由sql语句组成,这是他们相同的地方,但是视图和查询有着本质区别: 它们的区别在于:1:存储上的区别:视图存储为数据库设计的一部分,而查询则不是. 2:更新限制的要求不一样 要注意:因为视图来自于表,所以通过视图可以间接对表进行更新,我们也可以通过update语句对表进行更新,但是对视图和查询更新限制是不同的,以下我们会知道虽然通过视图可以间接更新表但是有很多限制. 3:排序结果:通过sql语句,可以对一个表进行排序,而视图则不行. 比如:创建一个含有order by子句的视图,看一下可以成功吗? C:视图的优点: 为什么有了表还要引入视图呢?这是因为视图具有以下几个优点: 1:能分割数据,简化观点 可以通过select和where来定义视图,从而可以分割数据基表中某些对于用户不关心的数据,使用户把注意力集中到所关心的数据列.进一步简化浏览数据工作. 2:为数据提供一定的逻辑独立性 如果为某一个基表定义一个视图,即使以后基本表的内容的发生改变了也不会影响“视图定义”所得到的数据 3:提供自动的安全保护功能 视图能像基本表一样授予或撤消访问许可权. 4:视图可以间接对表进行更新,因此视图的更新就是表的更新 D:视图的创建和管理 视图的创建 1:通过sql语句 格式:create view 视图名 as select 语句 试一试:分别创建关于一个表或多个表的视图[因为视图可以来自于多表] 2:通过企业管理器 说明:1:在完成视图的创立之后,就可以像使用基本表一样来使用视图 2:在创建视图时,并非所有的select子查询都可用 如:compute和compute by,order by[除非与top一起连用] 3:但在查询时,依然都可以用在创建时禁用的select子查询

常用的oracle表和视图

1、oracle中查询某个表在那个存储过程中用到了 例如查询t_lea_waybill在那个存储过程中用到了: select 过程名称, min(a.line) 首次出现行数 from user_source a where a.TEXT like'%t_lea_waybill%' group by ; 这样当我们不知道某个表在那个存储过程里面用到的时候,我们就不必要把每个存储过程打开在里面搜,直接用这个语句就可以查到,可以提高效率。 2、oracle中查询某个存储过程用到了那些表 select de.referenced_name from user_dependencies de where ='BI_OPER_REPORT'and de.referenced_type='TABLE';

3、oracle中查询某个存储过程用到了那些序列 select de.referenced_name from user_dependencies de where ='BI_OPER_REPORT'and de.referenced_type='SEQUENCE'; 4、oracle中查询某个字段属于哪个表 select table_name, owner from dba_tab_columns t where t.COLUMN_NAME = upper('MENUNAME');

5、oracle中查询某个表的列数 select count(*) from user_tab_columns a where table_name = upper('ac_menu'); 6、oracle中查询某个表字段的类型 select a.COLUMN_NAME, a.DATA_TYPE from user_tab_columns a where table_name = upper('ac_menu');

视图和表的区别

表是实实在在得保存数据的实体,写入的数据都保存在表中,而视图是不保存数据的,也没有数据。像上面的老兄说的一样视图就是一条语句,实际上视图从表中去数据。只是给我们的感觉好像直接从表中取得一样。 表可以建立各种触发器,可以建立索引,可以建立主健、约束等。但是视图不能建立这些对象(视图可以建立替代触发器)。 表和视图可以更新,但是视图的更新受到约束。 比如,group by和表连接生成的视图不能更新表是实实在在得保存数据的实体,写入的数据都保存在表中,而视图是不保存数据的,也没有数据。像上面的老兄说的一样视图就是一条语句,实际上视图从表中去数据。只是给我们的感觉好像直接从表中取得一样。 表可以建立各种触发器,可以建立索引,可以建立主健、约束等。但是视图不能建立这些对象(视图可以建立替代触发器)。 表和视图可以更新,但是视图的更新受到约束。 比如,group by和表连接生成的视图不能更新 对于INSERT DELETE UPDATE操作,视图要必须遵守规则 比如INSERT: 所有列必须包含在 INSERT 语句中,即使基表中的列可能为NULL 或在基表中定义了 DEFAULT 约 不能在 INSERT 语句的 VALUES 子句中指定 DEFAULT 关键字。

INSERT 语句提供的值必须符合在一个成员表的分区列上定义的 CHECK 约束逻辑。 如果一个成员表包含具有标识属性的列,则不能使用 INSERT 语句。 如果一个成员表包含 timestamp 列,则不能使用 INSERT 语句。 如果存在具有同一视图或任一成员表的自联接,则不能使用 IN SERT 语句

数据库视图

数据库视图、索引学习报告 一、学习目标: 1.掌握索引的用途,优点和缺点。了解建立索引的目的是加快对表中记录的查找或排序。 2.理解视图的基本概念和作用,掌握视图的创建、查看及删除操作。 二、学习内容: 1.索引: 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引是用来定位的。 索引就是数据表中数据和相应的存储位置的列表,利用索引可以提高在表或视图中的查找数据的速度。 索引分为聚簇索引和非聚簇索引两种,聚簇索引,是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。建立索引的目的是加快对表中记录的查找或排序。 聚簇索引:聚集索引是值表中数据行的物理存储顺序和索引的存储顺序完全相同。聚集索引根据索引顺序物理地重新排列了用户插入到表中的数据,因此,每个表只能创建一个聚集索引。聚集索引经常创建在表中经常被搜索到的列或按顺序访问的列上。在默认情况下,主键约束自动创建聚集索引。 非聚簇索引:非聚集索引不改变表中数据列的物理存储位置,数

据与索引分开存储,通过索引指向的地址与表中的数据发生关系。 非聚集索引没有改变表中物理行的位置,索引可以在以下情况下使用非聚集索引:1、如果某个字段的数据唯一性比较高2、如果查询所得到的数据量比较少。 为表设置索引:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。 创建索引可以大大提高系统的性能。 优点:第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 缺点:第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索

数据库视图的定义及使用

数据库视图的定义及使用 实验目的: 掌握视图的用法,加深对视图作用的理解。 实验内容: 1、创建、修改和删除视图。 2、利用视图进行查询。 实验步骤: 说明:对视图的创建、修改和删除均可在可视化界面下操作。 在SQL Server企业管理器中,依次选择数据库――XSGL――视图――鼠标右击――新建视图。然后通过单击按钮或右击鼠标第一格的空白区域,选择弹出菜单中的“添加表”。然后拖拽主键到外键,建立关联,点击字段左边的方框选择输出字段。 仅以命令方式来操作: 一、视图的创建: 1.创建信息系学生信息的视图: create view IS_Student as select sno, sname, sage from student where sdept='IS'

2. 创建信息系选修了1号课程的学生的视图: create view IS_S1 as select student.sno, cno, grade from student, sc where student.sno=sc.sno and sdept='IS' and cno='1' 3. 建立信息系选修了1号课程且成绩在90分以上的学生的视图: create view as IS_S2 as select * from IS_S1 where grade>=90 4. 创建一个反映学生出生年份的视图: create view BT_S(sno, sname, 出生年份) as select sno, sname, year(date())- sage from student 5. 将所有女生的记录定义为一个视图: create view F_student as select * from student where ssex='女'

相关文档
最新文档