教学课件:《Oracle数据库实用教程》.ppt

上传人(卖家):三亚风情 文档编号:3546173 上传时间:2022-09-15 格式:PPT 页数:478 大小:1.97MB
下载 相关 举报
教学课件:《Oracle数据库实用教程》.ppt_第1页
第1页 / 共478页
教学课件:《Oracle数据库实用教程》.ppt_第2页
第2页 / 共478页
教学课件:《Oracle数据库实用教程》.ppt_第3页
第3页 / 共478页
教学课件:《Oracle数据库实用教程》.ppt_第4页
第4页 / 共478页
教学课件:《Oracle数据库实用教程》.ppt_第5页
第5页 / 共478页
点击查看更多>>
资源描述

1、第一章将Oracle数据库运转起来1.1 SQL*Plus1.2 iSQL*Plus介绍1.3 配置与使用管理服务器1.4 启动数据库1.5 改变数据库的可用性1.6 关闭数据库本章目录1.1 SQL*Plus1.1.1 SQL*Plus的作用1.1.2 SQL*Plus的启动和退出方法1.1.3 SQL*Plus的常用命令1查看表结构命令命令格式:DESCRIBE 表名说明:DESCRIBE可简写为前4个字符。该命令也用于查看视图、同义词的结构。例:查看SCOTT用户的dept表的结构。SQL DESC scott.dept 2SQL*Plus会话环境设置命令命令格式:SET 环境变量名 值

2、说明:环境变量中比较重要的有:arraysize、linesize、pagesize、pause、autocommit等。例:SET SPACE 2 表示设置各列间的间隔为2个空格字符 3SPOOL命令命令格式:SPOOL 假脱机文件名说明:启动假脱机操作。命令格式:SPOOL OFF说明:关闭假脱机文件。4编辑命令常用编辑命令及格式有:CHANGE/被替换的子串/被替换为的新子串:用于替换SQL命令中的部分信息。LIST n:用于显示SQL缓冲区的内容。APPEND text:用于在SQL缓冲区的当前行内容后增加text指定的内容。EDIT:调用定义的文本编辑器编辑SQL缓冲区中内容。5执行

3、SQL脚本文件命令执行SQL脚本文件命令有两种格式:命令格式1:START 文件名命令格式2:文件名6连接数据库命令格式:CONNECT 用户名/口令主机连接串例:以系统管理员身份登录数据库 SQLconnect system/systemoradb7执行存储过程命令命令格式:execute 存储过程名8显示命令帮助信息命令格式:HELP 命令名1.2 iSQL*Plus介绍1.2.1 配置Oracle HTTP服务器 需要先启动Oracle的HTTP服务器才能使用iSQL*Plus。有两种方式启动Oracle HTTP服务器,并且一次只能以一种方式启动。1通过Windows 2000服务启动

4、2从【开始】菜单启动1.2.2 启动iSQL*Plus 在浏览器地址栏按以下格式输入URL地址http:/host:port/isqlplus/即可打开iSQL*Plus的Web形式的登录界面。1.3 配置与使用管理服务器1.3.1 安装与配置OMS1.3.2 启动与使用OEM1.4 启动数据库1.4.1 数据库的启动过程 1启动例程 2装载数据库 3打开数据库1.4.2 使用SQL*Plus启动数据库1启动数据库的命令语法STARTUP FORCE RESTRICT PFILE=filename OPEN RECOVER database|MOUNT|NOMOUNT 参数说明:FORCE:表

5、示强制启动数据库RESTRICT:表示以受限模式打开数据库,只允许 DBA使用数据库PFILE:指定启动数据库需要的初始化参数文件OPEN:表示启动数据库后直接打开数据库。MOUNT:表示以装载数据库而不打开的方式启动数据库,即启动了例程并装载数据库NOMOUNT:表示以不装载数据库的方式启动数据库,即仅启动了例程RECOVER:表示启动数据库后执行数据库恢复操作(如果需要恢复的话)database:表示要启动的数据库的名称2启动例程的不同模式(1)启动没有装载数据库的例程(2)启动例程并装载数据库,但是保持数 据库关闭状态(3)启动例程,装载并打开数据库1.5 改变数据库的可用性 1为例程装

6、载数据库 ALTER DATABASE MOUNT;2打开一个关闭的数据库 ALTER DATABASE OPEN;3以只读模式打开数据库 ALTER DATABASE OPEN READ ONLY;4限制对打开的数据库的访问 使用带ENABLE RESTRICTED SESSION 子句的SQL 语句ALTER SYSTEM 1.6 关闭数据库关闭数据库的命令格式:SHUTDOWN NORMAL|TRANSACTIONAL|IMMEDIATE|ABORT 关闭数据库可以采取以下4种模式:1用NORMAL 选项关闭数据库2用IMMEDIATE 选项关闭数据库3用TRANSACTIONAL 选项

7、关闭数据库4用ABORT 选项关闭数据库关 闭 模 式ABORTIMMEDIATETRANSACTIONALNORMAL 允许新连接NONONONO 等待所有用户退出NONONOYES 等待所有未完 成事务结束NONOYESYES 强制生成检查点 并关闭各文件NOYESYESYES 下次启动需要 例程恢复YESNONONO表1-1 各种关闭模式的比较本章小结 Oracle数据库提供了强大的工具集以支持对数据库的访问和维护操作。SQL*Plus提供了交互式访问数据库的方法,它能执行SQL命令和SQL*Plus命令。iSQL*Plus提供了基于Web的远程数据访问方法,使得对Oracle数据库的访

8、问和维护变得更容易和轻松。Orcale企业管理器是一个功能强大的基于GUI的数据库维护工具,能完成大部分的数据库维护操作。数据库可能基于不同的目的需要不同的启动和关闭方法,也可以根据需要改变其可用性,Oracle为此提供了所需的各种命令。第二章Oracle表 2.1 Oracle的数据库实体与数据类型2.2 创建表的语法概述2.3 简单表的创建2.4 创建按索引组织的表(IOT)2.5 创建簇表2.6 创建分区表2.7 外部表本章目录2.1 Oracle的数据库实体与数据类型2.1.1 Oracle数据库实体常用实体类型如下:表TABLE 约束CONSTRAINT 聚簇CLUSTER索引IND

9、EX 表空间TABLESPACE 分区PARTITION视图VIEW 回退段ROLLBACK SEGMENT 函数/过程/程序包序列生成器SEQUENCE 同义词SYNONYM 触发器TRIGER用户USER 数据库链路DATABASE LINK 对象OBJECT在Oracle数据库中,包括如下5种类型表关系表:存储永久数据,为基本数据表。临时表:由系统使用,存放某一特定会话中的数据,如查询的结果。按索引组织的表(IOT):按照结构化主关键字进行数据排序存储的表。外部表:数据存储在Oracle数据库外部的文件中,可读,不可更新。对象表:支持面向对象操作的表,可定义描述属性及操作方法。Oracl

10、e数据库中有4种可存放永久数据的表类型规则表(Regular tables):即是普通的关系表,其中数据按自然顺序存储。分区表(Partitioned tables):对数据量大,并发访问要求高的表可分区存储。按索引组织的表(Index-organized tables):提供按关键字存储和检索的数据存储,可加快数据检索速度,同时降低存储空间开销(索引即数据)。簇表(Clustered table):簇中各表数据共享存储块(按关键字存储在一起)。2.1.2 Oracle数据类型 Oracle的数据类型包括标量类型、集合类型和关系类型等。1标量数据类型(Scalar)2集合类型(Collecti

11、on)3关系数据类型(Relationship)4用户自定义数据类型2.2 创建表的语法概述2.2.1 基本规则 2.2.2 创建表的语法图图2-1 适用于关系表的CREATE TABLE语句的顶层语法图该语法图对应的文本 CREATE GLOBAL TEMPORARY TABLE schema.table(relational_properties)ON COMMIT DELETE|PRESERVE ROWS physical_properties table_properties;图2-1中的relational_properties对应的语法图如图2-2所示。图2-2 relationa

12、l_properties的语法图 图2-1中的physical_properties对应的语法图如图2-3所示。图2-3 physical_properties的语法图图2-1中的table_properties对应的语法图如图2-4所示。图2-4 table_properties的语法图2.3 简单表的创建2.3.1 简单表的创建语法语法如下:CREATE TABLE 表名(列名 类型 NULL|NOT NULL PRIMARY KEY,列名 类型 NULL|NOT NULL,表级完整性约束);例2.1 创建采用系统默认存储参数值的简单表conn scott/tigeroradb-如果stu

13、表已经存在,则先删除该表DROP TABLE stu;-以默认的存储参数、默认的并行访问参数等默认值创建stu表CREATE TABLE stu(sid varchar2(8)Primary Key,-学号是主键 name varchar2(20)Not Null,-姓名不能为空值 age number(3),addr varchar2(40);2.3.2 利用查询创建表语法如下:CREATE TABLE table (column,column )AS subquery;例2.2 从SCOTT的雇员表emp中选取所有列创建一个备份表emp_oldconn scott/tigeroradb-如

14、果emp_old表已经存在,则先删除该表DROP TABLE emp_old;CREATE TABLE emp_old AS SELECT*FROM emp;-执行如下两条语句检查创建的结果DESC emp_old;SELECT*FROM emp_old;2.3.3 存储参数带存储参数的CREATE TABLE命令的简要语法及说明如下CREATE TABLE schema.table(COLUMN1 DATATYPE DEFAULT EXPn COLUMN_CONSTRAINT|TABLE_CONSTRAINT,COLUMN1 DATATYPE DEFAULT EXPN COLUMN_CONS

15、TRAINT|TABLE_CONSTRAINT )STORAGE(INITIAL n NEXT n MINEXTENTS n MAXEXTENTS nPCTINCREASE n)TABLESPACE tablespacePCTFREE n PCTUSED n INITRANS n MAXTRANS n AS QUERY;例2.3 创建一个表stu2,并指定它的存储参数。conn scott/tigeroradbDROP TABLE stu2;CREATE TABLE stu2(sid varchar2(8)Primary Key,name varchar2(20)Not Null,age nu

16、mber(3),addr varchar2(40)Storage(initial 100k next 20k Minextents 1 Maxextents 99 Pctincrease 10)tablespace USERS pctfree 10 pctused 40 initrans 2 maxtrans 10;2.3.4 完整性约束定义Oracle数据库中的约束条件可分为以下几类:NOT NULL:非空约束,指定一列不能取空值。Unique:唯一性约束,指定某列值不能重复。Primary key:主键约束。用在列定义中,表示该列为主键;用在列定义之外,即为指定表的主键。Foreign k

17、ey:外键约束,也叫参照完整性约束,指定某列为表的外键,并指定它参照的表和列。Check:检查约束,用于限制该列的取值在该约束范围内。REF:定义列对象的参照关系,一般用于嵌套对象表。定义在列定义中的约束(inline constraint)的语法图如图2-5所示,定义在列定义外的约束(out of line constraint)的语法图如图2-6所示,外键约束(references constraint)的定义语法如图2-7所示。图2-5 在列中定义约束的语法图图2-6 在列之外定义约束的语法图图2-7 参照完整性子句的语法图2.3.5 表的维护1修改列定义语法为:ALTER TABLE

18、table MODIFY(column datatype DEFAULT expr,);例:如下语句的第一句成功,第二句将出错。-列宽度改大了可以ALTER TABLEcourse MODIFY(cname varchar2(20);-cno已有数据,长度为4字节。列宽度改小了不可以ALTER TABLEcourse MODIFY(cno varchar2(2);2增加列语法为:ALTER TABLE table ADD(column datatype DEFAULT expr,);。例:本例注意观察执行前后表结构和表中数据的变化。-为学生表增加一列出生日期birthday,以当前的系统时间s

19、ysdate作为其缺省值-查看修改前的表结构及表中数据DESC studentSELECT*FROM student;ALTER TABLE student ADD(birthday DATE DEFAULT sysdate);DESC student SELECT*FROM student;3删除列语法为:ALTER TABLE table DROP(column);4禁用列语法如下:ALTER TABLE table SET UNUSED(column,);或为ALTER TABLE table SET UNUSED COLUMN column;例:观察如下例句执行前后student表结构

20、及数据的变化。SELECT*FROM student;ALTER TABLE student SET UNUSED(birthday);DESC STUDENT;ALTER TABLE student DROP UNUSED COLUMNS;DESC STUDENT;-ALTER TABLE student DROP COLUMN birthday;SELECT*FROM student;ALTER TABLE student ADD(birthday date DEFAULT sysdate);SELECT*FROM student;5表约束的维护 包括增加、删除、启用与禁用约束等操作。在A

21、LTER TABLE tablename后接如图2-8的语法图成分来完成约束的维护工作。图2-8 约束语法图例2.9 增加约束。ALTER TABLE empADD CONSTRAINT check_total_sal CHECK(sal+comm=5000);INSERT INTO emp(deptno,empno,ename,sal,comm)VALUES(10,1010,John,2000,400);INSERT INTO emp(deptno,empno,ename,sal,comm)VALUES(10,1020,Jordan,4800,500);6修改存储参数可修改表的PCTFREE

22、,PCTUSED,INITRANS和MAXTRANS等存储参数。例:修改表student的存储参数。ALTER TABLE student pctfree 10 pctused 40 initrans 2 maxtrans 10;7重命名表和列重命名表的语法为:ALTER TABLE tablename RENAME TO new_tablename;或为RENAME old_tablename TO new_tablename;重命名列的语法为:ALTER TABLE tablename RENAME COLUMN old_name TO new_name;例:修改表名和列名。DESC st

23、udent;ALTER TABLE student RENAME COLUMN age TO sage;DESC student;ALTER TABLE student RENAME TO stu_temp;RENAME stu_temp TO student;SELECT*FROM tab;2.3.6 表的删除与截断1表的删除语法为:DROP TABLE table CASCADE CONSTRAINTS;例:删除表student。注意以下两语句的执行结果。DROP TABLE student;DROP TABLE student CASCADE CONSTRAINTS;2表的截断截断表的语

24、法如下:TRUNCATE TABLE table DROP|REUSE STORAGE;2.4 创建按索引组织的表(IOT)例:创建按索引组织的表。DROP TABLE countries;CREATE TABLE countries(country_id CHAR(2),country_name VARCHAR2(40),currency_name VARCHAR2(25),currency_symbol VARCHAR2(3),region VARCHAR2(15),CONSTRAINT country_id_pk PRIMARY KEY(country_id)ORGANIZATION I

25、NDEX INCLUDING country_name PCTTHRESHOLD 2 STORAGE (INITIAL 4K NEXT 2K PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 1)OVERFLOW STORAGE (INITIAL 4K NEXT 2K PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 1);2.5 创建簇表2.5.1 创建簇表 创建簇表需经历两个步骤,创建簇和基于该簇创建簇表。创建簇的简要语法如下:CREATE CLUSTER schema.cluster(column datatype,column dat

26、atype.);创建簇表的语法为:CLUSTER cluster(column,column.)2.5.2 创建簇索引创建簇索引的语法如下:CREATE INDEX index_name ON CLUSTER cluster_name index_attributes;例:为emp_dept 簇创建一个簇索引,并进行簇索引的使用测试。-如下语句因无簇索引而失败INSERT INTO cluster_dept VALUES(100,aaa,aaaloc);-以下语句在创建簇索引后插入数据即可成功DROP INDEX emp_dept_index;CREATE INDEX emp_dept_ind

27、ex ON CLUSTER emp_dept STORAGE(INITIAL 50K NEXT 50K MINEXTENTS 2 MAXEXTENTS 10 PCTINCREASE 33)TABLESPACE users INITRANS 2 MAXTRANS 5 PCTFREE 5;-簇有了索引,数据插入才能成功INSERT INTO cluster_dept VALUES(100,aaa,aaaloc);commit;2.5.3 删除簇 删除不包含表的簇及其簇索引,使用DROP CLUSTER 语句。如下语句删除名为emp_dept 的空簇。DROP CLUSTER emp_dept;如果

28、簇中包含一个或多个簇表并打算将表也删除,则在DROP CLUSTER 语句中增加INCLUDING TABLES 选项。如DROP CLUSTER emp_dept INCLUDING TABLES;2.6 创建分区表 Oracle提供了范围分区、散列分区、列表分区和组合分区共4种分区方法。2.6.1 范围分区表指定范围分区的语法如图2-10所示。图2-10 范围分区语法图2-10中range_ VALUES_clause部分的语法如图2-11所示。图2-11 指定范围的语法例:按雇员工资建立范围分区表。-建立范围分区表 DROP TABLE part_emp;CREATE TABLE par

29、t_emp(EMPNO NUMBER(4)NOT NULL,ENAME VARCHAR2(10),JOB VARCHAR2(9),MGR NUMBER(4),HIREDATE DATE,SAL NUMBER(7,2),COMM NUMBER(7,2),DEPTNO NUMBER(3)PARTITION BY RANGE(sal)(PARTITION SAL_1000 VALUES LESS THAN(1000)TABLESPACE users,PARTITION SAL_2000 VALUES LESS THAN(2000)TABLESPACE users,PARTITION SAL_3000

30、 VALUES LESS THAN(3000)TABLESPACE users,PARTITION SAL_4000 VALUES LESS THAN(4000)TABLESPACE users,PARTITION SAL_max VALUES LESS THAN(MAXVALUE)tablespace users);INSERT INTO part_emp SELECT*FROM emp;commit;SELECT ename,sal FROM part_emp PARTITION(sal_1000);SELECT ename,sal FROM part_emp PARTITION(sal_

31、2000);SELECT ename,sal FROM part_emp PARTITION(sal_3000);SELECT ename,sal FROM part_emp PARTITION(sal_4000);SELECT ename,sal FROM part_emp PARTITION(sal_max);2.6.2 散列分区表指定HASH散列分区的语法如图2-12所示。图2-12 HASH散列分区语法图2-12中individual_hash_partitions部分的语法如图2-13所示。图2-13 指定各分区信息的散列分区语法图2-12中hash_partitions_by_qu

32、antity部分的语法如图2-14所示。图2-14 指定分区数量的散列分区语法例:创建一个散列分区表,分区列是id。该表4个分区的名字由系统产生,并将分区放到4个名为ts1ts4的表空间中(用到了图2-14语法)。-创建测试用表空间conn system/systemoradb as sysdbaCREATE TABLESPACE ts1 DATAFILE%ORACLE_HOME%databasets1.dbf size 1M reuse;CREATE TABLESPACE ts2 DATAFILE%ORACLE_HOME%databasets2.dbf size 1M reuse;CREAT

33、E TABLESPACE ts3 DATAFILE%ORACLE_HOME%databasets3.dbf size 1M reuse;CREATE TABLESPACE ts4 DATAFILE%ORACLE_HOME%databasets4.dbf size 1M reuse;-创建HASH分区表conn scott/tigeroradbCREATE TABLE test_hash_table(id NUMBER,name VARCHAR2(60)PARTITION BY HASH(id)PARTITIONS 4 STORE IN(ts1,ts2,ts3,ts4);-查看分区创建结果,注意

34、系统取的分区名,系统默认取为sys_p1本例后面要用到它COLUMN TABLE_NAME FORMAT A20COLUMN PARTITION_NAME FORMAT A20SELECT TABLE_NAME,PARTITION_NAME FROM USER_TAB_PARTITIONS ORDER BY TABLE_NAME;-向表中插入测试数据INSERT INTO TEST_HASH_TABLE VALUES(1,AAAA);INSERT INTO TEST_HASH_TABLE VALUES(2,BBBB);INSERT INTO TEST_HASH_TABLE VALUES(3,C

35、CCC);INSERT INTO TEST_HASH_TABLE VALUES(4,DDDD);INSERT INTO TEST_HASH_TABLE VALUES(5,EEEE);COMMIT;-查看测试数据按ID值的散列情况。注意,sys_pn可能与你前面运行的结果不同,修改一下即可SELECT*FROM test_hash_table PARTITION(sys_p1);SELECT*FROM test_hash_table PARTITION(sys_p2);SELECT*FROM test_hash_table PARTITION(sys_p3);SELECT*FROM test_h

36、ash_table PARTITION(sys_p4);2.6.3 列表分区表指定列表分区的语法如图2-15所示。图2-15 列表分区语法例:创建一个按地区进行分区的表。DROP TABLE dept_list;CREATE TABLE dept_list(deptno NUMBER(3),deptname VARCHAR(32),loc VARCHAR(32)PARTITION BY LIST(loc)(PARTITION p1 VALUES(东,东南,华东)TABLESPACE ts1,PARTITION p2 VALUES(南,华南,中南)TABLESPACE ts2,PARTITION

37、 p3 VALUES(西,西南,西北)TABLESPACE ts3,PARTITION p4 VALUES(北,华北,东北)TABLESPACE ts4);-插入测试数据INSERT INTO dept_list VALUES(1,销售1部,华南);INSERT INTO dept_list VALUES(2,销售2部,东南);INSERT INTO dept_list VALUES(3,销售3部,东北);commit;-查看保存在不同分区中的测试数据SELECT*FROM dept_list PARTITION(p1);SELECT*FROM dept_list PARTITION(p2);

38、SELECT*FROM dept_list PARTITION(p3);SELECT*FROM dept_list PARTITION(p4);2.6.4 组合分区表组合分区的语法如图2-16所示。图2-16 组合分区语法2.7 外部表图2-3中出现了定义外部表的语法,即在表的物理存储部分指明此表是一个外部表。图2-3中external_table_clause部分的语法如图2-17所示。图2-17 外部表定义语法图2-18 外部数据描述语法本章小结 本章介绍了Oracle中的数据类型,较详细的讲解了Oracle数据库中规则的关系表、按索引组织的表、簇表、分区表和外部表的创建方法,对表的维护、

39、约束的维护作了较全面的阐述。Oracle数据库的CREATE TABLE语句功能强大,语法比较复杂,应由简到繁的逐步学习和应用。ALTER TABLE语句的作用是修改表的定义,可以完成字段的修改、完整性约束的修改等任务。第三章索引与视图 3.1 管理索引3.2 视图的创建与使用本章目录3.1 管理索引3.1.1索引概述Oracle针对不同的数据库实体类型和应用提供了几种索引模式,它们是(1)B-树索引-默认的和最常用的索引(2)B-树簇索引-为簇定义的索引(3)散列簇索引-为散列簇定义的索引(4)全局和本地索引-相应于分区表和索引(5)反序索引-适用于Oracle实时应用集群的应用(6)位图索

40、引-适用于具有少量值集的列(7)基于函数的索引-包含函数/表达式的预先计算的值(8)域索引-特别针对应用或插件创建索引的语法如图3-1所示 图3-1 创建索引的语法最简单的创建索引语法如下CREATE INDEX 索引名 ON 表名(列名 ASC/DESC,列名 ASC/DESC);更实用和完整的创建索引语法如下CREATE unique INDEX schema.indexON schema.table(column ASC|DESC,column ASC|DESC .)INITRANS n -缺省值为2MAXTRANS n -缺省值为255PCTFREE nLOGGING|NOLOGGIN

41、G NOSORTSTORAGE storageTABLESPACE tablespace;例3.1 为表EMP建立以ename为索引列的索引,索引名为emp_ename_index,索引存放的表空间为my_index。-创建一个索引表空间,专门存放索引数据connect system/systemoradb as sysdbaCREATE TABLESPACE my_index DATAFILE%ORACLE_HOME%databasemy_index.dbf SIZE 1M reuse;-创建索引,并指定它的存储空间connect scott/tigeroradbCREATE INDEX e

42、mp_ename_index ON emp(ename DESC)TABLESPACE my_index;使用如下语句可以查看到用户的索引定义情况COL TABLE_NAME FORMAT A15COL INDEX_NAME FORMAT A18COL COLUMN_NAME FORMAT A15SELECT ix.table_name,ic.index_name,ic.column_name,ic.column_position col_pos,ix.uniquenessFROM user_indexes ix,user_ind_columns icWHERE ic.index_name=i

43、x.index_nameORDER BY ix.table_name;3.1.2 创建唯一索引可用CREATE UNIQUE INDEX 语句来创建唯一索引。例3.2 为dept表的dname列创建唯一索引。CREATE UNIQUE INDEX dept_unique_index ON dept(dname)TABLESPACE my_index;例3.3 观察下面语句的执行结果。-删除前面创建在dept的dname列上的索引DROP INDEX dept_unique_index;-向表DEPT中插入一条记录INSERT INTO dept VALUES(80,RESEARCH,HarBi

44、n);commit;-在表dept的dname列上建立唯一索引,索引名为unique_dname。CREATE UNIQUE INDEX unique_dname ON dept(dname DESC);例3.3的最后一条语句的执行将返回如下信息ERROR 位于第 2 行:ORA-01452:无法 CREATE UNIQUE INDEX;找到重复的关键字3.1.3 创建位图索引创建位图索引的限制:(1)不能在全局分区索引上创建位图索引(2)不能同时指定UNIQUE和位图索引(3)不能在本地索引中使用位图索引例3.4 在student表的性别列上创建位图索引。CREATE BITMAP INDE

45、X stu_sex_index ON student(sex)TABLESPACE my_index;3.1.4 创建基于函数的索引使用基于函数的索引的好处如下(1)创建更强有力的分类(2)预先计算出计算密集的函数的值并在索引中将其分类(3)增加优化器可以执行范围扫描而不是全表扫描的情况的数量例3.5 注意观察本例代码执行的结果。设student表(在例2.4和例2.5中创建)的学生编号sno列的编码规则为:4位年+2位系别+2位班级+2位顺序号。如经常执行按年度的学生情况统计,则可创建如下形式的索引。CREATE INDEX year_index ON student(substrb(sno

46、,1,4)TABLESPACE my_index;-系统提示权限不足。ERROR 位于第 1 行:ORA-01031:权限不足-执行如下语句查看SCOTT用户的权限,发现没有QUERY REWRITE权限。SELECT*FROM USER_SYS_PRIVS WHERE USERNAME=SCOTT;-以系统管理员SYSTEM连接,为SCOTT用户授权connect system/systemoradb as sysdbaGRANT QUERY REWRITE TO SCOTT;-以SCOTT用户连接,执行如下语句。CONN scott/tigeroradbSELECT*FROM USER_S

47、YS_PRIVS WHERE USERNAME=SCOTT;CREATE INDEX year_index ON student(substrb(sno,1,4)TABLESPACE my_index;3.1.5 设置与约束相关的索引默认时,利用任何约束条件(例如主键或UNIQUE约束)创建的索引都将处于与表相同的表空间,应该为索引在独立的磁盘驱动器上设置(至少)一个表空间。使用USING INDEX子句来为约束指定存储空间,USING INDEX子句的语法如下:USING INDEX schema.index)|(create_index_statement)|LOCAL|global_pa

48、rtitioned_index|PCTFREE integer|INITRANS integer|MAXTRANS integer|TABLESPACE tablespace|storage_clause|SORT|NOSORT|logging_clause PCTFREE integer|INITRANS integer|MAXTRANS integer|TABLESPACE tablespace|storage_clause|SORT|NOSORT|logging_clause .例3.6 为student表name列的唯一性约束指定索引表空间。DROP TABLE student CAS

49、CADE CONSTRAINTS;CREATE TABLE student(sno VARCHAR2(10)Primary Key,name VARCHAR2(20)Not Null UNIQUE USING INDEX TABLESPACE my_index,sex VARCHAR2(2)Check(sex IN(男,女),age NUMBER(2)Check(age Between 16 And 20),class VARCHAR2(7)Not Null);3.1.6 创建簇的索引 创建簇索引的语法如下:CREATE INDEX index_name ON CLUSTER schema.c

50、luster_name index_attributes;下面为例2.18 中为emp_dept簇创建簇索引的代码。DROP INDEX emp_dept_index;CREATE INDEX emp_dept_index ON CLUSTER emp_dept STORAGE(INITIAL 50K NEXT 50K MINEXTENTS 2 MAXEXTENTS 10 PCTINCREASE 33)TABLESPACE users INITRANS 2 MAXTRANS 5 PCTFREE 5;3.1.7 对索引创建分区 不仅可对表创建分区,对索引同样可创建分区(索引本身也是一种表)。当所

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(教学课件:《Oracle数据库实用教程》.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|