oracle数据库管理系统的逻辑组成.ppt
《oracle数据库管理系统的逻辑组成.ppt》由会员分享,可在线阅读,更多相关《oracle数据库管理系统的逻辑组成.ppt(51页珍藏版)》请在三一办公上搜索。
1、Oracle数据库管理系统的逻辑结构,Owner:庞家进,Oracle逻辑结构(用户层),Oracle 视图(View),1,Oracle 表(Table),2,Oracle 索引(Index),3,Oracle 序数(Sequence),4,Oracle 视图(View),查看视图信息 使用数据字典视图 dba_viewsDBA视图描述数据库中的所有视图 all_viewsALL视图描述用户“可访问的”视图 user_viewsUSER视图描述“用户拥有的”视图 dba_tab_columnsDBA视图描述数据库中的所有视图的列(或表的列)all_tab_columnsALL视图描述用户“可
2、访问的”视图的列(或表的列)user_tab_columnsUSER视图描述“用户拥有的”视图的列(或表的列)dba_updatable_columns显示数据库所有视图中的所有列的可更新状态 all_updatable_columns显示用户可访问的视图中的所有列的可更新状态 user_updatable_columns显示用户拥有的视图中的所有列的可更新状态,Oracle 视图(View),创建视图完整语法:create or replace force view schema.view_name(column1,column2,.)as select.with check option
3、constraint constraint_name with read only;例子:create view vw_emp_check as select empno,ename,job,hiredate,deptno from emp where deptno=10 with check option constraint vw_emp_chk;-创建检查视图:对通过视图进行的增删改操作进行检查,要求增删改操作的数据必须是select查询所能查询到的数据。,Oracle 视图(View),or replace:如果存在同名的视图,则使用新视图替代已有的视图 force:强制创建视图,不考
4、虑基表是否存在,也不考虑是否具有使用基表的权限 column1,column2,.:视图的列名,列名的个数必须与select查询中列的个数相同;如果select查询包含函数或表达式,则必须为其定义列名.此时,既可以用column1,column2指定列名,也可以在select查询中指定列名.with check option:指定对视图执行的DML操作必须满足“视图子查询”的条件即,对通过视图进行的增删改操作进行检查,要求增删改操作的数据,必须是select查询所能查询到的数据,否则不允许操作并返回错误提示.默认情况下,在增删改之前并不会检查这些行是否能被select查询检索到.constra
5、int constraint_name 定义约束的名字 with read only:创建的视图只能用于查询数据,而不能用于更改数据.与with check option 是排斥的,Oracle 视图(View),1.3 删除视图 可以删除当前模式中的任何视图;如果要删除其他模式中的视图,必须拥有DROP ANY VIEW系统权限;视图被删除后,该视图的定义会从词典中被删除,并且在该视图上授予的“权限”也将被删除。视图被删除后,其他引用该视图的视图及存储过程等都会失效。示例1:drop view vw_test_tab;,Oracle 视图(View),视图的重新编译语法:alter view
6、 视图名 compile;作用:当视图依赖的基表改变后,视图会“失效”。为了确保这种改变“不影响”视图和依 赖于该视图的 其他对象,应该使用 alter view 语句“明确的重新编译”该视图,从而在运行视图前发现重新编译的错误。视图被重新编译后,若发现错误,则依赖该视图的对象也会失效;若没有错误,视图会变为“有效”。权限:为了重新编译其他模式中的视图,必须拥有alter any table系统权限。注意:当访问基表改变后的视图时,oracle会“自动重新编译”这些视图。例子:alter table test_tab modify(c2 varchar2(30);修改c2列的长度 select
7、 last_ddl_time,object_name,status from user_objects where object_name=V_TEST_TAB;视图的状态:失效,Oracle 视图(View),在视图上执行DML操作的步骤和原理 第一步:将针对视图的SQL语句与视图的定义语句(保存在数据字典中)“合并”成一条SQL语句 第二步:在内存结构的共享SQL区中“解析”(并优化)合并后的SQL语句 第三步:“执行”SQL语句示例:create view v_emp as select empno,ename,loc from employees emp,departments dep
8、t where emp.deptno=dept.deptno and dept.deptno=10;当用户执行如下查询语句时:select ename from v_emp where empno=9876;oracle将把这条SQL语句与视图定义语句“合并”成如下查询语句:select ename from employees emp,departments dept where emp.deptno=dept.deptno and dept.deptno=10 and empno=9876;然后,解析(并优化)合并后的查询语句,并执行查询语句,Oracle 视图(View),如果创建连接视
9、图的select查询“不包含”如下结构,并且遵守连接视图的“更新准则”,则这样的连接视图是“可更新”的:之一:集合运算符(union,intersect,minus)之二:DISTINCT关键字 之三:GROUP BY,ORDER BY,CONNECT BY或START WITH子句 之四:子查询 之五:分组函数 之六:需要更新的列不是由“列表达式”定义的 之七:基表中所有NOT NULL列均属于该视图,Oracle 视图(View),连接视图的更新准则 insert准则:在insert语句中不能使用“非键值保存表”中的列(包括“连接列”);执行insert操作的视图,至少应该“包含”键值保存
10、表中所有设置了约束的列 如果在定义连接视图时使用了WITH CHECK OPTION 选项,则“不能”针对连接视图执行insert操作 update准则 键值保存表中的列是可以更新的;如果在定义连接视图时使用了WITH CHECK OPTION 选项,则连接视图中的连接列(一般就是“共有列”)和基表中的“其他共有列”是“不可”更新的,连接列和共有列之外的其他列是“可以”更新的 delete准则 如果在定义连接视图时使用了WITH CHECK OPTION 选项,依然“可以”针对连接视图执行delete操作 如果连接视图中的一个“基表的键”(主键、唯一键)在它的视图中仍然存在,并且“基表的键”仍
11、然是“连接视图中的键”(主键、唯一键);即,某列在基表中是主键|唯一键,在视图中仍然是主键|唯一键 则称这个基表为“键值保存表”。,Oracle 表(Table),数字字典(user_objects)dba_tablesUser_tablesall_tablesdba_tab_columnsuser_tab_columnsall_tab_columns,Oracle 表(Table),数据表的介绍 数据表是数据库中一个非常重要的对象,是其他对象的基础。没有数据表,关键字、主键、索引等也就无从谈起。在数据库画板中可以显示数据库中的所有数据表,创建数据表,修改表的定义等数据表是数据库中一个非常重要
12、的对象,是其他对象的基础。数据表(或称表)是数据库最重要的组成部分之一。数据库只是一个框架,数据表才是其实质内容。根据信息的分类情况,一个数据库中可能包含若干个数据表。数据表是用行(字段)和列(属性)构成的一张二维表。,Oracle 表(Table),一般方式创建表 表名最大长度为30个字符。在同一个用户下(同一个数据库),表不能重名,但不同用户表的名称可以相重。另外,表的名称不能使用Oracle的保留字。在一张表中最多可以包含2000列。语法:CREATE TABLE 表名(列名 数据类型 DEFAULT 表达式 COLUMN CONSTRAINT,TABLE CONSTRAINT,TABL
13、E_PARTITION_CLAUSE);DEFAULT 表达式:用来定义列的默认值。COLUMN CONSTRAINT:用来定义列级的约束条件。TABLE CONSTRAINT:用来定义表级的约束条件。TABLE_PARTITION_CLAUSE:定义表的分区子句。,Oracle 表(Table),通过子查询创建表 如果要创建一个同已有的表结构相同或部分相同的表语法:CREATE TABLE 表名(列名)AS SQL查询语句;该语法既可以复制表的结构,也可以复制表的内容,并可以为新表命名新的列 名。新的列名在表名后的括号中给出,如果省略将采用原来表的列名。复制的内容由查询语句的WHERE条件决
14、定。,Oracle 表(Table),表的修改(这些操作都无法回滚)改表名:alter table 当前表名 rename to 新表名;改列名:alter table 表名 rename column 当前列名 to 新列名;增加列:Alter table 表名 add(column datatype default expr,column datatype.);修改列:Alter table table_name modify(column_name datatype default expr,column datatype.);删除列:Alter table table_name dro
15、p column column_name;,Oracle 表(Table),删除已创建的表语法如下:DROP TABLE 表名CASCADE CONSTRAINTS;表的删除者必须是表的创建者或具有DROP ANY TABLE权限。CASCADE CONSTRAINTS表示当要删除的表被其他表参照时,删除参照此表的约束条件。,Oracle 表(Table)的补充,oracle数据类型,Oracle 表(Table)的补充,oracle数据类型字符型 char nchar(都是2000字节)定长,速度快,占空间大,需处理 varchar2 nvarchar2 varchar(都是4000字节)不
16、定长,空间小,速度慢,无需处理 格式如下 char(sizebyte|char)nchar(size);无n开头的系统默认为byte单位,有n开头的不用指定byte或者char,其一定是char的。char和 nchar 为固定长度(自己设定的那个)不够则用空格补充,最多可以存储2000字节(是字符,也不是汉字,注意转化后的值)。varchar2 nvarchar2 varchar 为变长字符串类型,不用空格补充,最多可以储存4000字节(varchar尽量不用,oracle可能把他废弃)有n开头(nchar,nvarchar2)两种数据类型用于包含unicode格式的字符串,其采用国家字符来
17、储存和管理,而不是默认的字符集。长度总是字符数,而没有n肯能会指定字节还是字符,Oracle 表(Table)的补充,oracle数据类型数值类型number(precision,scale)precision:精度,也称为总位数,取值为138 默认为38,也可以用*表示number(5,-2)可以存储1234567 其为1234600,number(5,10)可以储存.0000scale:小数位数,也称小数右边的位数,合法值为-48127,默认取值取决于是否指定了精度如果精度没有指定这默认为最大的取值区间,如果指定这默认为0,number类型是一中变长格式,长度为022字节 每增加两位数字就
18、增加一个自己的储存空间,Oracle 表(Table)的补充,Oracle其他一些数据类型 DATE 日期和时间类型 LOB 超长字符,最大可达4G CLOB 超长文本字符串 BLOB 超长二进制字符串 BFILE 超长二进制字符串,保存在数据库外的文件里是只读的.默认值:DEFAULT SYSDATE-加当前时间default 默认值default 1-加上一个默认数值,Oracle 表(Table)的补充,oracle约束数字字典(user_constraints,user_cons_columns)primary keynot nullunique Foreign key check()
19、:如 constraint 名字 check(列100)格式:列级在列定义后面加上这些语句 表级:在表的后面加上。如 constraint 名字 unique(列名字,可以多个)constraint xxx_fk foreign key(该表的某个列名)references 某表(某列),Oracle 表(Table)的补充,约束的修改alter table 语句对约束进行修改:可以添加或者删除,但是不能修改有效化和无效化约束添加 not null 约束时 要用modify语句 如:alter table employees add constraint emp_manager_fk fore
20、ign key(manager_id)referens table(column)alter table employees drop constraint emp_manager_fk 可以使用 cascadealter table employees drop primary key cascade,Oracle 索引(Index),Index常用的数据字典User_indexes-可以获取有关用户已创建的索引的详细信息。User_ind_partitions-可以获取有关用户已创建的分区索引的详细信息User_ind_columns-获取有关列(用户的索引是基于这些列创建的)的详细信息其
21、外还有all_indexesall_ind_partitionsall_ind_columnsdba_indexesdba_ind_partitionsdba_ind_columns,Oracle 索引(Index),索引 目标是为了提高查询的速度,当用户对查询速度不满意而需要对数据库的性能进行调校时,优先考虑建立索引。数据库中索引的概念与书索引的概念非常类似,不同之处在于数据库索引用来在表中查找特定的行。索引缺点:向表中“添加/删除”行时,必须花费额外的时间来更新该行的索引。创建索引的时机:当需要从大表中检索少数几行时,都应该对列创建索引。基本准则:当任何单个查询要检索的行=整个表行数的10
22、%时,索引就非常有用。索引的候选列:应该是用来存储很大范围的值的列 自动创建索引:表的主键和唯一键将自动创建索引语法 create unique|bitmap index 索引名-unique指定索引列中的值是唯一的,索引名建议以idx打头 on 表名(列1,列2.)-可以对多列创建索引,这种索引称为“复合索引”tablespace 表空间名;-省去后,索引将被存储到用户的默认表空间中 提示:出于性能方面的原因,通常应该将索引与表存储到不同的表空间中,Oracle 索引(Index)的补充,索引的类型 B-树索引位图索引HASH索引索引编排表反转键索引基于函数的索引分区索引本地和全局索引简要解
23、释:b*tree index:几乎所有的关系型数据库中都有b*tree类型索引,也是被最多使用的。其树结构与二叉树比较类似,根据rid快速定位所访问的行。反向索引:反转了b*tree索引码中的字节,是索引条目分配更均匀,多用于并行服务器环境下,用于减少索引叶的竞争。降序索引:8i中新出现的索引类型,针对逆向排序的查询。位图索引:使用位图来管理与数据行的对应关系,多用于OLAP系统。函数索引:这种索引中保存了数据列基于function返回的值,在select*from table where function(column)=value这种类型的语句中起作用。,Oracle 索引(Index),
24、各种索引的创建方法(1)B*Tree索引 Create index indexname on tablename(columnnamecolumnname.)tablespace tablespacename(2)反向索引。Create index indexname on tablename(columnnamecolumnname.)reverse tablespace tablespacename(3)降序索引。Create index indexname on tablename(columnname DESCcolumnname.)tablespace tablespacename(
25、4)位图索引。Create BITMAP index indexname on tablename(columnnamecolumnname.)tablespace tablespacename(5)函数索引。Create index indexname on tablename(functionname(columnname)tablespace tablespacename删除索引 drop index indexname;,Oracle 序列(Sequence),Sequence介绍 Sequence是数据库系统按照一定规则自动增加的数字序列。这个序列一般作为代主键(因为不会重复)Seq
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 数据库 管理 系统 逻辑 组成

链接地址:https://www.31ppt.com/p-5442165.html