![oracle sql 優(yōu)化與提高講義四_第1頁](http://file4.renrendoc.com/view10/M02/0A/37/wKhkGWWU5zWAaQOWAACNoop0-Hg989.jpg)
![oracle sql 優(yōu)化與提高講義四_第2頁](http://file4.renrendoc.com/view10/M02/0A/37/wKhkGWWU5zWAaQOWAACNoop0-Hg9892.jpg)
![oracle sql 優(yōu)化與提高講義四_第3頁](http://file4.renrendoc.com/view10/M02/0A/37/wKhkGWWU5zWAaQOWAACNoop0-Hg9893.jpg)
![oracle sql 優(yōu)化與提高講義四_第4頁](http://file4.renrendoc.com/view10/M02/0A/37/wKhkGWWU5zWAaQOWAACNoop0-Hg9894.jpg)
![oracle sql 優(yōu)化與提高講義四_第5頁](http://file4.renrendoc.com/view10/M02/0A/37/wKhkGWWU5zWAaQOWAACNoop0-Hg9895.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
亞信聯(lián)創(chuàng)管理學(xué)院
聶耿青
目錄
,Oracle數(shù)據(jù)庫體系結(jié)構(gòu)與SQL開發(fā)環(huán)境簡介
?數(shù)據(jù)查詢語言DQL及其優(yōu)化
?SQL優(yōu)化原則與工具簡介
?SQL優(yōu)化方法與技巧
?數(shù)據(jù)操縱語言DML及其優(yōu)化
?數(shù)據(jù)定義語言DDL
A."
AsiaINFO.
I9Ms中0>
數(shù)據(jù)操縱語言DML及其優(yōu)化
內(nèi)容
DML(DataManipulationLanguage)語句可以完成
如下操作:
?向表中插入數(shù)據(jù)
?更新表中數(shù)據(jù)
?從表中刪除數(shù)據(jù)
?將表中數(shù)據(jù)和并
TCL(ControlTransactions)由一^條或多條DML語
句組成的一個事務(wù)(transaction)形成業(yè)務(wù)
的一個邏輯單位。對這個邏輯單位的狀態(tài)作控
制.
,?控制事務(wù)
AsiaINFO.
I9MS中0>
向表中插入空值
?隱式方式:在列名表中省略該列的值。
INSERTINTOdepartments(department_idz
department_name口口)
VALUES(30,Purchasing*);
1rowcreated.
?顯示方式:在VALUES子句中指定空值。
INSERTINTOdepartments
1
VALUES(100,'Finance,INULL|AINULLI);
1rowcreated.
A.4
AsiaINFO.
I9Msa???紛,5
用客戶化提示創(chuàng)建腳本
-用ACCEPT存儲值到一個變量,
-用PROMPT顯示客戶化文本:
ACCEPTdepartment_idPROMPT,Pleaseenterthe一
departmentnumbesr:,
ACCEPTdepartment_namePROMPT,Pleaseenter-
thedepartmentname:,
ACCEPTlocation._idPROMPT*Pleaseenterthe-
location:,
INSERTINTOdepartmentS(departmentid,departmentname,locationid|
1
VALUES(&department_id;’&department_name
&location);
A.4
AsiaINFO.
I9Msa???紛,6
從其它表中拷貝數(shù)據(jù)
?在INSERT語句中加入子查詢。
?不必書寫VALUES子句。
?子查詢中的值列表應(yīng)于INSERT子句中的
列名對應(yīng)。
A.4
AsiaINFO.
I9Msa???紛,7
串行直接加載插入
INSERT/*+APPEND*/INTOemp
NOLOGGING
SELECT*FROMt_employees;
COMMIT;
密遨刪除后得到的空閑空間插入行所使用的塊
A.4
AsiaINFO.
I9Msa???紛,8
并行直接加載插入
ALTERSESSIONENABLEPARALLELDML;
INSERT/*+PARALLEL(hr.employeesA2)*/
INTOhr.employeesNOLOGGING
SELECT*FROMhr.old_employees;
刪除后得到的空閑空間〕1臨時段
A.4
AsiaINFO.
I9Msa???紛,9
在工NSERT語句中使用子查詢
INSERTINTO
(SELECTemployee_idzlast_nameA
email,hire_dateAjob_id,
salary,department_id
FROMemployees
WHEREdepartment_id=50)
VALUES(99999,'Taylor',1DTAYLOR1,
TO_DATE(107-JUN-99',1DD-MON-RR'),
1ST_CLERK1,5000,50);
1rowcreated.
A.4
AsiaINFO.
I9Msa???紛,10
多表INSERT語句
?INSERT...SELECT是使用一個DML語句
向多個表中插入數(shù)據(jù)的一部分
?多表工NSERT語句可作為數(shù)據(jù)倉庫應(yīng)用中向
目標(biāo)數(shù)據(jù)庫傳送數(shù)據(jù)的一種方法
?它具有更高的效率:
-避免使用多各DML語句
-使用一個DML完成工F...THEN的邏輯處理
A.4
AsiaINFO.
I9Msa???紛,11
多表INSERT語句的類型
Oracle》以后提供以下四種多表工NSERT語句類型:
?無條件的INSERT
?有條件的ALLINSERT
?有條件的FIRSTINSERT
?旋轉(zhuǎn)INSERT
A.4
AsiaINFO.
I9Msa???紛,12
多表INSERT語句
語法
INSERT[ALL][conditional_insert_clause]
[insert_into_clausevalues_clause](subquery)
conditional_insert_clause
[ALL][FIRST]
[WHENconditionTHEN][insert_into_clausevalues_clause]
[ELSE][insert_into_clausevalues_clause]
A.4
AsiaINFO.
I9MStl???紛,13
無條件的INSERTALL應(yīng)用舉例
INSERT|ALL|
INTOsal_historyVALUES(EMPID,HIREDATE,SAL)
INTOmgr_historyVALUES(EMPID,MGRZSAL)
SELECTemployee_idEMPID,hire_dateHIREDATE,
salarySAL,manager_idMGR
FROMemployees
WHEREemployee_id>200;
8rowscreated.
A.4
AsiaINFO.
I9Msa???紛,14
有條件的INSERTALL應(yīng)用舉例
INSERTALL
WHEN|SAL>10000|THEN|
INTOsal_historyVALUES(EMPID,HIREDATE,SAL)
WHEN|MGR>2001THEN|
INTOmgr_historyVALUES(EMPIDAMGRZSAL)
SELECTemployee_idEMPID,hire_dateHIREDATE,
salarySAL,manager_idMGR
FROMemployees
WHEREemployee_id>200;
4rowscreated.
A.4
AsiaINFO.
I9MStl???紛,15
有條件的FIRSTINSERT應(yīng)用舉例
INSERT|FIRST
WHENSAL>25000THEN
INTOspecial_salVALUES(DEPTID,SAL)
WHENHIREDATElike(1%00%1)THEN
INTOhiredate_history_00VALUES(DEPTID,HIREDATE)
WHENHIREDATElike(1%99%1)THEN
INTOhiredate_history_99VALUES(DEPTID,HIREDATE)
ELSE
INTOhiredate_historyVALUES(DEPTID,HIREDATE)
SELECTdepartment_idDEPTID,SUM(salary)SAL,
MAX(hire_date)HIREDATE
FROMemployees
GROUPBYdepartment_id;
8rowscreated.
A.4
AsiaINFO.
I9MStl???紛,16
旋轉(zhuǎn)INSERT應(yīng)用舉例
INSERTALL
INTOsales_infoVALUES(employee_idzweek_id,sales_MON)
INTOsales_infoVALUES(employee_id,week_id,sales_TUE)
INTOsales_infoVALUES(employee_idzweek_id,sales_WED)
INTOsales_infoVALUES(employee_idAweek_id,sales_THUR)
INTOsales_infoVALUES(employee_idAweek_idrsales_FRI)
SELECTEMPLOYEE.工D,week_id,sales_MON,sales_TUE,
sales_WEDrsales_THURzsales_FRI
FROMsales_source_data;
5rowscreated.
A.4
AsiaINFO.
I9Msa???紛,17
UPDATE
在UPDATE中使用子查詢,使更新基于另一個
表中的數(shù)據(jù)。
UPDATEIcopy_emp
SETdepartment_id=(SELECTdepartment_id
FROMemployees
WHEREemployee_id=100)
WHERElobid=(SELECTnobid
FROMemployees
WHEREemployee_id=200);
1rowupdated.
A.4
AsiaINFO.
I9Msa???紛,18
DELETE
在DELETE中使用子查詢,使刪除基于另一個表
中的數(shù)據(jù)。
DELETEFROMemployees
WHEREdepartment_id=
(SELECTdepartment_id
FROMdepartments
WHEREdepartment_nameLIKE,%Public%':
1rowdeleted.
注意:Deletetable不能降低HWM,即使表數(shù)據(jù)被全部delete,
也不會降低全表掃描的時間,表也不會釋放占用空間。
A.4
AsiaINFO.
I9Msa???紛,19
顯式默認(rèn)值的使用
?在插入操作中使用默認(rèn)值:
INSERTINTOdepartments
(department_id,department_name,manager_id)
VALUES(300,'Engineering',DEFAULT);
?在更新操作中使用默認(rèn)值:
UPDATEdepartments
SETmanager_id=DEFAULTWHEREdepartment_id=10;
A.4
AsiaINFO.
I9MStl???紛,20
合并語句(Merge)
?按照指定的條件執(zhí)行插入或更新操作
?如果滿足條件的行存在,執(zhí)行更新操作;否
則執(zhí)行插入操作:
-避免多次重復(fù)執(zhí)行插入和刪除操作
-提高效率而且使用方便
-在數(shù)據(jù)倉庫應(yīng)用中經(jīng)常使用
A.4
AsiaINFO.
I9Msa???紛,21
合并語句的語法
可以使用merge語句,根據(jù)指定的條件進行插入
或更新操作
MERGEINTOtable_nametable_alias
USING(table/viewIsub_query)alias
ON(joincondition)
WHENMATCHEDTHEN
UPDATESET
coll=col_va.ll,
col2=col2_val
WHENNOTMATCHEDTHEN
INSERT(column_list)
VALUES(column_values);
A.4
AsiaINFO.
I9MStl???紛,22
合并語句舉例
在對表COPY_EMP使用m一rg一語句,根據(jù)指定的
條件從表EMPLOYEES中插入或更新數(shù)據(jù)。
MERGEINTOcopy_empc
USINGemployeese
ON(c.employee_id=e.employee_id)
WHENMATCHEDTHEN-
UPDATESET_______
c.first_name=e.first_nameA
c.last_name=e.last_name,
u.departmenti_ide.department_id
WHENNOTMATCHEDTHEN
INSERTVALUES(e.employee_id,e.first_nameze.last_name,
e.emailze.phone_number,e.hire_dateze.job_idz
e.salary,e.commission_pct,e.manager_idz
e.department_id);
A.4
AsiaINFO.
I9Msa???紛,23
合并語句舉例
SELECT*
FROMCOPY_EMP;
norowsselected
MERGEINTOcopy_empc
USINGemployeese
ON(c.employee_id=e.employee_id)
WHENNOTMATCHEDTHEN
INSERTVALUES...;
SELECT*
FROMCOPY_EMP;
20rowsselected.
A.4
AsiaINFO.
I9MStl???紛,24
數(shù)據(jù)庫事務(wù)
數(shù)據(jù)庫事務(wù)由以下的部分組成:
?一個或多個DML語句
?一個DDL語句
?一個DCL語句
A.4
AsiaINFO.
I9Msa???紛,25
控制事務(wù)
TimeCOMMIT
事務(wù)
DELETE
保存點A
INSERT
UPDATE
保存點B
INSERT
ROLLBACK
toSAVEPOINTBtoSAVEPOINTA
A.4
AsiaINFO.
I9Msw>a???紛,
鎖(Locks)
Oracle數(shù)據(jù)庫中,鎖是:
?并行事務(wù)中避免資源競爭。
?避免用戶動作。
?自動使用最低級別的限制。
?在事務(wù)結(jié)束結(jié)束前存在。
?兩種類型:顯示和隱式。
A.4
AsiaINFO.
I9Msa???紛,27
?兩種模式:
-獨占鎖:屏蔽其他用戶。
—共享鎖:允許其他用戶操作。
?高級別的數(shù)據(jù)并發(fā)性:
-DML:表共享,行獨占
-Queries:不需要加鎖
-DDL:保護對象定義
?提交或回滾后鎖被釋放。
A.4
AsiaINFO.
I9Msa???紛,28
SELECT語句中的FORUPDATE子句
一LockstherowsintheEMPLOYEEStablewhere
job_idisSA_REP.
SELECTemployee_idAsalary,coinmission_pct,job_id
FROMemployees
WHEREjob_id='SA_REP1
FORUPDATE
ORDERBYemployee_id;
一LockisreleasedonlywhenyouissueaROLLBACK
oraCOMMIT.
-IftheSELECTstatementattemptstolockarowthat
islockedbyanotheruser,thenthedatabasewaits
untiltherowisavailable,andthenreturnsthe
resultsoftheSELECTstatement.
A-0
AsiaINFO.
I9Ms中0>
FORUPDATEClause:Examples
-YoucanusetheFORUPDATEclauseinaSELECT
statementagainstmultipletables.
SELECTe.employee_idze.salary,e.commission_pct
FROMemployeeseJOINdepartmentsd
USING(department_id)
WHEREjob_id='ST_CLERK'
ANDlocation_id=1500
FORUPDATE
ORDERBYe.employee_id;
-RowsfromboththeEMPLOYEESandDEPARTMENTS
tablesarelocked.
—UseFORUPDATEOFcolumn_nametoqualifythe
columnyouintendtochange,thenonlytherows
fromthatspecifictablearelocked.
>L、Z口
如何使用DML語句改變數(shù)據(jù)和事務(wù)控制?
語句功能
INSERT插入
UPDATE修正
DELETE冊I)除
MERGE合并
COMMIT提交
SAVEPOINT保存點
ROLLBACK回滾
A.4
AsiaINFO.
I9Msw>a???紛,31
練習(xí)
-Insert,update,delete語句練習(xí);
-Update之后commit之前從另一
session看數(shù)據(jù)的狀態(tài)變化;
A.4
AsiaINFO.
I9Msa???紛,32
數(shù)據(jù)定義語言DDL
數(shù)據(jù)定義語言(DDL)
需要定義的常見數(shù)據(jù)庫對象:
ObjectDescription
TableBasicunitofstorage;composedofrows
andcolumns
ViewLogicallyrepresentssubsetsofdatafrom
oneormoretables
SequenceGeneratesprimarykeyvalues
IndexImprovestheperformanceofsomequeries
SynonymGivesalternativenamestoobjects
AsiaINFO.
DEFAULT選項
?創(chuàng)建表時可為一個列指定默認(rèn)值
…h(huán)ire_dateDATEDEFAULTSYSDATE,
-字符串,表達式,或SQL函數(shù)都是合法的
?其它列的列名和偽列是非法的
?默認(rèn)值必須滿足列的數(shù)據(jù)類型定義
A.4
AsiaINFO.
I9Msa???紛,35
查詢數(shù)據(jù)字典
:查看用戶定義的表.
SELECTtable_name
FROMuser_tables;
:查看用戶定義的各種數(shù)據(jù)庫對象
SELECTDISTINCTobjqcjtype
FROMuserobjects;
?查看用戶定義的表,視圖,同義詞和序列
SELECT*
FROMusercatalog
A.4
AsiaINFO.
I9Msa???紛,36
常用字段類型
?Varchar2(w)變長1-4000
?char(w)/nchar定長,1(缺省)-2000
?Number(w,d)wv=38,number(9,2)小數(shù)點左邊
7位,右邊2位;
?Date(含時間):公元前4712-1-1至U4712-12-31
?Long:0-2GB,文本
?Lob/clob:0-4GB
?自定義復(fù)雜類型
A.4
AsiaINFO.
I9Msw>a???紛,37
使用子查詢創(chuàng)建表舉例
CREATETABLEdept80
AS
SELECTemployee_id,last_name,
salary*12ANNSAL,
hire_date
FROMemployees
WHEREdepartment_id=80;
Tablecreated.
DESCRIBEdept80
NameNull?Type
EMPLOYEEJDlNUMBER(6)
LAST_NAMENOTNULLVARCHAR2(25)
ANNSALNUMBER
HIRE_DATENOTNULLDATE
A.4
AsiaINFO.
I9Msa???紛,38
ALTERTABLE語句
使用ALTERTABLE語句追加,修改,或
刪除列的語法.
ALTERTABLEtable
ADD(columndatatype[DEFAULTexpr]
[,columndatatype]...);
ALTERTABLEtable
MODIFY(columndatatype[DEFAULTexpr]
[,columndatatype]...);
ALTERTABLEtable
DROP(column);
A.4
AsiaINFO.
I9Msa???紛,39
追加一個新列
:使用ADD子句追加一個新列
ALTERTABLEdept80
ADD(job_idVARCHAR2(9));
Tablealtered.
?新列是表中的最后一列
EMPLOYEEJDLAST_NAMEANNSALHIRE_DATEJOBJD
149Zlotkey12600029-JAN-00
174Abel13200011-MAY-96
176Taylor10320024-MAR-98
A.4
AsiaINFO.
I9Msa???紛,40
修改一個列
?可以修改列的數(shù)據(jù)類型,尺寸,和默認(rèn)值
ALTERTABLEdept80
MODIFY(last_nameVARCHAR2(30));
Tablealtered.
?對默認(rèn)值的修改只影響今后對表的修改
A."
AsiaINFO.
I9MS中0>
刪除一個列
使用DROPCOLUMN子句刪除不再需要的列.
ALTERTABLEdept80
DROPCOLUMNjob_id;
Tablealtered.
A.4
AsiaINFO.
I9Msa???紛,42
分區(qū)表
分區(qū)表的創(chuàng)建、維護與性能
-createtablepartitiontabname(
-idnumber(16)primarykey,
■■■
一timedate,
-…)
-partitionbyrange(time)
-(partitiong_2000q4valueslessthan
(to_date('2001-01-01Tyyyy-mm-dd'))
-tablespaceg_2000q4
A.4
AsiaINFO.
I9MStl???紛,43
從垃圾桶中取回已刪除的表(9i)
FLASHBACKTABLEemployeesTOBEFORE
DROP;
FLASHBACKTABLEemployeesTOBEFORE
DROPRENAMETOemployeesold;
查詢可FLASHBACK的信息:
>SELECT*FROMRECYCLEBIN;
>SELECT*FROMUSERRECYCLEBIN;
A.4
AsiaINFO.
I9MStl???紛,44
改變對象的名稱
?執(zhí)行RENAME語句改變表,視圖,序列,或同義
詞的名稱
RENAMEdeptTOdetail_dept;
Tablerenamed.
?必須是對象的擁有者
A.4
AsiaINFO.
I9Msa???紛,45
清空表
?TRUNCATETABLE語句:
-刪除表中所有的數(shù)據(jù)
-釋放表的存儲空間
TRUNCATETABLEdetail_dept;
Tabletruncated.
?TRUNCATE語句不能回滾
?可以使用DELETE語句刪除數(shù)據(jù)
注意:Truncatetable則把HWM降到最初始值,占用1個
extents,8個blocks.Analyzetableblocks=0
A.4
AsiaINFO.
I9Msa???紛,46
收縮表
?altertableemptestenablerowmovement;-1OG
-altertableemptestshrinkspace[compact|cascade];
限制:首先收縮只能在自動段管理(ASSM)的表空間上執(zhí)行,
不能在手動管理的表空間上執(zhí)行;其次是不能在含有基于函
數(shù)的索引的表段上執(zhí)行(可以先刪除基于函數(shù)的索引,收縮
之后再重建索引)。
?altertableemptestmove[tablespacenewts];--索弓I將不可
用,需要重建;可指定新的表空間
-altertableemptestjdxrebuild[online];
?Exp/truncate/imp--最原始的辦法
-shrink不僅收縮表所占空間,而且會調(diào)整HWM,提高性能
-注意及時更新統(tǒng)計信息
一查看user_segments/extents
A."
AsiaINFO.
I9Ms中0>
練習(xí)
Createtable
Altertable
Droptable
Truncate
rename
A.4
AsiaINFO.
I9MStl???紛,48
什么是約束
?約束是表級的強制規(guī)定
?約束放置在表中刪除有關(guān)聯(lián)關(guān)系的數(shù)據(jù)
?有以下五種約束:
-NOTNULL
-UNIQUE
-PRIMARYKEY
-FOREIGNKEY
-CHECK
A.4
AsiaINFO.
I9MStl???紛,49
注意事項
?如果不指定約束名Oracleserver自動按照
SYS_Cn的格式指定約束名
?在什么時候創(chuàng)建約束:
-建表的同時
一建表之后
?可以在表級或列級定義約束
?可以通過數(shù)據(jù)字典視圖查看約束
A.4
AsiaINFO.
I9Msa???紛,50
定義約束
?列級
column[CONSTRAINTconstraint_name]constraint_typer
?表級
column,...
[CONSTRAINTconstraint_name]constraint_type
(column,...),
-缺省約束名(省略[CONSTRAINT約束名])為[SYS_C+數(shù)字]
A.4
AsiaINFO.
I9Msa???紛,51
NOTNULL約束
只能定義在列級:
CREATETABLEemployees(
employee_idNUMBER(6),
lastnameVARCHAR2(25)NOTNULL,系統(tǒng)命名
salaryNUMBER(8,2),
commission_pctNUMBER(2,2),
hire_dateDATE
CONSTRAINTemp_hire_date_nn用戶命名
NOTNULL,
A.4
AsiaINFO.
I9MStl???紛,52
UNIQUE約束
可以定義在表級或列級:
CREATETABLEemployees(
employee_idNUMBER(6),
last_nameVARCHAR2(25)NOTNULL,
emailVARCHAR2(25),
salaryNUMBER(8A2),
commission_pctNUMBER(2,2),
hiredateDATENOTNULL,
CONSTRAINTempemailukUNIQUE(email));
A.4
AsiaINFO.
I9MStl???紛,53
PRIMARYKEY約束
DEPARTMENTS
PRIMARYKEY
DEPARTMENT」。DEPARTMENTJ4AMEn^ANAGER^IDLOCATIONJD
10Administration2001700
20Marketing2011800
50Shipping1241500
60IT1031400
80Sales1492500
不允許INSERTINTO
(空值)
PublicAccounting1400
50Finance1241500
不允許
(50已經(jīng)存在)
A.4
AsiaINFO.
I9Msa???紛,54
PRIMARYKEY約束
可以定義在表級或列級:
CREATETABLEdepartments(
department_idNUMBER(4),
department_nameVARCHAR2(30)
CONSTRAINTdept_name_nnNOTNULL,
manager_idNUMBER(6),
location_idNUMBER(4),
CONSTRAINTdeptidpkPR工MARYKEY(departmentid)|);
createtabletest(namevarchar2(10)primarykey,startdate
date)
A.4
AsiaINFO.
I9Msa???紛,55
FOREIGNKEY約束
DEPARTMENTS
DEPARTMENTJDDEPARTMENT-NAMEMANAGERJDLOCAT1ONJD
10Administration2001700
20Marketing2011800
PRIMARY50Shipping1241500
60IT1031400
KEY80Sales|1492500
EMPLOYEES
EMPLOYEEJDLAST_NAMEDEPARTMENTJDFOREIGN
100King90KEY
101Kochhar95
102DeHaan90|
103Hunold60;
104Ernst60'
107Lorentz60
INSERTINTO
200FordT|
201Ford60允許
A.4允許(NULL)
AsiaINFO.
I9Msa???紛,56
FOREIGNKEY約束
可以定義在表級或列級:
CREATETABLEemployees(
employee_idNUMBER(6),
last_nameVARCHAR2(25)NOTNULL,
emailVARCHAR2(25),
salaryNUMBER(8,2),
commission_pctNUMBER(2,2),
hiredateDATENOTNULL,
departmentidNUMBER(4),
CONSTRAINTemp_dept_fkFOREIGNKEY(department_id)
REFERENCESdepartments(department_id),
CONSTRAINTemp_email_ukUNIQUE(email));
A.4
AsiaINFO.
I9MStl???紛,57
FOREIGNKEY約束的關(guān)鍵字
?FOREIGNKEY:在表級指定子表中的歹U
?REFERENCES:標(biāo)示在父表中的歹U
?ONDELETECASCADE:當(dāng)父表中的歹U被冊U除
是,子表中相對應(yīng)的列也被刪除
?ONDELETESETNULL:子表中相應(yīng)的歹U置
空
?WithouttheONDELETECASCADEortheON
DELETESETNULLoptions,在子表中被弓|用的
父表相關(guān)行不能刪除。
A.4
AsiaINFO.
I9MStl???紛,58
CHECK約束
?定義每一行必須滿足的條件
?以下的表達式是不允許的:
-出現(xiàn)CURRVAL,NEXTVAL,LEVEL,和ROWNUM偽列
-使用SYSDATE,UID,USER,和USERENV函數(shù)
-在查詢中涉及到其它列的值
.salaryNUMBER(8,2)
CONSTRAINTemp_salary_min
CHECK(salary>0),...
namevarchar2(10)check(namein('YIDONG','WANGTONG')),
A.4
AsiaINFO.
I9Msa???紛,59
添加約束的語法
使用ALTERTABLE語句:
?添加或刪除約束,但是不能修改約束
?有效化或無效化約束
?添力口NOTNULL約束要使用MODIFY語
句
ALTERTABLEtable
ADD[CONSTRAINTconstraint]type(column);
A.4
AsiaINFO.
I9MStl???紛,60
添加約束
添加約束舉例
ALTERTABLEemployees
ADDCONSTRAINTemp_manager_fk
FOREIGNKEY(manager_id)
REFERENCESemployees(employee_id);
Tablealtered.
ALTERTABLEEmp2ADDCONSTRAINTemp_dt_fk
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鐵嶺貨運上崗證考試題
- 2025年唐山c1貨運上崗證模擬考試
- 2024-2025年高中政治課時作業(yè)10新時代的勞動者含解析新人教版必修1
- 2024-2025學(xué)年高中生物課時分層作業(yè)12基因指導(dǎo)蛋白質(zhì)的合成含解析新人教版必修2
- 2024-2025版高中生物2.1.1-2孟德爾遺傳試驗的科學(xué)方法分離規(guī)律試驗練習(xí)含解析中圖版必修2
- 2024-2025學(xué)年高中化學(xué)課時提升作業(yè)十五鹽類的水解含解析新人教版選修4
- 2024-2025學(xué)年八年級物理全冊4.1光的反射練習(xí)含解析新版滬科版
- 2024-2025學(xué)年高中語文7李將軍列傳學(xué)案含解析蘇教版選修史記蚜
- 2024-2025學(xué)年高中生物第2章細胞的化學(xué)組成第2節(jié)組成細胞的無機物練習(xí)含解析北師大版必修1
- 我想你的檢討書
- 初中數(shù)學(xué)思維訓(xùn)練雙十字相乘法因式分解練習(xí)100道及答案
- (正式版)QC∕T 625-2024 汽車用涂鍍層和化學(xué)處理層
- 提升模組良率-六西格瑪
- DL-T+5196-2016火力發(fā)電廠石灰石-石膏濕法煙氣脫硫系統(tǒng)設(shè)計規(guī)程
- 2024年江蘇省無錫市中考英語試卷附答案
- 2024-2030年中國產(chǎn)教融合行業(yè)市場運營態(tài)勢及發(fā)展前景研判報告
- 2024年微生物檢測試劑行業(yè)商業(yè)計劃書
- 河南開封介紹課件
- 通信設(shè)備售后服務(wù)方案
- 行政倫理學(xué)教程(第四版)課件 第5章?行政責(zé)任
- 高中英語選擇性必修一單詞表
評論
0/150
提交評論