oca笔记及部分真题_第1页
oca笔记及部分真题_第2页
oca笔记及部分真题_第3页
oca笔记及部分真题_第4页
oca笔记及部分真题_第5页
已阅读5页,还剩163页未读 继续免费阅读

下载本文档

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

文档简介

SQL语句分类

DDL:datedefinelanguage数据定义语句

createdropalter

DCL:datecontrollanguage数据控制语句

grantrevoke

DML:datemaniplationlanuage数据操作语句

deleteupdateinsert

ONDELETECASCADE

ALTERTABLEOrder_Items

ADDCONSTRAINTOrder_Items_Product_ID_FK

FOREIGNKEY(Product_ld)

REFERENCESProduct_Information

ONDELETECASCADE;

为表order_items(Product_id)添力口一个外键Order_ltems_Product_lD_FK

级联product」nformation(product_id),加上ONDELETECASCADE后,如果主表

ordejitems删除一条记录,那么product_Information中对应的关联的数据也跟着删除

PL/SQL

PL/SQL基础

PL/SQL基础

PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合

到ORACLE服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,

本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序。

PL/SQL的优点

从版本6开始PL/SQL就被可靠的整合到ORACLE中了,•旦掌握PL/SQL的优点以

及其独有的数据管理的便利性,那么你很难想象ORACLE缺了PL/SQL的情形。PL/SQL不

是一个独立的产品,他是一个整合到ORACLE服务器和ORACLE工具中的技术,可以把

PL/SQL看作ORACLE服务器内的一个引擎,sql语句执行者处理单个的sql语句,PL/SQL

引擎处理PL/SQL程序块。当PL/SQL程序块在PL/SQL引擎处理时,ORACLE服务器中的

SQL语句执行器处理pl/sql程序块中的SQL语句。

PL/SQL的优点如下:

.PL/SQL是一种高性能的基于事务处理的语言,能运行在任何ORACLE环境中,支持

所有数据处理命令。通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。

.PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有ORACLE对象类型

.PL/SQL块可以被命名和存储在ORACLE服务器中,同时也能被其他的PL/SQL程序

或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。

,可以使用ORACLE数据工具管理存储在服务器中的PL/SQL程序的安全性。可以授

权或撤销数据库其他用户访问PL/SQL程序的能力。

.PUSQL代码可以使用任何ASCII文本编辑器编写,所以对任何ORACLE能够运行的

操作系统都是非常便利的

.对于SQL,ORACLE必须在同一时间处理每一条SQL语句,在网络环境下这就意味

作每一个独立的调用都必须被oracle服务器处理,这就占用大量的服务器时间,同时导致网

络拥挤。而PL/SQL是以整个语句块发给服务器,这就降低了网络拥挤。

PL/SQL块结构

PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL程序

包含了一个或多个逻辑块,每个块都可以划分为三个部分。与其他语言相同,变量在使用之

前必须声明,PL/SQL提供了独立的专门用于处理异常的部分,下面描述了PL/SQL块的不

同部分:

声明部分(Declarationsection)

声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开

始,如果不需要声明变量或常量,那么可以忽略这一部分;需要说明的是游标的声明也在这

一部分。

执行部分(Executablesection)

执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放

在这一部分,其他的PL/SQL块也可以放在这一部分。

异常处理部分(Exceptionsection)

这一部分是可选的,在这一部分中处理异常或错误,对异常处理的详细讨论我们在后面

进行。

PL/SQL块语法

[DECLARE]

declarationstatements

BEGIN

executablestatements

[EXCEPTION]

exceptionstatements

END

PL/SQL块中的每一条语句都必须以分号结束,SQL语句可以使多行的,但分号表示该

语句的结束。一行中可以有多条SQL语句,他们之间以分号分隔。每一个PL/SQL块由BEGIN

或DECLARE开始,以END结束。注释由一标示。

PL/SQL块的命名和匿名

PL/SQL程序块可以是一个命名的程序块也可以是一个匿名程序块。匿名程序块可以用

在服务器端也可以用在客户端。

命名程序块可以出现在其他PL/SQL程序块的声明部分,这方面比较明显的是子程序,

子程序可以在执行部分引用,也可以在异常处理部分引用。

PL/SQL程序块可背独立编译并存储在数据库中,任何与数据库相连接的应用程序都可

以访问这些存储的PL/SQL程序块。ORACLE提供了四种类型的可存储的程序:

.函数

.过程

.包

.触发器

函数

函数是命名了的、存储在数据库中的PL/SQL程序块。函数接受零个或多个输入参数,

有一个返回值,返回值的数据类型在创建函数时定义。定义函数的语法如下:

FUNCTIONname[{parameter[,parameter,...])]RETURNdatatypesIS

[localdeclarations]

BEGIN

executestatements

[EXCEPTION

exceptionhandlers]

END[name]

过程

存储过程是一个PL/SQL程序块,接受零个或多个参数作为输入(INPUT)或输出

(OUTPUT),或既作输入又作输出(INOUT),与函数不同,存储过程没有返回值,存储过程

不能由SQL语句直接使用,只能通过EXECUT命令或PL/SQL程序块内部调用,定义存储

过程的语法如下:

PROCEDUREname[(parameter[,parameter,...|)|IS

[localdeclarations]

BEGIN

executestatements

[EXCEPTION

exceptionhandlers]

END[name]

包(package)

包其实就是被组合在一起的相关对象的集合,当包中任何函数或存储过程被调用,包就

被加载入内存中,包中的任何函数或存储过程的子程序访问速度将大大加快。

包由两个部分组成:规范和包主体(body),规范描述变量、常量、游标、和子程序,包体完全

定义子程序和游标。

触发器(trigger)

触发器与一个表或数据库事件联系在一起的,当一个触发器事件发生时,定义在表上的

触发器被触发。变量和常量

变量存放在内存中以获得值,能被PUSQL块引用。你可以把变量想象成一个可储藏东

西的容器,容器内的东西是可以改变的。

声明变量

变量一般都在PL/SQL块的声明部分声明,PL/SQL是一种强壮的类型语言,这就是说

在引用变量前必须首先声明,要在执行或异常处理部分使用变量,那么变量必须首先在声明

部分进行声明。

声明变量的语法如下:

Variable_name[CONSTANT]databyte[NOTNULL][:=IDEFAULTexpression]

注意:可以在声明变量的同时给变量强制性的加上NOTNULL约束条件,此时变量在初

始化时必须赋值。

给变量赋值

给变量赚值有两种方式:

.直接给变量赋值

X:=200;

Y=Y+(X*20);

.通过SQLSELECTINTO或FETCHINTO给变量赋值

SELECTSUM(SALARY),SUM(SALARY*O.1)

INTOTOTAL_SALARY,TATAL_COMMISSION

FROMEMPLOYEE

WHEREDEPT=10;

常量

常量与变量相似,但常量的值在程序内部不能改变,常量的值在定义时赋予,,他的声

明方式与变量相似,但必须包括关键字CONSTANT。常量和变量都可被定义为SQL和用户

定义的数据类型。

ZERO_VALUECONSTANTNUMBER:=0;

这个语句定了一个名叫ZERO_VALUE、数据类型是NUMBER、值为0的常量。

标量(scalar)数据类型

标量(scalar)数据类型没有内部组件,他们大致可分为以下四类:

.number

.character

.date/time

.boolean

表1显示了数字数据类型;表2显示了字符数据类型;表3显示了日期和布尔数据类型。

表1ScalarTypes:Numeric

Datatype

Range

Subtypes

description

BINARYJNTEGER

-214748-2147483647

NATURAL

NATURAL

NPOSITIVE

POSITIVEN

SIGNTYPE

用于存储单字节整数。

要求存储长度低于NUMBER值。

用于限制范围的子类型(SUBTYPE):

NATURAL:用于非负数

POSITIVE:只用于正数

NATURALN:只用于非负数和非NULL值

POSITIVEN:只用于正数,不能用于NULL值

SIGNTYPE:只有值:・1、0或1.

NUMBER

1.0E-130-9.99E125

DEC

DECIMAL

DOUBLE

PRECISION

FLOAT

INTEGERIC

INT

NUMERIC

REAL

SMALLINT

存储数字值,包括整数和浮点数。可以选择精度和刻度方式,语法:

number[([,])

缺省的精度是38,scale是0.

PLS_INTEGER

-2147483647-2147483647

与BINARY」NTEGER基本相同,但采用机器运算时,PLS」NTEGER提供更好的性能。

表2字符数据类型

datatype

rang

subtype

description

CHAR

最大长度32767字节

CHARACTER

存储定长字符串,如果长度没有确定,缺省是1

LONG

最大长度2147483647字节

存储可变长度字符串

RAW

最大长度32767字节

用于存储二进制数据和字节字符串,当在两个数据库之间进行传递时,RAW数据不在字符

集之间进行转换。

LONGRAW

最大长度2147483647

与LONG数据类型相似,同样他也不能在字符集之间进行转换。

ROWID

18个字节

与数据库ROWID伪列类型相同,能够存储一个行标示符,可以将行标示符看作数据库中每

一行的唯一键值。

VARCHAR2

最大长度32767字节

STRINGVARCHAR

与VARCHAR数据类型相似,存储可变长度的字符串。声明方法与VARCHAR相同

表3DATE和BOOLEAN

datatype

range

description

BOOLEAN

TRUE/FALSE

存储逻辑值TRUE或FALSE,无参数

DATE

01/01/4712BC

存储固定长的日期和时间值,日期值中包含时间

LOB数据类型

LOB(大对象,Largeobject)数据类型用于存储类似图像,声音这样的大型数据对象,LOB

数据对象可以是二进制数据也可以是字符数据,其最大长度不超过4G。LOB数据类型支持

任意访问方式,LONG只支持顺序访问方式。LOB存储在一个单独的位置上,同时一个“LOB

定位符”(LOBlocator)存储在原始的表中,该定位符是一个指向实际数据的指针。在PL/SQL

中操作LOB数据对象使用ORACLE提供的包DBMSJLOB.LOB数据类型可分为以下四类:

.BFILE

.BLOB

.CLOB

.NCLOB

操作符

与其他程序设计语言相同,PL7SQL有一系列操作符。操作符分为下面儿类:

.算术操作符

.关系操作符

.比较操作符

.逻辑操作符

算术操作符如表4所示

operator

operation

**

乘方

关系操作符主要用于条件判断语句或用于where子串中,关系操作符检查条件和结果是

否为true或false,表5是PL/SQL中的关系操作符

operator

operation

<

小于操作符

<=

小于或等于操作符

>

大于操作符

>=

大于或等于操作符

等于操作符

不等于操作符

<>

不等于操作符

赋值操作符

表6显示的是比较操作符

operator

operation

ISNULL

如果操作数为NULL返回TRUE

LIKE

比较字符串值

BETWEEN

验证值是否在范围之内

IN

验证操作数在设定的一系列值中

表7.8显示的是逻辑操作符

operator

operation

AND

两个条件都必须满足

OR

只要满足两个条件中的一个

NOT

取反

执行部分

执行部分包含了所有的语句和表达式,执行部分以关键字BEGIN开始,以关键字

EXCEPTION结束,如果EXCEPTION不存在,那么将以关键字END结束。分号分隔每一

条语句,使用赋值操作符二或SELECTINTO或FETCHINTO给每个变量赋值,执行部分的

错误将在异常处理部分解决,在执行部分中可以使用另一个PL/SQL程序块,这种程序块被

称为嵌套块

所有的SQL数据操作语句都可以用于执行部分,PL/SQL块不能再屏幕上显示SELECT

语句的输出。SELECT语句必须包括一个INTO子串或者是游标的一部分,执行部分使用的

变量和常量必须首先在声明部分声明,执行部分必须至少包括一条可执行语句,NULL是一

条合法的可执行语句,事物控制语句COMMIT和ROLLBACK可以在执行部分使用,数据

定义语言(DataDefinitionlanguage)不能在执行部分中使用,DDL语句与EXECUTE

IMMEDIATE一起使用或者是DBMS_SQL调用。

执行一个PL/SQL块

SQL*PLUS中匿名的PL/SQL块的执行是在PUSQL块后输入/来执行,如下面的例子所

示:

declare

v_comm_percentconstantnumber:=10;

begin

updateemp

setcomm=sal*v_comm_percent

wheredeptno=10;

end

SQL>/

PL/SQLproceduresuccessfullycompleted.

SQL>

命名的程序与匿名程序的执行不同,执行命名的程序块必须使用execute关键字:

createorreplaceprocedureupdate_commission

(v_deptinnumber,v_perventinnumberdefault10)is

begin

updateemp

setcomm=sal*v_percent

wheredeptno=v_dept;

end

SQL>/

Procedurecreated

SQL>executeupdate_commission(10,15);

PL/SQLproceduresuccessfullycompleted.

SQL>

如果在另一个命名程序块或匿名程序块中执行这个程序,那么就不需要EXECUTE关

进字。

declare

v_deptnumber;

begin

selecta.deptno

intov_dept

fromempa

wherejob=,PRESIDENT,

update_commission(v_dept);

end

SQL>/

PL/SQLproceduresuccessfullycompleted

SQL>

控制结构

控制结构控制PL/SQL程序流程的代码行,PL/SQL支持条件控制和循环控制结构。

语法和用途

IF..THEN

语法:

IFconditionTHEN

Statements1;

Statements2;

ENDIF

IF语句判断条件condition是否为TRUE,如果是,则执行THEN后面的语句,如果

condition为false或NULL则跳过THEN到ENDIF之间的语句,执行ENDIF后面的语句。

IF..THEN...ELSE

语法:

IFconditionTHEN

Statements1;

Statements2;

ELSE

Statements1;

Statements2;

ENDIF

如果条件condition为TRUE,则执行THEN到ELSE之间的语句,否则执行ELSE至ljEND

IF之间的语句。

IF可以嵌套,可以在IF或加.上1^£语句中使用中或正石1^£语句。

if(a>b)and(a>c)then

g:=a;

else

g:=b;

ifc>gthen

g:=c;

endif

endif

IF..THEN..ELSIF

语法:

IFcondition1THEN

statement1;

ELSIFcondition?THEN

statement?;

ELSIFconditionsTHEN

statement?;

ELSE

statement4;

ENDIF;

statement5;

如果条件condition1为TRUE则执行statement,然后执行statements,否贝(I判断condition2

是否为TRUE,若为TRUE则执行statement2,然后执行statements,对于conditions也是相同的,

condition),condition2,conditions都不成立,那么将执行statement4然后执行statementso

循环控制

循环控制的基本形式是LOOP语句,LOOP和ENDLOOP之间的语句将无限次的执行。

LOOP语句的语法如下:

LOOP

statements;

ENDLOOP

LOOP和ENDLOOP之间的语句无限次的执行显然是不行的,那么在使用LOOP语句

时必须使用EXIT语句,强制循环结束,例如:

X:=100;

LOOP

X:=X+10;

IFX>1000THEN

EXIT;

ENDIF

ENDLOOP;

Y:=X;

此时Y的值是1010.

EXITWHEN语句将结束循环,如果条件为TRUE,则结束循环。

X:=100;

LOOP

X:=X+10;

EXITWHENX>1000;

X:=X+10;

ENDLOOP;

Y:=X;

WHILE..LOOP

WHILE..LOOP有一个条件与循环相联系,如果条件为TRUE,则执行循环体内的语句,

如果结果为FALSE,则结束循环。

X:=100;

WHILEX<=1000LOOP

X:=X+10;

ENDLOOP;

Y=X;

FOR...LOOP

语法:

FORcounterIN[REVERSE]start_rangeend_rangeLOOP

statements;

ENDLOOP;

LOOP和WHILE循环的循环次数都是不确定的,FOR循环的循环次数是固定的,counter

是一个隐式声明的变量,他的初始值是start_range,第二个值是start_range+l,直到end_range,

如果触!1」《^等于€起」3*3那么循环将执行一次。如果使用了REVERSE关键字,那么

范围将是一个降序。

X:=100;

FORv_counterin1..10loop

X:=X+10;

endloop

y:=x;

如果要退出for循环可以使用EXIT语句。

标签

用户可以使用标签使程序获得更好的可读性。程序块或循环都可以被标记。标签的形式

是<>。

标记程序块

<>

[DECLARE]

BEGIN

[EXCEPTION]

ENDlabel_name

标记循环

<>

LOOP

<>

loop

<>

loop

EXITouter_loopWHENv_condition=0;

endloopinnermost_loop;

ENDLOOPinner_loop;

ENDLOOPouter_loop;

GOTO语句

语法:

GOTOLABEL;

执行GOTO语句时,控制会立即转到由标签标记的语句。PL/SQL中对GOTO语句有

一些限制,对于块、循环、IF语句而言,从外层跳转到内层是非法的。

X:=100;

FORV_COUNTERIN1..10LOOP

IFV_COUNTER=4THEN

GOTOend_ofLloop

ENDIF

X:=X+10;

<>

NULL

ENDLOOP

Y:=X;

注意:NULL是一个合法的可执行语句。

嵌套

程序块的内部可以有另一个程序块这种情况称为嵌套。嵌套要注意的是变量,定义在最

外部程序块中的变量可以在所有子块中使用,如果在子块中定义了与外部程序块变量相同的

变量名,在执行子块时将使用子块中定义的变量。子块中定义的变量不能被父块引用。同样

GOTO语句不能由父块跳转道子块中,反之则是合法的。

《OUTERBLOCK》

DECLARE

A_NUMBERINTEGER;

B_NUMBERINTEGER;

BEGIN

-A.NUMBERandB_NUMBERareavailablehere

<>

DECLARE

C.NUMBERINTEGER

B.NUMBERNUMBER(20)

BEGIN

C_NUMBER:=A_NUMBER;

C_NUMBER=OUTER_BLOCK.B_NUMBER;

ENDSUB.BLOCK;

ENDOUT.BLOCK;

小结

我们在这篇文章中介绍了PUSQL的基础语法以及如何使用PL/SQL语言设计和运行

PL/SQL程序块,并将PL/SQL程序整合到Oracle服务器中,虽然PL/SQL程序作为功能块嵌

入Oracle数据库中,但PL/SQL与ORACLE数据库的紧密结合使得越来越多的Oracle数据

库管理员和开发人员开始使用PL/SQLo

extentmanagement

extentmanagement有两种方式extentmanagementlocal;extentmanagementdictionary

默认的是local

每种也有两种大小增长方式:

uniform:默认为1M大小,在lemp表空间里为默认的,但是不能被应用在undo表空间

autoallocate:

Youcanconvertatablespacefromdictionaryextentmanagementtolocalextentmanagement

andbackwiththeOracle-suppliedPL/SQLpackageDBMS_SPACE_ADMIN.TheSYSTEM

tablespaceandanytemporarytablespaces,however,cannotbeconvertedfromlocaltothe

olderstyledictionarymanagem

两种extent管理方式是可以相互转换的,利用PL/SQLDBMS_SPACE_ADMIN

但是系统表空间和临时表空间不能从local管理转化到dictionary管理。

segmentmanagement

当你利用了localextentmanagement,你可以手工还是自动来管理段。

建立temp表空间

要是建立一个新的临时表空间的话,必须要求system表空间是本地管理的

而且不需要备份和不会对redolog产生变化。

undotablespaces

undo表空间的用途

RollingbackatransactionexplicitlywithaROLLBACKstatement

Rollingbackatransactionimplicitly(forexample,throughrecoveryofafailedtransaction)

Reconstructingaread-consistentimageofdata

Recoveringfromlogicalcorruptions

表空间的改变

改名:

altertablespacefinrenametoyanwei;

添加数据文件:

altertablespaceyanweiadddatafile*****

size10g

转移表空间中的数据文件步骤

I,把表空间offline

altertablespacereceivalesoffline;

2,利用系统命令重新copy

3,tell数据库新位置

ALTERTABLESPACEreceivablesRENAMEDATAFILE

H:\ORACLE\ORADATA\ORA10\RECEIVABLES02.DBF'

TO'G:\ORACLE\ORADATA\ORA10\RECEIVABLES02.DBF;

4,onlinetablespace

altertablespace*online

当一个表空间设置为readonly时候,做数据库备份的时候不备份。

命令

altertablespace**readonly;

altertablespace**readwrite;

表空间备份

PuttingaTablespaceinBackupMode

ALTERTABLESPACEsystemBEGINBACKUP;

ALTERTABLESPACEsystemendBACKUP;

当表空间在backupmode时候。数据文件还是可以读写的,但是,些checkpoint的发生不会

记录在数据文件的表头。

获取表空间的信息

dba_tablespaces

dba_data_files

dba_temp_files

v$tablespace

数据文件

重新定义大小

alterdatabasedatafile****resize100m;

可以定义自动增长

alterdatabasedatafile***autoextentonnext100mmaxsize1000m;

移动文件位置

1,数据文件offline

alterdatabasedatafile****offline;

2,在系统操作copy

3,告诉database更新controlfile

alterdatabaserenamefile

***to****•

4,同步文件的表头

recoverdatafile*****;

5,online文件

alterdatabasedatafile**online;

schemaobject

schemaobject计划对象

计划对象包括表索引这些在表空间中看到的

还包括contraints,view,synonyms,prtcedures,package但是一些数据库对象:比如role,

表空间和目录这些属于计划对象.

添加表或者column评论(comments)

最大可以写到4000bytes

语法:commentontable表名名字'内容'

修改表名

rename表名to新表名

或者

altertable表名renameto新表名;

给表添加专栏(column)

altertable表名addcolumn专栏名数据类型

删除专栏

altertable表名dropcolumn专栏名;

改变专栏

altertable表名modify专栏名数据类型;

参看约束

SELECTconstraint_name,constraint_type,r_constraint_name

FROMuser_constraints

WHEREtable_name='EMPLOYEES,;

CONS

CONSTRAINT_NAMETYPER_CONSTRAINT_NAME

NN_EMP_IDC

SYS_C005286C

EMPLOYEES.PKP

UNIQ_PAYROLL_IDU

EMP_DEPT_FKRDEPARTMENT_PK

MGR_EMP_FKREMPLOYEES_PK

HIRE_DATE_CHECKC

C就是check

P=PRIMARYKEY

R=Referential或者foreignkey

U=unique

或者

SELECTsearch_condition

FROMuser_constraints

WHEREconstraint_name=,SYS_C005286,;

临时表

oracle下创建临时表

两种方法

当前会话提交事务时保存临时表数据,当前会话结束时删除临时表数据,其它会话不能看

到该会话中该临时表的数据。

CREATEGLOBALTEMPORARYTABLEyanwei

(murkeyvarchar2(10)));

ONCOMMITPRESERVEROWS;

上不同的是提交事务时删除临时表中数据。

CREATEGLOBALTEMPORARYTABLE

(NORMALHELDDESC)

ONCOMMITDELETEROWS;

约束

约束包括:

notnull,unique,primarykey,renferntial,check,

UNIQUEconstraintscannotbecreatedoncolumns

oftypeCLOB,NCLOB,BLOB,LONG,LONGRAW,orTIMESTAMPWITHTIMEZONE.

不能在上面所说的上面建立UNIQUE,null不算是,换句话就是说可以有多个NULL。可

以利用索引来加强约束。

CREATETABLEemployees

(employee.idNUMBERNOTNULL

,hire_dateDATENOTNULL

,first_nameVARCHAR2(42)

,last_nameVARCHAR2(42)

,payroll_idVARCHAR2(10)

CONSTRAINTuniq_payroll_idUNIQUE(payroll_id)

USINGINDEXTABLESPACEindx

);

在建立表后还可以加UNIQUE限制

ALTERTABLEemployeesADD

CONSTRAINTuniq_payroll_idUNIQUE(payrolljd)

USINGINDEXTABLESPACEindx

primaykey

一个表只能有一个primaykey,主要定义了primaykey,那么同时也就是notnull和unique,

强行利用indexo

和unique一样,不能在CLOB,NCLOB,BLOB,LONG,LONGRAW,orTIMESTAMPWITH

TIMEZONE.上建立

改变约束

删除

ALTERTABLEemployeesDROPCONSTRAINTvalidate_hire_date;

删除主键

ALTERTABLEemployeesDROPPRIMARYKEYCASCADE;

修改约束名字

ALTERTABLEemployees

RENAMECONSTRAINTvalidate_hire_dateTOhire_date_check;

foreignkey

ALTERTABLEemployees

ADDCONSTRAINTemp_dept_fkFOREIGNKEY(dept_nbr)

REFERENCESdepartments(dept_nbr)ONDELETECASCADE;

ALTERTABLEdepartmentsADDCONSTRAINT

dept_mgr_fT<FOREIGNKEY(managerjd)REFERENCES

employees(employee_id)ONDELETESETNULL;

INDEX

PRIMARYKEYorUNIQUE是BTREE索引

索引有两个:BTREE和BITMAP

建立索引

默认都是btree

createindexemp_dept_nbrONemployees(dept_nbr)

也可以建立一个uniqueindex

createuniqueindexdname_uixONdepartments(dept_name);

同时可以在一个表上建立多个索引

CREATEINDEXemp_seniorityON

employees(dept_nbr,hire_date)

TABLESPACEindx;

建立位图索引

CREATEBITMAPINDEXstate_bixONgeography(state);

CREATEBITMAPINDEXregion_bixONgeography(region);

CREATEBITMAPINDEXmetro_bixONgeogniphy(metro_area);

删除索引

dropindex索引名字

重建索引

alterindex索引名字rebuild

把索引转移表空间

alterindex索引名rebuildtablespace表空间名字

结合索引coalescing

ALTERINDEXuniq_payroll_idCOALESCE;

对索弓I重新命名

ALTERINDEXsys_c001428RENAMETOemployee_pk;

SEQUENCE

Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自

增长主键或序号的地方.

下面介绍一下关于sequence的生成,修改,删除等常用的操作:

1.创建Sequence

使用如下命令新建sequence(用户需要有CREATESEQUENCE或者CREATEANY

SEQUENCE权限):

CREATESEQUENCEtest_sequence

INCREMENTBY1-每次加的个数据

STARTWITH1一从1开始计数

NOMAXVALUE-不设置最大值

NOCYCLE-一直累加,不循环

CACHE10;

[注意]

如果设置了CACHE值,ORACLE将在内存里预先放置一些sequence,以使存取速度更快。

cache里面的取完后,oracle自动再取一组到cache。但是,使用cache可能会跳号,当遇

到数据库突然异常down掉(shutdownabort),cache中的sequence就会丢失.

因此,推荐在createsequence的时候使用nocache选项。

2.使用sequence:

sequenee.CURRVAL—返回sequence的当前值

sequence.NEXTVAL—增加sequence的值,然后返回sequence值

[注意]

第一次NEXTVAL返回的是初始值;

随后的NEXTVAL会自动增加你定义的INCREMENTBY值,然后返回增加后的值。

CURRVAL总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用

CURRVAL,否则会出错。

一次NEXTVAL会增加•次SEQUENCE的值,所以如果你在同一个语句里面使用多个

NEXTVAL,其值就是不•样的。

sequence存储在数据字典中,存储于user_sequences表

LAST_NUMBER为最终序列号,也就是sequence游标当前所在的位置。

//getsequencelast_number

SELECTLAST_NUMBERFROMUSER_SEQUENCESWHERE

SEQUENCE.NAME=TEST_SEQNAME

//NEXTVAL使游标指向下一位(增一或减一)

SELECTSEQNAME.NEXTVALFROMUSER_SEQUENCES得到下一位游标的值

3.修改Sequence

用户必须拥有ALTERANYSEQUENCE权限才能修改sequence.可以alter•除start至以外的

所有sequence参数.

如果想要改变start值,必须dropsequence再re-create.

命令格式如下:

ALTERSEQUENCEtest_sequence

INCREMENTBY10

MAXVALUE10000

CYCLE-到10000后从头开始

NOCACHE;

4.删除Sequence

DROPSEQUENCEorder_seq;

CADDBBCADCDBACDEDABBDBDCBDCAD

做错的题目

2.Automaticsegmentspacemanagementonthetablespacecauseswhichofthefollowingtable

attributesinthattablespacetobeignored?

A.Thewholestorageclause

B.NEXTandPCTINCREASE

C.BUFFERPOOLandFREEPOOL

D.PCTFREEandPCTUSED

D

D.Segmentspacemanagementreferstofreespacemanagement,withautomaticsegmentspace

managementusingbitmapsinsteadofFREELISTS,PCTFREE,andPCTUSED.

3.Whichobjectssharethesamenamespaceandthereforecannothavethesamename?

A.Tablesandindexes

B.Tablesandprocedures

C.Tablesandconstraints

D.Tablesandtriggers

3.B.Indexes,constraints,andtriggersallhaveseparatenamespaces.Tablesshareanamespace

with

views,sequences,privatesynonyms,procedures,functions,packages,materializedviews,and

user-definedtypes.Objectswithinthesameschemasharinganamespacemusthaveuniquenames

5.Withwhichparametersdoyouspecifyunlimiteddatafilegrowth?

A.MAXSIZEUNLIMITED

B.UNLIMITEDGROWTH

C.MAXEXTENTSUNLIMITED

D.Datafilesizecannotchange.

5.A.TheautoextendMAXSIZEparametertellsOraclehowlargeadataortempfilecangrowto.

UNLIMITEDspecifiesnoboundstotheautomaticgrowth.

8.Atablenamecanneverincludethespecialmeta-characterdollarsign($).

A.True

B.False

C.Onlyifthetablenameisenclosedindoublequotes

D.Onlyifthetablenameisenclosedinsinglequotes

11.WhichoperationcanyounotdotoatablethatiscreatedwiththefollowingSQLstatement?

CREATETABLEproperties

("Location"NUMBERprimarykey

,valueNUMBER(15)

Jotvarchar2(12)

,constraintpositive_valuecheck

(value>0)

);

A.Renametheprimarykeytoproperties.

B.Insertanullintothevaluecolumn.

C.Addacolumnnamedowner.

D.Renametheindexsupportingprimarykeytoproperties.

E.Noneoftheabove.

11.E.Youcanrenamebothaconstraintandanindextothesamenameasatable-theyarein

separatenamespaces.Columnscanbeadded,andownerisavalidcolumnname.Ifthecheck

constraintconditionevaluatestoFALSE,thedatavaluewillnotbeallowed;ifthecondition

evaluates

toeitherTRUEorNULL,thevalueisallowed.

13.Whichconstraint-checkingmodelisthedefault?

A.Initiallyimmediateanddeferrable

B.Initiallyimmediateandnotdeferrable

C.Initiallydeferredandnotimmediately

D.Initiallydeferrableandnotimmediate

13.B.Constraintscanbecreatedasdeferrableandinitiallydeferred,butdeferredconstraint

checking

isnotthedefault.

14.Whichstatementonviewsistrue?

A.Aviewcanonlybeononebasetable,althoughthatbasetablecanbejoinedtoitself.

B.Aviewcannotbecreatedwiththesamenameandcolumnsasthebasetable.

C.Insertsintoaviewarenotallowed.

D.Privilegesonaviewcanbedifferentfromthoseonthebasetable.

14.D.Viewscanbecreatedononeormorebasetable.Viewssharethesamenamespaceastables

and

thereforecannothavethesamename;columns,however,canbenamedthesameasthebasetable.

SELECT,INSERT,UPDATE,andDELETEareallvalidoperationsonaview.Oneoftheusesfor

aview

istohideportionsofthebasetable,bygrantingdifferentprivilegestotheviewthanthebasetable.

15.Whatcantablespacesbeusedfbr?

A.Toorganizetablesandindexesintomanageablegroupings

B.Tomakesurethatdatastoredinthetablespacedoesnotchange

C.Tomovedatafromonedatabasetoanother

D.Alloftheabove

15.D.Theprimaryuseforatablespaceistoorganizetablesandindexesintomanageableunits.

Someofthemanageableoperationsthatyoucandotoatablespaceincludemakingitread-only

ormovingitfromonedatabasetoanother.

19.Howdoyouspecifythatatemporarytablewillbeemptiedattheendofauser'ssession?

A.CreatethetemporarytablewiththeONCOMMITPRESERVEROWSoption.

B.CreatethetemporarytablewiththeONDISCONNECTPRESERVEROWSoption.

C.CreatethetemporarytablewiththeONDISCONNECTPURGEROWSoption.

D.CreatethetemporarytablewiththeONCOMMITDELETEROWSoption.

19.A.TheoptionsfortemporarytablesareeitherONCOMMITDELETEROWS,withcauses

thetableto

flushattheendofeachtransaction,orONCOMMITPRESERVEROWS,whichcausesthetable

toflush

attheendofeachsession.

oraclenet连接方式

oraclenet连接方式

发表人:bulkauntI发表时间:2007年八月25S,17:15

有些文档说是五种,我看了10g官方文档,只有以下4种,粗略记下。

1localnaming

连接方式如:CONNECTusemame/password@SERVICE_NAME(我们常用的就是这个)

修改tnsnames.ora文件,如下:

sales=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))

(CONNECT_DATA=

(SERVICE_NAME=)))

sqlnet.ora文件如下:

NAMES.DIRECTORY_PATH=(tnsnames,hostname)

2directorynaming

创建一个目录,建立SERVICE_NAME的alias,然后再去访问,访问方式和localnaming类

CONNECTusername/password@SERVICE_NAME

3easyconnectnaming

CONNECTusername/password@[//]host[:port][/service_name]

需要配置HOSTS文件,TNSNAMES.ORA和监听文件

4externalnaming

eccadabcdccacwuadabwuad

cdcbddda

16.YoumanagealargenetworkofserverswithmanyOracle1Oginstancesconfiguredoneach

server.ThecompanywouldliketocentralizetheOracleservicesintoacommonlocationfor

easeofmaintenance.Whichofthefollowingwouldbethebestchoiceforcentralizednaming

services?

A.OracleEasyConnectNaming

B.Localnaming

C.OracleNamesServer

D.OracleInternetDirectory

dl6.D.OIDisOracle'spreferredcentralizednamingservice.OracleNamesServerisnolonger

supported

inOracle10g.

11.Whatarethewaysinwhichaclientcanresolveanetservicename?(Chooseallthatapply.)

A.Localnaming

B.Hostnaming

C.EasyConnectNaming

D.OracleGlobalNaming

E.Alltheabove

11.A,B,C.Oracleusesservicenamesinnetworksinmuchthesamewayitusessynonymsinthe

database.Servicenamesprovidelocationtransparencyandhidethecomplexityofconnect

stringinformation.YoucanconfigureOracleNettoconnectinseveralways,including

hostnaming,

localnaming,OID,andOracleEasyConnectNaming.OracleGlobalNamingisnot

avalidOracleoption.

13.Whichisarequirementforusinghostnaming?

A.Youmustusetnsnames.oraontheclient.

B.YoumustbeusingTCP/IP.

C.YoumusthaveanOIDpresent.

D.Youmusthaveasqlnet.orafilepresentontheclient.

E.Noneoftheabove.

13.B.HostnamingistypicallyusedinsmallinstallationsthathavefewOracledatabases.Thisis

an

attractiveoptionwhenyouwanttominimizeclient-sideconfiguration.TCP/IPisarequirement

whenyouusehostnaming.

14.Towhichofthechoicesbelowdoesthefollowingstatementapply?''Preventsdirect

communication

betweenaclientoutsidethecorporatenetworkandapplicationsinsidethecorporate

network.”

A.Proxy-basedfirewalls

B.Filter-basedfirewalls

C.Bothtypesoffirewalls

D.Neithertypeoffirewall

14.A.Proxy-basedfirewallspreventanydirectcontactbetweenaclientoutsidethecorporate

firewall

andapplicationsinsideacorporatefirewall.Filter-basedfirewallsinspectthepacketheadersbut

passthepacketonwithoutmodificationtothedestinationapplication.Proxy-basedfirewallsact

moreasarelaybetweenexternalclientsandinternalapplications.

4.YouwanttocentrallyadministeralltheOraclenetworkservicesinalargeOracle10g

installation

thatrunsmanynetworkservices.Whichofthefollowingfacilitieswouldbestprovidethis

functionalityatminimalcost?

A.AdvancedSecurity

B.HeterogeneousServices

C.OracleSharedServer

D.OracleInternetDirectory

4.D.The

温馨提示

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

评论

0/150

提交评论