Oracle数据库开发_第1页
Oracle数据库开发_第2页
Oracle数据库开发_第3页
Oracle数据库开发_第4页
Oracle数据库开发_第5页
已阅读5页,还剩266页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、oracle 数据库开发数据库开发 第一章第一章 oracle 入门 课程地位 .net q 创建表空间的语法是: oracle 逻辑组件 3-3 段段 q 段是构成表空间的逻辑存储结构,段由一组区组成。 q 按照段所存储数据的特征,将段分为四种类型,即数据段、索引段、 回退段和临时段。 区区 q 区为段分配空间,它由连续的数据块组成。 q 当段中的所有空间已完全使用时,系统自动为该段分配一个新区。 q 区不能跨数据文件存在,只能存在于一个数据文件中。 数据块数据块 q 数据块是oracle服务器所能分配、读取或写入的最小存储单元。 q oracle服务器以数据块为单位管理数据文件的存储空间。

2、 模式模式 q 模式是对用户所创建的数据库对象的总称。 q 模式对象包括表、视图、索引、同义词、序列、过程和程序包等。 oracle 网络配置 2-1 qoracle产品安装完成后,服务器和客户端都需要进 行网络配置才能实现网络连接。 q 服务器端配置监听器,客户端配置网络服务名。 tnsnames.ora oracle 客户端客户端 listener.ora oracle 服务器服务器 oracle 网络配置 2-2 q服务器端监听器配置信息包括监听协议、地址及 其他相关信息。 配置信息保存在名为listener.ora 的文件中。在安装服务器软件时自动配置一个监 听器 q客户端的网络服务名

3、配置信息包括服务器地址、 监听端口号和数据库sid等,与服务器的监听器 建立连接。配置信息保存在名为tnsnames.ora的 文件中 qoracle中的 net configuration assistant和net manager工具都能用来配置监听器和网络服务名 oracle 查询工具 oracle 查询工具查询工具 sql*plusisql*pluspl/sql qoracle 提供的工具非常容易使用。oracle 的 查询工具包括: sql*plus是oracle最常用的工具之一,用于接受和执行sql命令以 及pl/sql块。 isql*plus可以执行能用sql*plus完成的所有

4、任务。该工具的优势 在于能通过浏览器访问它。 pl/sql 是 sql 的扩展。pl/sql 结合了sql语言的数据操纵能力 和过程语言的流程控制能力 oracle 企业管理器 qoracle 企业管理器为管理员提供了图形化的用 户界面,并集成了管理数据库的工具 oracle 默认用户 q只有用合法的用户帐号才能访问oracle数据库 qoracle 有几个默认的数据库用户 oracle 默认用户 syssystemscott 数据库中所有数据字典表和视图都存储在 sys 模式中。sys用户主要用 来维护系统信息和管理实例。 system 是默认的系统管理员,该用户拥有oracle管理工具使用

5、的内部 表和视图。通常通过system用户管理数据库用户、权限和存储等 scott用户是oracle 数据库的一个示范帐户,在数据库安装时创建 创建新用户 q要连接到oracle数据库,就需要创建一个用户帐户 q每个用户都有一个默认表空间和一个临时表空间 qcreate user命令用于创建新用户 create user username identified by password default tablespace tablespace temporary tablespace tablespace; qcreate user 命令的语法是: create user martin ide

6、ntified by martinpwd default tablespace users temporary tablespace temp; 创建一个名称为 martin 的用户,其密码为 martinpwd 授予权限 3-1 q权限指的是执行特定命令或访问数据库对象的权 利 q权限有两种类型,系统权限和对象权限 q系统权限允许用户执行某些数据库操作,如创建表就 是一个系统权限 q对象权限允许用户对数据库对象(如表、视图、序列 等)执行特定操作 q角色是一组相关权限的组合,可以将权限授予角 色,再把角色授予用户,以简化权限管理。 授予权限 3-2 qgrant 命令可用于为用户分配权限或角

7、色 grant connect to martin; connect角色允许用户连接至数据库, 并创建数据库对象 grant resource to martin; resource角色允许用户使用 数据库中的存储空间 grant create sequence to martin; 此系统权限允许用户在当前模式中创建 序列,此权限包含在connect角色中 授予权限 3-3 q授予用户 martin 操作test表对象的权限 grant select on test to martin; 允许用户查询 test 表的记录 grant update on test to martin; 允许用

8、户更新 test 表中的记录 grant all on test to martin; 允许用户插入、删除、更新和查询 test 表中的记录 更改和删除用户 qalter user 命令可用于更改口令 alter user martin identified by martinpass; 修改 martin 用户的密码 qdrop user 命令用于删除用户 drop user martin cascade; 删除 martin 用户模式 oracle 9i 的安装和卸载 q通过运行oracle universal installer来安装和卸载 oracle数据库 选择 oracle 9i

9、database .0 来安装数据库服务器。 选择 oracle 9i client .0 来安装 oracle 客户端 启动universal installer,选择“卸装产品”,选中要卸载的组件 使用 oracle 数据库的开发流程 服务器端 安装 oracle 服务器软件 创建数据库(安装时自动创建) 配置监听器(安装时自动配置) 启动oracle实例(自动启动服务) 安装 oracle 客户端软件 配置网络服务名 以新用户登录 oracle 提交 sql 查询 创建新用户并授权 创建用户表空间 客户端 windows 中的 oracle 服务 3-1 q

10、oracle 9i的每个实例在windows中都作为一项服务启动 q 服务是在 windows 注册表中注册的可执行进程,由 windows 操作系统管理 q “服务”对话框中的各项 oracle 服务如图所示: windows 中的 oracle 服务 3-2 oraclehome_nametnslistener q 该服务启动数据库服务器的监听器,监听器接受来自客户端应用程 序的连接请求 q 若监听器未启动,则客户端将无法连接到数据库服务器 oracleservicesid q 该服务启动系统标识符为sid的数据库实例,其中 sid 是在安装 oracle 9i 时输入的数据库名称 ora

11、clehome_nameagent q oracle企业管理器组件智能代理服务,此智能代理用于执行作业和 监控 oracle 服务或对象的性能 q 在使用oracle管理服务器网络的环境中必须启动此服务 windows 中的 oracle 服务 3-3 oraclehome_namehttpserver q 该服务用于启动oracle http服务器,它提供文档信息、 基于web的企业管理器和isql*plus等服务 oraclehome_namemanagementserver q 该服务启动oracle管理服务器,它用于维护管理控制台对 各个被管理服务器节点之间的集中的、智能的和分布式的

12、控制 q 该服务必须经过企业管理器配置向导配置完成后才创建 总结 oracle 服务器由oracle 数据库和 oracle 实例组 成 oracle 实例由系统全局区内存结构和用于管理数 据库的后台进程组成 oracle 中用于访问数据库的主要查询工具有 sql*plus、isql*plus 和 pl/sql oracle 企业管理器是用于管理、诊断和调整多个 数据库的工具 oracle 中的 system 用户和 sys 用户具有管理 权限,而 scott 用户只有基本的权限 oracle 服务在 windows 注册表中注册,并由 windows 操作系统管理 第二章第二章 sql 查询

13、和 sql 函数 qoracle 服务器由oracle 数据库和 oracle 实例组 成 qoracle 实例由系统全局区内存结构和用于管理数 据库的后台进程组成 qoracle 中用于访问数据库的主要查询工具有 sql*plus、isql*plus 和 pl/sql qoracle 企业管理器是用于管理、诊断和调整多个 数据库的工具 qoracle 中的 system 用户和 sys 用户具有管理 权限,而 scott 用户只有基本的权限 回顾 目标 了解 oracle 数据类型 了解数据定义语言和数据操纵语言 了解事务控制语言和数据控制语言 掌握 sql 操作符和 sql 函数 sql

14、简介 2-1 sql 是 structured query language(结 构化查询语言)的首字母缩写词 sql 是数据库语言,oracle 使用该语言存 储和检索信息 表是主要的数据库对象,用于存储数据 通过 sql可以实现与 oracle 服务器的通 信 select ename from emp; 发送 sql 查询 oracle 服务器 ename blake smith allen david martin 发送命令输出到用户端 用户 sql 简介 2-2 sql 支持下列类别的命令: 数据定义语言(ddl) 数据操纵语言(dml) 事务控制语言(tcl) 数据控制语言(dcl

15、) 数据定义语言数据定义语言 createalterdrop 数据操纵语言数据操纵语言 insertselectdeleteupdate 事务控制语言事务控制语言 commit savepoint rollback 数据控制语言数据控制语言 grantrevoke oracle 数据类型 5-1 创建表时,必须为各个列指定数据类型 以下是 oracle 数据类型的类别: 数据类型数据类型 字符数值日期时间raw/long rawlob oracle 数据类型5-2 字符数据类型字符数据类型 charvarchar2long 当需要固定长度的字符串时,使用 char 数据 类型。 char 数据

16、类型存储字母数字值。 char 数据类型的列长度可以是 1 到 2000 个字 节。 varchar2数据类型支持可变长度字符串 varchar2数据类型存储字母数字值 varchar2数据类型的大小在1至4000个字节范 围内 long 数据类型存储可变长度字符数据 long 数据类型最多能存储 2gb oracle 数据类型 5-3 数值数据类型 可以存储整数、浮点数和实数 最高精度为 38 位 数值数据类型的声明语法: number ( p, s) p表示精度,s表示小数点的位数 日期时间数据类型存储日期和时间值,包 括年、月、日,小时、分钟、秒 主要的日期时间类型有: date - 存

17、储日期和时间部分,精确到整个的 秒 timestamp - 存储日期、时间和时区信息, 秒值精确到小数点后6位 oracle 数据类型 5-4 raw 数据类型用于存储二进制数据 raw 数据类型最多能存储 2000 字节 long raw 数据类型用于存储可变长度 的二进制数据 long raw 数据类型最多能存储 2 gb lob lob 称为“大对象”数据类型,可以存储 多达 4gb 的非结构化信息,例如声音剪 辑和视频文件等 lob 数据类型允许对数据进行高效、随机、 分段的访问 blobclobbfile clob 即 character lob(字符 lob),它能够存储大量字符数

18、据 blob 即 binary lob(二进制 lob),可以存储较大的二进制对 象,如图形、视频剪辑和声音文件 bfile 即 binary file(二进制文 件),它用于将二进制数据存储在 数据库外部的操作系统文件中 oracle 数据类型 5-5 qoracle 中伪列就像一个表列,但是它并没有存 储在表中 q伪列可以从表中查询,但不能插入、更新和删除 它们的值 q常用的伪列有rowid和rownum rowid 是表中行的存储地址,该地址可以唯一地标识数据库中 的一行,可以使用 rowid 伪列快速地定位表中的一行 rownum 是查询返回的结果集中行的序号,可以使用它来限 制查询返

19、回的行数 数据定义语言 数据定义语言用于改变数据库结构,包括创 建、更改和删除数据库对象 用于操纵表结构的数据定义语言命令有: create table alter table truncate table drop table 数据操纵语言 q数据操纵语言用于检索、插入和修改数据 q数据操纵语言是最常见的sql命令 q数据操纵语言命令包括: qselect qinsert qupdate qdelete dml select 命令 2-1 q利用现有的表创建表 q语法: create table as select column_names from ; sql create table n

20、ewitemfile as select * from itemfile; sql create table newitemfile1 as select itemcode, itemdesc, qty_hand from itemfile; sql create table newitemfile2 as select * from itemfile where 1 = 2; dml select 命令 2-2 sql select distinct vencode from vendor_master; q选择无重复的行 q在select子句,使用distinct关键字 q使用列别名 q为

21、列表达式提供不同的名称 q该别名指定了列标题 sql select itemcode, itemdesc, max_level, max_level*2 as new_maxlevel from itemfile; sql select itemcode,itemdesc, max_level, max_level* 2 “new maximum level” from itemfile; dml insert 命令 2-1 q插入日期类型的值 q日期数据类型的默认格式为“dd-mon-rr” q使用日期的默认格式 q使用to_date函数转换 insert into my_table (da

22、te_col) values (to_date(2005-10-18, yyyy-mm-dd); insert into order_master values(o001, 12-5月-05, v002, c, 25-5月-05); dml insert 命令 2-2 q插入来自其它表中的记录 q语法: insert into (cloumn_list) select column_names from ; sql insert into newvendor_master select * from vendor_master; sql insert into newvendor_master

23、(vencode,venname) select vencode, venname from vendor_master; 事务控制语言 q事务是最小的工作单元,作为一个整体进行工作 q保证事务的整体成功或失败,称为事务控制 q用于事务控制的语句有: qcommit - 提交并结束事务处理 qrollback - 撤销事务中已完成的工作 qsavepoint 标记事务中可以回滚的点 sql update order_master set del_date = 30-8月-05 where orderno savepoint mark1; sql delete from order_master

24、 where orderno = o002; sql savepoint mark2; sql rollback to savepoint mark1; sql commit; 数据控制语言 q数据控制语言为用户提供权限控制命令 q用于权限控制的命令有: qgrant 授予权限 qrevoke 撤销已授予的权限 sql grant select, update on order_master to martin; sql grant update(qty_hand, re_level) on itemfile to martin; sql grant select on vendor_mast

25、er to accounts with grant option; sql revoke select, update on order_master from martin; sql 操作符 sql 操作符 集合操作符 逻辑操作符 比较操作符 算术操作符连接操作符 qoracle 支持的 sql 操作符分类如下: 算术操作符 算术操作符用于执行数值计算 可以在sql语句中使用算术表达式,算术 表达式由数值数据类型的列名、数值常量 和连接它们的算术操作符组成 算术操作符包括加(+)、减(-)、乘(*)、除(/) sql select itemdesc, max_level - qty_hand

26、 avble_limit from itemfile where p_category=spares; sql select itemdesc, itemrate*(max_level - qty_hand) from itemfile where p_category=spares; 比较操作符 q比较操作符用于比较两个表达式的值 q比较操作符包括 =、!=、=、 betweenand、in、like 和 is null等 sql select itemdesc, re_level from itemfile where qty_hand select orderno from order_

27、master where del_date in (06-1月-05,05-2月-05); sql select vencode,venname,tel_no from vendor_master where venname like j_s; 逻辑操作符 sql select * from order_master where odate 10-5月-05 and del_date select orderno from order_master intersect select orderno from order_detail; sql select orderno from order

28、_master minus select orderno from order_detail; minus 操作符返回从第一个查询结果中排除第二个查 询中出现的行。 连接操作符 q连接操作符用于将多个字符串或数据值合并成一 个字符串 sql select (venname| 的地址是 |venadd1| |venadd2 | |venadd3) address from vendor_master where vencode=v001; 通过使用连接操作符可以将表中 的多个列合并成逻辑上的一行列 操作符的优先级 sql 操作符的优先级从高到低的顺序是: 算术操作符 -最高优先级 连接操作符 比

29、较操作符 not 逻辑操作符 and 逻辑操作符 or 逻辑操作符 -最低优先级 sql 函数 oracle 提供一系列用于执行特定操作的函 数 sql 函数带有一个或多个参数并返回一个 值 以下是sql函数的分类: sql 函数 单行函数 分析函数分组函数 单行函数分类 单行函数对于从表中查询的每一行只返回 一个值 可以出现在 select 子句中和 where 子 句中 单行函数可以大致划分为: 日期函数 数字函数 字符函数 转换函数 其他函数 日期函数 日期函数对日期值进行运算,并生成日期 数据类型或数值类型的结果 日期函数包括: add_months months_between la

30、st_day round next_day trunc extract 字符函数 2-1 函数函数 输入输入 输出输出 initcap(char) select initcap(hello) from dual;hello lower(char) select lower(fun) from dual;fun upper(char) select upper(sun) from dual;sun ltrim(char,set) select ltrim( xyzadams,xyz) from dual; adams rtrim(char,set) select rtrim(xyzadams,a

31、ms) from dual; xyzad translate(char, from, to) select translate(jack,j ,b) from dual; back replace(char, searchstring,rep string) select replace(jack and jue ,j,bl) from dual; black and blue instr (char, m, n) select instr (worldwide,d) from dual; 5 substr (char, m, n) select substr(abcdefg,3,2) fro

32、m dual; cd 字符函数字符函数 字符函数接受字符输入并返回字符或数 值 字符函数 2-2 sql select chr(67) from dual; q以下是一些其它的字符函数: qchr和ascii qlpad和rpad qtrim qlength qdecode sql select lpad(function,15,=) from dual; sql select trim(9 from 9999876789999) from dual; sql select length(frances) from dual; sql select vencode, decode(vennam

33、e,frances,francis) name from vendor_master where vencode=v001; 数字函数 q数字函数接受数字输入并返回数值结果 函数 输入 输出 abs(n) select abs(-15) from dual; 15 ceil(n) select ceil(44.778) from dual; 45 cos(n) select cos(180) from dual; -.5984601 cosh(n) select cosh(0) from dual; 1 floor(n) select floor(100.2) from dual; 100 p

34、ower(m,n) select power(4,2) from dual; 16 mod(m,n) select mod(10,3) from dual; 1 round(m,n) select round(100.256,2) from dual; 100.26 trunc(m,n) select trunc(100.256,2) from dual; 100.25 sqrt(n) select sqrt(4) from dual; 2 sign(n)select sign(-30) from dual;-1 数字函数数字函数 转换函数 q转换函数将值从一种数据类型转换为另一种数据 类型

35、q常用的转换函数有: qto_char qto_date qto_number select to_char(sysdate,yyyy年年fmmm月月fmdd日日 hh24:mi:ss) from dual; select to_char(itemrate,c99999) from itemfile; select to_date(2005-12-06 , yyyy-mm-dd) from dual; select to_number(100) from dual; 其它函数 q以下是几个用来转换空值的函数: qnvl qnvl2 qnullif select itemdesc, nvl(re

36、_level,0) from itemfile; select itemdesc, nvl2(re_level,re_level,max_level) from itemfile; select itemdesc, nullif(re_level,max_level) from itemfile; 分组函数 q分组函数基于一组行来返回结果 q为每一组行返回一个值 avgminmaxsumcount select avg(re_level) from itemfile where p_category=accessories; select max(max_level) from itemfil

37、e; select sum(itemrate*max_level) from itemfile; select count(*) from itemfile; select count(itemrate) from itemfile; select count(distinct qty_hand) from itemfile; 分组函数 group by和having子句 qgroup by子句 q用于将信息划分为更小的组 q每一组行返回针对该组的单个结果 qhaving子句 q用于指定 group by 子句检索行的条件 select p_category, max(itemrate) fr

38、om itemfile group by p_category; select p_category, max(itemrate) from itemfile group by p_category having p_category not in (accessories); 分析函数 2-1 q分析函数根据一组行来计算聚合值 q用于计算完成聚集的累计排名、移动平均数等 q分析函数为每组记录返回多个行 分析函数 dense_rankrankrow_number 分析函数 2-2 以下三个分析函数用于计算一个行在一组有序行 中的排位,序号从1开始 row_number 返回连续的排位,不论值是

39、 否相等 rank 具有相等值的行排位相同,序数随后跳 跃 dense_rank 具有相等值的行排位相同,序 号是连续的 select ename, job, deptno, sal, row_number() over (order by sal desc) as sal_rank from scott.emp; select deptno, ename, sal, comm, rank() over (partition by deptno order by sal desc, comm) rank from emp; select d.dname, e.ename, e.sal, den

40、se_rank() over (partition by e.deptno order by e.sal desc) as denrank from emp e, dept d where e.deptno = d.deptno; 总结 sql 是通用的数据库语言 sql 命令可分为数据定义语言、数据操纵 语言、事务控制语言和数据控制语言 oracle 支持的数据类型包括字符、数值、 日期时间、raw 和 lob 等 sql 支持的操作符包括算术、比较、逻辑、 集合和连接操作符 sql 函数可大致分为单行函数、聚合函数 和分析函数 第三章第三章 锁和表分区 回顾 sql 是数据库语言,orac

41、le 使用该语言在 数据库中存储和检索信息 oracle 支持各种数据类型,如 varchar2、 number、long、raw 和 date 等 数据操纵语言用于查询和修改表中的数据 事务控制语言管理事务的一致性 sql 操作符包括算术、比较、逻辑、集合 和连接操作符 sql 函数可以大致分为单行函数、聚合函 数和分析函数 目标 理解锁定的概念 了解和使用表分区 锁的概念 2-1 锁是数据库用来控制共享资源并发访问的 机制。 锁用于保护正在被修改的数据 直到提交或回滚了事务之后,其他用户才 可以更新数据 锁的概念 2-2 修改表修改表 拒绝访问 toy_i d name price t00

42、1 barbi e 20 t002 gi joe 45 锁定的优点 一致性一致性 - 一次只允许一个用户修改数据 完整性完整性 - 为所有用户提供正确的数据。如果一 个用户进行了修改并保存,所做的修改将反映 给所有用户 q并行性并行性 允许多个用户访问同一数据 toy_i d nam e price t001 barbi e 20 t002 gi joe 45 修改表中 的数据 查看表中 的数据 允许访问 表级锁行级锁 锁的类型 锁的类型 行级锁 3-1 toy_i d nameprice t001barbie20 t002gi joe45 更新 t002 行更新 t001 行 行被锁定 q对

43、正在被修改的行进行锁定。其他用户可以访问 除被锁定的行以外的行 允许访问 行级锁 3-2 行级锁是一种排他锁,防止其他事务修改 此行 在使用以下语句时,oracle会自动应用行级 锁: insert update delete select for update select for update语句允许用户一 次锁定多条记录进行更新 使用commit或rollback语句释放锁 行级锁 3-3 select for update语法: select for update of columns wait n | nowait; sql select * from order_master wh

44、ere vencode=v002 for update of odate, del_date; sql update order_master set del_date=28-8月-05 where vencode=v002; sql commit; sql select * from order_master where vencode=v002 for update wait 5; sql select * from order_master where vencode=v002 for update nowait; 表级锁 3-1 toy_id nameprice t001barbie2

45、0 t002gi joe45 修改表中的行 更新表 拒绝访问 锁定整个表,限制其他用户对表的访问。 表级锁 3-2 表级锁类型 行共享 行排他 共享 使用命令显示地锁定表,应用表级锁的语法 是: lock table table_name in mode mode; 共享行排他 排他 表级锁 3-3 行共享 (row share) 禁止排他锁定表 行排他(row exclusive) 禁止使用排 他锁和共享锁 共享锁(share) 锁定表,仅允许其他用户查询表中的行 禁止其他用户插入、更新和删除行 多个用户可以同时在同一个表上应用此锁 共享行排他(share row exclusive) 比共

46、享锁更多的限制,禁止使用共享锁及 更高的锁 排他(exclusive) 限制最强的表锁,仅 允许其他用户查询该表的行。禁止修改和 锁定表 死锁 当两个事务相互等待 对方释放资源时,就 会形成死锁 oracle会自动检测死 锁,并通过结束其中 的一个事务来解决死 锁 右边是一个死锁的例 子 t1t2 lock (d1) 时间时间 lock (d2) lock (d2) lock (d1) 等待等待 等待等待 表分区 允许用户将一个表分成多个分区 用户可以执行查询,只访问表中的特定分 区 将不同的分区存储在不同的磁盘,提高访 问性能和安全性 可以独立地备份和恢复每个分区 nameaddressst

47、atecountr y john smith 34th rd.californi a us micheal clarke lk rd. new york us jack jones 9th roadcaliforni a us bob simmon s 12th street new york us jim taylor 53rd road new york us 更新表 只访问 p1 p1 分区 p2 分区 表分区的类型 9-1 分区方法分区方法 范围分区散列分区列表分区复合分区 表分区的类型 9-2 范围分区 以表中的一个列或一组列的值的范围分区 范围分区的语法: partition by

48、 range (column_name) ( partition part1 value less than(range1), partition part2 value less than(range2), . partition partn value less than(maxvalue) ); 表分区的类型 9-3 sql create table sales ( product_id varchar2 (5), sales_cost number (10) ) partition by range (sales_cost) ( partition p1 values less tha

49、n (1000), partition p2 values less than (2000), partition p3 values less than (3000) ); 根据 sales_cost 创建分区 分区的名称 包含销售成本低于1000 的所有产品的值 sql create table sales2 ( product_id varchar2(5), sales_date date not null, sales_cost number(10) partition by range (sales_date) ( partition p1 values less than (dat

50、e 2003-01-01), partition p2 values less than (date 2004-01-01), partition p3 values less than (maxvalue) ); 范围分区示例 表分区的类型 9-4 散列分区 允许用户对不具有逻辑范围的数据进行分区 通过在分区键上执行hash函数决定存储的分 区 将数据平均地分布到不同的分区 散列分区语法 partition by hash (column_name) partitions number_of_partitions; 或 partition by hash (column_name) ( pa

51、rtition part1 tablespace tbs1, partition part2 tablespace tbs2, . partition partn tablespace tbsn); 表分区的类型 9-5 散列分区示例 sql create table employee ( employee_id varchar2 (5), employee_name varchar2(20), department varchar2 (10) ) partition by hash (department) ( partition d1, partition d2, partition d3

52、 ); 在表 employee上创建 分区键 department 分区的名称 创建 3 个分区 sql create table employee ( emp_id number(4), emp_name varchar2(14), emp_address varchar2(15), department varchar2(10) ) partition by hash (department) partitions 4; 表分区的类型 9-6 列表分区 允许用户将不相关的数据组织在一起 列表分区的语法: partition by list (column_name) ( partition

53、 part1 values (values_list1), partition part2 values (values_list2), . partition partn values (default) ); 表分区的类型 9-7 sql create table employee ( emp_id number (4), emp_name varchar2 (14), emp_address varchar2 (15) ) partition by list (emp_address) ( partition north values (芝加哥), partition west valu

54、es (旧金山, 洛杉矶), partition south values (亚特兰大, 达拉斯, 休斯顿), partition east values (纽约, 波斯顿) ); 包含住在芝加哥的职员 的记录 根据职员住址在 表上创建的列表 分区 分区的名称 列表分区示例 表分区的类型 9-8 复合分区 范围分区与散列分区或列表分区的组合 复合分区的语法: partition by range (column_name1) subpartition by hash (column_name2) subpartitions number_of_partitions ( partition pa

55、rt1 value less than(range1), partition part2 value less than(range2), . partition partn value less than(maxvalue) ); 表分区的类型 9-9 sql create table sales ( product_id varchar2 (5), sales_date date not null, sales_cost number (10) ) partition by range (sales_date) subpartition by hash (product_id) subpa

56、rtitions 5 ( partition s1 values less than (to_date(01/4月/2001, dd/mon/yyyy), partition s2 values less than (to_date(01/7月/2001, dd/mon/yyyy), partition s3 values less than (to_date(01/9月/2001, dd/mon/yyyy), partition s4 values less than (maxvalue) );创建的四个范围分区的名称 在表的 sales_date 列中创建范围分区 在表的 product_

57、id 列创建散列子分区 在每个范围分区中 创建 5 个散列子分区 复合分区示例 操纵已分区的表 在已分区的表中插入数据与操作普通表完 全相同,oracle会自动将数据保存到对应的 分区 查询、修改和删除分区表时可以显式指定 要操作的分区 insert into sales3 values (p001, 02-3月-2001, 2000); insert into sales3 values (p002, 10-5月-2001, 2508); insert into sales3 values (p003, 05-7月-2001, 780); insert into sales3 values

58、(p004, 12-9月-2001, 1080); select * from sales3 partition (p3); delete from sales3 partition (p2); 分区维护操作 分区维护操作修改已分区表的分区。 分区维护的类型: 计划事件 定期删除最旧的分区 非计划事件 解决应用程序或系统问题 分区维护操作有: 添加分区 删除分区 截断分区 合并分区 拆分分区 维护分区 2-1 添加分区 在最后一个分区之后添加新分 区 sql alter table sales add partition p4 values less than (4000); 删除分区 删除一

59、个指定的分区,分区的 数据也随之删除 sql alter table sales drop partition p4; 截断分区 删除指定分区中的所有记 录 sql alter table sales truncate partition p3; 维护分区 2-2 合并分区 - 将范围分区或复合分区的两个相 邻分区连接起来 sql alter table sales merge partitions s1, s2 into partition s2; 拆分分区 - 将一个大分区中的记录拆分到两 个分区中 sql alter table sales split partition p2 at (

60、1500) into (partition p21, partition p22); 总结 锁用于保护多用户环境下被修改的数据 锁分为两种级别,即行级锁和表级锁 表分区允许将一个表划分成几部分,以改 善大型应用系统的性能 分区方法包括范围分区、散列分区、复合 分区和列表分区 分区维护操作包括添加、删除、截断、合 并和拆分分区 第四章第四章 数据库对象 回顾 锁用于保护多用户环境下被修改的数据 锁分为两种级别,即行级锁和表级锁 表分区允许将一个表划分成几部分,以改 善大型应用系统的性能 分区方法包括范围分区、散列分区、复合 分区和列表分区 分区维护操作包括添加、删除、截断、合 并和拆分分区 目标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论