中南大学软件学院Oracle复习Word文件下载.docx
《中南大学软件学院Oracle复习Word文件下载.docx》由会员分享,可在线阅读,更多相关《中南大学软件学院Oracle复习Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
alterdatabasedb02openreadonly
对数据库进行约束:
startuprestrict
放一个事件在约束模块:
altersystemenablerestrictedsession
6、关闭服务器:
a)Normal
b)Transactional
c)Immediate
d)Abort
7、数据字典:
一系列显示记录、核实、提供有关数据库的信息的表
作用:
1)、Oracleserverusesittofindinformationabout:
users、schemaobjects、storagestructures
2)、OracleservermodifiesitwhenaDDLstatementisexecuted
3)、UsersandDBAscanuseitasaread-onlyreferenceforinformationaboutthedatabase
8、权限:
GRANTCREATESESSIONTOemi;
GRANTCREATESESSIONTOemiWITHADMINOPTION;
REVOKECREATETABLEFROMemi;
GRANTEXECUTEONdbms_outputTOjeff;
GRANTUPDATEONemi.customersTOjeffWITHGRANTOPTION;
REVOKESELECTONemi.ordersFROMjeff;
9、角色:
CREATEROLEoe_clerk;
CREATEROLEhr_clerkIDENTIFIEDBYbonus;
ALTERROLEoe_clerkIDENTIFIEDBYorder;
ALTERROLEhr_clerkIDENTIFIEDEXTERNALLY;
ALTERROLEhr_managerNOTIDENTIFIED;
GRANToe_clerkTOscott;
GRANThr_clerkTOhr_manager;
GRANThr_managerTOscottWITHADMINOPTION;
ALTERUSERscottDEFAULTROLEhr_clerk,oe_clerk;
ALTERUSERscottDEFAULTROLEALL;
ALTERUSERscottDEFAULTROLEALLEXCEPThr_clerk;
ALTERUSERscottDEFAULTROLENONE;
10、
SELECTlast_name,job_id,salary,
CASEjob_idWHEN'
IT_PROG'
THEN1.10*salary
WHEN'
ST_CLERK'
THEN1.15*salary
SA_REP'
THEN1.20*salary
ELSEsalaryEND"
REVISED_SALARY"
FROMemployees;
DECODE(job_id,'
1.10*salary,
'
1.15*salary,
1.20*salary,
salary)
REVISED_SALARY
在一个SQL中对一个表同时执行inserts和updates操作。
MERGEINTOcopy_empc
USINGemployeese
ON(c.employee_id=e.employee_id)
WHENMATCHEDTHEN
UPDATESET
...
WHENNOTMATCHEDTHEN
INSERTVALUES...;
11、PL/SQL的特点:
过程化和模块化
使用过程化语言的控制结构
错误处理
可移植性
集成
改善性能
12、PL/SQL程序的单元由逻辑块组成
Declear(可选)
Begin(必须)
Exception(可选)
End;
/
13、IF语句:
DECLARE
v_salemp.sal%type;
BEGIN
SELECTsalINTOv_salFROMempWHEREempno=7788;
IFv_sal<
500THEN
UPDATEempSETsal=sal*1.5WHEREempno=7788;
ELSIFv_sal<
1500THEN
UPDATEempSETsal=sal*1.3WHEREempno=7788;
ELSE
UPDATEempSETsal=sal*1.0WHEREempno=7788;
ENDIF;
COMMIT;
END;
14、CASE语句:
CASE
WHENgrade=‘A’THENdbms_output.put_line(‘excellent’);
WHENgrade=‘B’THENdbms_output.put_line(‘verygood’);
WHENgrade=‘C’THENdbms_output.put_line(‘good’);
WHENgrade=‘D’THENdbms_output.put_line(‘fair’);
WHENgrade=‘F’THENdbms_output.put_line(‘poor);
ELSEdbms_output.put_line(‘nosuchgrade’);
ENDCASE;
15、LOOP语句:
DECLARE
v_counternumber:
=1;
LOOP
INSERTINTOtemp_tableVALUES(v_counter,’loopindex’);
v_counter:
=v_counter+1;
IFv_counter>
50THEN
exit
ENDIF;
ENDLOOP;
//////================
=1;
WHILEv_counter<
=50LOOP
INSERTINTOtemp_tableVALUES(v_counter,‘loop_index’);
v_counter:
=v_counter+1;
///////===============
v_counternumber:
=1;
FORv_counterIN1..50LOOP
INSERTINTOtemp_tableVALUES(v_counter,’loopindex’);
ENDLOOP;
FORv_counterINREVERSE1..50LOOP//相反
//////////====================
DECLARE
v_vonternumber:
=1;
LOOP
INSERTINTOtemp_tableVALUES(v_counter,‘loopcount’);
IFv_counter>
GOTOENDOFLOOP;
ENDIF;
<
<
ENDOFLOOP>
>
INSERTINTOtemp_table(char_col)VALUES(‘done!
’);
16、常见异常:
异常代码
异常名称
说明
ORA-01403
NO_DATA_FOUND
查询没有返回数据
ORA-01422
TOO_MANY_ROWS
SELECT…INTO语句返回多行结果
v_commm%type;
SELECTcommINTOv_comm
FROMempWHEREempno=7788;
EXCEPTION
WHENno_data_foundTHEN
dbms_output.put_line(‘nodata!
’);
WHENtoo_many_rowsTHEN
dbms_output.put_line(‘toomanyrow!
WHENothersTHEN
null;
END;
17、处理用户自定义的错误有三个步骤:
定义错误、触发错误、处理错误
e_toomanystudentexception;
/*定义错误*/
v_currentstudentnumber(3);
v_maxstudentnumber(3);
v_errorcodenumber;
v_errortextvarchar2(200);
BEGIN
SELECTcurrent_student,max_studentsINTO
v_currentstudent,v_maxstudent
FROMclasseWHEREdepartment=‘HIS’andcourse=101;
IFv_currentstudent>
v_maxstudentTHEN
RAISEe_toomanystudent;
/*触发错误*/
ENDIF;
WHENno_data_foundortoo_many_rowsTHEN
dbms_output.putline(‘发生系统预定义错误’);
WHENe_toomanystudentTHEN/*处理错误*/
INSERTINTOlog_table(info)
VALUES(‘history101has’||v_curre