oracle sql 優(yōu)化與提高講義四_第1頁
oracle sql 優(yōu)化與提高講義四_第2頁
oracle sql 優(yōu)化與提高講義四_第3頁
oracle sql 優(yōu)化與提高講義四_第4頁
oracle sql 優(yōu)化與提高講義四_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論