版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1oracleoracle數(shù)據(jù)庫(kù)基礎(chǔ)及應(yīng)用第十一章第十一章 表的管理表的管理2目錄目錄11.1 11.1 創(chuàng)建表創(chuàng)建表11.2 11.2 修改表修改表11.3 11.3 刪除表刪除表11.4 11.4 創(chuàng)建約束創(chuàng)建約束11.5 11.5 使用企業(yè)管理器管理表使用企業(yè)管理器管理表11.6 11.6 分區(qū)表分區(qū)表11.7 11.7 臨時(shí)表臨時(shí)表3新建數(shù)據(jù)庫(kù)StuInfo(學(xué)生成績(jī)管理)數(shù)據(jù)庫(kù)中有5張表:系表DEPT教師表TEACHER學(xué)生表STUDENT課程表COURSE成績(jī)表SCORE -P271 -本章代碼見本頁(yè)P(yáng)PT備注4511.1 11.1 創(chuàng)建表創(chuàng)建表表是成數(shù)據(jù)庫(kù)最基本的單位,由行和列組
2、,它是數(shù)表是成數(shù)據(jù)庫(kù)最基本的單位,由行和列組,它是數(shù)據(jù)庫(kù)存在的意義。據(jù)庫(kù)存在的意義。在在DDLDDL語(yǔ)句中,使用語(yǔ)句中,使用CREATECREATE語(yǔ)句創(chuàng)建表,其語(yǔ)法結(jié)語(yǔ)句創(chuàng)建表,其語(yǔ)法結(jié)構(gòu)如下:構(gòu)如下: CREATE TABLE CREATE TABLE ( ( NULL | NOT NULL,NULL | NOT NULL, NULL | NOT NULL, NULL | NOT NULL, 約束條件約束條件 ) )611.1 11.1 創(chuàng)建表創(chuàng)建表例例 創(chuàng)建系表創(chuàng)建系表DEPTDEPT,其表結(jié)構(gòu)如下,其表結(jié)構(gòu)如下1 CREATE TABLE DEPT1 CREATE TABLE DEPT
3、( (2 Dno VARCHAR2(6),2 Dno VARCHAR2(6),3 Dname VARCHAR2(50) 3 Dname VARCHAR2(50) NOT NULLNOT NULL, ,4 Dtelephone VARCHAR2(12),4 Dtelephone VARCHAR2(12),5 Ddean VARCHAR2(10) 5 Ddean VARCHAR2(10) NOT NULLNOT NULL, ,6 Daddress VARCHAR2(50),6 Daddress VARCHAR2(50),7 7 CONSTRAINTS CONSTRAINTS dept_dno_pk
4、 PRIMARY KEY(dno),dept_dno_pk PRIMARY KEY(dno),8 8 CONSTRAINTSCONSTRAINTS dept_dname_unk UNIQUE (Dname) dept_dname_unk UNIQUE (Dname)9 )9 ); ;字段數(shù)據(jù)類型描述DnoVARCHAR2(6)系編號(hào)(主鍵)DnameVARCHAR2(50)系名(非空值,唯一約束)DtelephoneVARCHAR2(12)系電話(允許為空)DdeanVARCHAR2(10)系主任(非空值)DaddressVARCHAR2(50)系地址(允許為空)75個(gè)表811.2 11.2
5、修改表修改表.1增加列增加列.2刪除列刪除列11.2.311.2.3更新列更新列11.2.4 11.2.4 修改列名修改列名11.2.5 11.2.5 重命名表重命名表11.2.611.2.6修改表的狀態(tài)修改表的狀態(tài)911.211.2修改表修改表如果對(duì)已經(jīng)創(chuàng)建的表進(jìn)行修改,則需要使用如果對(duì)已經(jīng)創(chuàng)建的表進(jìn)行修改,則需要使用ALTRE ALTRE TABLETABLE關(guān)鍵字進(jìn)行修改。關(guān)鍵字進(jìn)行修改。其語(yǔ)法結(jié)構(gòu)如下:其語(yǔ)法結(jié)構(gòu)如下:ALTER TABLE ALTER TABLE ADD ADD 數(shù)據(jù)類型數(shù)據(jù)類型 ,. ,. -增加列增加列| DROP COLU
6、MN | DROP COLUMN ,. ,. -刪除列刪除列| MODIFY (| MODIFY ( 數(shù)據(jù)類型數(shù)據(jù)類型,.) ,.) -修改列修改列| RENAME COLUMN | RENAME COLUMN TO TO -重命名重命名列列| RENAME TO | RENAME TO ; ; -重命名表重命名表1011.211.2修改表修改表為了使結(jié)果更加清晰,我們以為了使結(jié)果更加清晰,我們以插入數(shù)據(jù)插入數(shù)據(jù)后的系后的系表表DEPTDEPT為例,系表中的數(shù)據(jù)如下圖所示。為例,系表中的數(shù)據(jù)如下圖所示。11建立sys連接,修改SCOTT賬號(hào)12建立scott連接,口令stuinfo13將原來(lái)的
7、deptdeptold14建5個(gè)表15給表DEPT添加數(shù)據(jù)16.1增加列增加列例例 修改系表修改系表DEPTDEPT,增加一列,增加一列TEACH_NUMTEACH_NUM表示該系的教表示該系的教師人數(shù),數(shù)據(jù)類型為師人數(shù),數(shù)據(jù)類型為NUMBERNUMBER使用代碼為:使用代碼為: ALTER TABLE dept ADD teach_num NUMBER;ALTER TABLE dept ADD teach_num NUMBER;運(yùn)行結(jié)果如下所示:運(yùn)行結(jié)果如下所示:17 ALTER TABLE dept ADD teach_num ALTER TABLE dept ADD
8、teach_num NUMBER;NUMBER;1819.1增加列增加列在增加新列的時(shí)候,如果表中已經(jīng)存在行記錄,那么在增加新列的時(shí)候,如果表中已經(jīng)存在行記錄,那么就不能為新列指定就不能為新列指定NOT NULLNOT NULL約束。約束。執(zhí)行下面代碼,出錯(cuò)。執(zhí)行下面代碼,出錯(cuò)。 ALTER TABLE dept ADD teach_phone NUMBER ALTER TABLE dept ADD teach_phone NUMBER not not nullnull; ; 20.1增加列增加列若要指定若要指定NOT NULLNOT NULL約束,則必
9、須為新列設(shè)置默認(rèn)值。約束,則必須為新列設(shè)置默認(rèn)值。執(zhí)行下面一行代碼,則不會(huì)出錯(cuò)。執(zhí)行下面一行代碼,則不會(huì)出錯(cuò)。 ALTER TABLE dept ADD teach_add char(12) ALTER TABLE dept ADD teach_add char(12) default default 山東省日照市山東省日照市 not null; not null; 21select * from dept;2.1增加列增加列在在Oracle 11gOracle 11g中,可以同時(shí)增加多列。中,可以同時(shí)增加多列。例例 在系表在系表DEPTDEPT中增加類型都為中增加類型都
10、為VARCHAR2(3)VARCHAR2(3)的兩列的兩列A A和和B B,代碼如下所示。,代碼如下所示。 ALTER TABLE dept ADD (A varchar2(3), B ALTER TABLE dept ADD (A varchar2(3), B varchar2(3); varchar2(3); 2311.2.2 11.2.2 刪除列刪除列刪除列使用刪除列使用ALTER TABLEALTER TABLE的的DROPDROP語(yǔ)句。語(yǔ)句。常與常與CASCADE CONSTRAINTSCASCADE CONSTRAINTS一起使用,將與該列有關(guān)一起使用,將與該列有關(guān)的所有約束一起刪
11、除。的所有約束一起刪除。例例修改系表修改系表DEPTDEPT,將列,將列TEACH_NUMTEACH_NUM刪除。代碼如下所刪除。代碼如下所示:示: ALTER TABLE dept DROP COLUMN teach_num ALTER TABLE dept DROP COLUMN teach_num CASCADE CONSTRAINTS;CASCADE CONSTRAINTS;2411.2.3 11.2.3 更新列更新列更新列時(shí)使用更新列時(shí)使用ALTER TABLEALTER TABLE的的MODIFYMODIFY語(yǔ)句。語(yǔ)句。例例 將系表將系表DEPTDEPT的的DnoDno列的數(shù)據(jù)類型
12、更新為列的數(shù)據(jù)類型更新為VARCHAR2(20)VARCHAR2(20),代碼如下所示:,代碼如下所示: ALTER TABLE dept MODIFY Dno VARCHAR2(20); ALTER TABLE dept MODIFY Dno VARCHAR2(20);然后可以從然后可以從USER_TAB_COLSUSER_TAB_COLS中查看系表中查看系表DEPTDEPT的各列的的各列的屬性值,代碼如下所示。屬性值,代碼如下所示。 SELECT column_name, data_type, data_length SELECT column_name, data_type, data_
13、length FROM USER_TAB_COLS WHERE TABLE_NAME = DEPT;FROM USER_TAB_COLS WHERE TABLE_NAME = DEPT; - -desc dept;desc dept;2511.2.4 11.2.4 修改列名修改列名修改列名指的是修改表中指定列的名字。修改列名指的是修改表中指定列的名字。修改列名時(shí)使用修改列名時(shí)使用ALTER TABLEALTER TABLE的的RENAME COLUMNRENAME COLUMN語(yǔ)語(yǔ)句。句。例例 修改系表修改系表DEPTDEPT的的DTELEPHONEDTELEPHONE列的列名,新列名為列的列
14、名,新列名為DPHONENUMBERDPHONENUMBER,代碼如下:,代碼如下: ALTER TABLE dept ALTER TABLE dept RENAMERENAME COLUMN Dtelephone COLUMN Dtelephone TO TO Dphonenumber;Dphonenumber;2611.2.5 11.2.5 重命名表重命名表更新表名使用更新表名使用ALTER TABLEALTER TABLE的的RENAME TORENAME TO命令。命令。例例 重命名系表重命名系表DEPTDEPT的表名,將系表表名的表名,將系表表名DEPTDEPT更改更改為為DEPAR
15、TMENTDEPARTMENT,其代碼如下。,其代碼如下。 ALTER TABLE dept ALTER TABLE dept RENAME TO RENAME TO department;department;重命名表也可以使用重命名表也可以使用RENAMETORENAMETO語(yǔ)句,其語(yǔ)法語(yǔ)句,其語(yǔ)法結(jié)構(gòu)如下:結(jié)構(gòu)如下: RENAME RENAME TO TO ; ; 本例修改表名,也可以采用下面的代碼:本例修改表名,也可以采用下面的代碼: RENAME dept TO department; RENAME dept TO department;2711.2.6 11.2.6 修改表的狀態(tài)修
16、改表的狀態(tài)刪除列時(shí)若使用刪除列時(shí)若使用ALTER TABLEALTER TABLE的的DROPDROP語(yǔ)句語(yǔ)句,在刪除,在刪除列的同時(shí),也釋放該列所占用的存儲(chǔ)空間。列的同時(shí),也釋放該列所占用的存儲(chǔ)空間。但是,如果但是,如果表較大表較大,這種刪除操將,這種刪除操將耗費(fèi)很長(zhǎng)時(shí)間耗費(fèi)很長(zhǎng)時(shí)間。為了避免在數(shù)據(jù)庫(kù)使用高峰期執(zhí)行刪除列的操作為了避免在數(shù)據(jù)庫(kù)使用高峰期執(zhí)行刪除列的操作而占用過(guò)多的系統(tǒng)資源,我們可以使用修改表狀而占用過(guò)多的系統(tǒng)資源,我們可以使用修改表狀態(tài)的方法。態(tài)的方法。即將要?jiǎng)h除的列暫時(shí)即將要?jiǎng)h除的列暫時(shí)標(biāo)記為標(biāo)記為不可用狀態(tài)不可用狀態(tài),然后等,然后等后來(lái)系統(tǒng)空閑時(shí)再進(jìn)一步釋放列空間。后來(lái)系
17、統(tǒng)空閑時(shí)再進(jìn)一步釋放列空間。2811.2.6 11.2.6 修改表的狀態(tài)修改表的狀態(tài)標(biāo)記列不可用使用關(guān)鍵字標(biāo)記列不可用使用關(guān)鍵字UNUSEDUNUSED。其語(yǔ)法結(jié)構(gòu)為:。其語(yǔ)法結(jié)構(gòu)為: ALTER TABLE ALTER TABLE SET UNUSED ( SET UNUSED ()CASCADE CONSTRAINTS;)CASCADE CONSTRAINTS;例例 將系表將系表DEPTDEPT的的TEACH_NUMTEACH_NUM列標(biāo)注為列標(biāo)注為UNUSEDUNUSED,其代碼,其代碼如下所示:如下所示: ALTER TABLE dept SET ALTER TABLE dept SE
18、T UNUSED (teach_num) UNUSED (teach_num) CASCADE CONSTRAINTS;CASCADE CONSTRAINTS;2911.2.6 11.2.6 修改表的狀態(tài)修改表的狀態(tài)釋放不可用的列釋放不可用的列所占用的空間,也就是刪除不可用的所占用的空間,也就是刪除不可用的列。此時(shí)使用關(guān)鍵字列。此時(shí)使用關(guān)鍵字DROPDROP,其語(yǔ)法結(jié)構(gòu)為:,其語(yǔ)法結(jié)構(gòu)為: ALTER TABLE ALTER TABLE DROP UNUSED COLUMNS;DROP UNUSED COLUMNS;例例 刪除系表刪除系表DEPTDEPT中所有狀態(tài)為中所有狀態(tài)為UNUSEDUN
19、USED的列,其代碼的列,其代碼如下所示:如下所示: ALTER TABLE dept DROP UNUSED COLUMNS; ALTER TABLE dept DROP UNUSED COLUMNS;3011.3 11.3 刪除表刪除表在數(shù)據(jù)庫(kù)的使用過(guò)程中,經(jīng)常會(huì)出現(xiàn)一些冗余的表,在數(shù)據(jù)庫(kù)的使用過(guò)程中,經(jīng)常會(huì)出現(xiàn)一些冗余的表,為了節(jié)約空間,這些表需要被刪除。刪除表使用為了節(jié)約空間,這些表需要被刪除。刪除表使用DROP DROP TABLETABLE語(yǔ)句,其語(yǔ)法結(jié)構(gòu)如下:語(yǔ)句,其語(yǔ)法結(jié)構(gòu)如下: DROP TABLE DROP TABLE CASCADE CONSTRAINTS; CASCAD
20、E CONSTRAINTS;例例 刪除表刪除表DEPTDEPTDROP TABLE dept;DROP TABLE dept;DROP TABLE dept CASCADE CONSTRAINTS;DROP TABLE dept CASCADE CONSTRAINTS;3111.4 11.4 創(chuàng)建約束創(chuàng)建約束11.4.1 11.4.1 主鍵約束主鍵約束11.4.2 11.4.2 外鍵約束外鍵約束11.4.3 11.4.3 唯一約束唯一約束11.4.4 11.4.4 檢查約束檢查約束11.4.5 11.4.5 非空約束非空約束3211.4.1 11.4.1 主鍵約束主鍵約束主鍵約束通過(guò)主鍵約束通
21、過(guò)PRIMARY KEYPRIMARY KEY定義。定義主鍵對(duì)行數(shù)據(jù)定義。定義主鍵對(duì)行數(shù)據(jù)起到起到唯一標(biāo)識(shí)唯一標(biāo)識(shí)的作用,其值的作用,其值不能為空不能為空,也,也不能重復(fù)不能重復(fù)。每個(gè)表只允許有每個(gè)表只允許有一個(gè)主鍵一個(gè)主鍵,但主鍵可以由一個(gè)表的,但主鍵可以由一個(gè)表的多多個(gè)列個(gè)列構(gòu)成。構(gòu)成。接下來(lái)以教師表為例,其表結(jié)構(gòu)如下:接下來(lái)以教師表為例,其表結(jié)構(gòu)如下:字段字段數(shù)據(jù)類型數(shù)據(jù)類型描述描述TnoVARCHAR2(6)教師編號(hào)教師編號(hào)(主鍵主鍵)TnameVARCHAR2(10) 教師姓名教師姓名(非空值非空值)TtitleVARCHAR2(8)教師職稱教師職稱(允許為空允許為空)3311.4.
22、1 11.4.1 主鍵約束主鍵約束創(chuàng)建表時(shí)創(chuàng)建主鍵約束創(chuàng)建表時(shí)創(chuàng)建主鍵約束語(yǔ)法結(jié)構(gòu)如下:語(yǔ)法結(jié)構(gòu)如下: CONSTRAINTS CONSTRAINTS PRIMARY KEY ( PRIMARY KEY (主鍵列名主鍵列名) )例例 創(chuàng)建教師表時(shí)創(chuàng)建主鍵約束創(chuàng)建教師表時(shí)創(chuàng)建主鍵約束CREATE TABLE TEACHER(CREATE TABLE TEACHER( Tno VARCHAR2(6), Tno VARCHAR2(6), Tname VARCHAR2(10) NOT NULL, Tname VARCHAR2(10) NOT NULL, Ttitle VARCHAR2(8), Ttit
23、le VARCHAR2(8), CONSTRAINTS teacher_tno_fk PRIMARY KEY(Tno) CONSTRAINTS teacher_tno_fk PRIMARY KEY(Tno););3411.4.1 11.4.1 主鍵約束主鍵約束在創(chuàng)建完表之后,使用在創(chuàng)建完表之后,使用ALTER TABLEALTER TABLE添加主鍵約束,添加主鍵約束,其語(yǔ)法結(jié)構(gòu)如下:其語(yǔ)法結(jié)構(gòu)如下:ALTER TABLE ALTER TABLE ADD CONSTRAINTS ADD CONSTRAINTS PRIMARY KEY ( PRIMARY KEY (主鍵列名主鍵列名););例例
24、創(chuàng)建教師表之后,添加主鍵約束創(chuàng)建教師表之后,添加主鍵約束CREATE TABLE TEACHER(CREATE TABLE TEACHER( Tno VARCHAR2(6), Tno VARCHAR2(6), Tname VARCHAR2(10) NOT NULL, Tname VARCHAR2(10) NOT NULL, Ttitle VARCHAR2(8), Ttitle VARCHAR2(8),););ALTER TABLE teacherALTER TABLE teacherADD CONSTRAINTS teacher_tno_fk PRIMARY KEY (Tno);ADD CON
25、STRAINTS teacher_tno_fk PRIMARY KEY (Tno);3511.4.1 11.4.1 主鍵約束主鍵約束刪除主鍵約束刪除主鍵約束, ,使用使用ALTER TABLEALTER TABLE的的DROPDROP語(yǔ)句,其語(yǔ)法語(yǔ)句,其語(yǔ)法結(jié)構(gòu)如下:結(jié)構(gòu)如下:ALTER TABLE ALTER TABLE DROP CONSTRAINTS DROP CONSTRAINTS ;例例 刪除教師表的主鍵約束刪除教師表的主鍵約束teacher_tno_fk teacher_tno_fk ALTER TABLE teacherALTER TABLE teacherDROP CONSTR
26、AINTS teacher_tno_fk;DROP CONSTRAINTS teacher_tno_fk;3611.4.2 11.4.2 外鍵約束外鍵約束外鍵約束用于保證指定外鍵約束用于保證指定表的強(qiáng)制引用完整性表的強(qiáng)制引用完整性,要,要與主鍵約與主鍵約束一起使用束一起使用。這樣就可以保證使用外鍵約束的列與所引用的主鍵約束列這樣就可以保證使用外鍵約束的列與所引用的主鍵約束列的的一致性一致性。與主鍵約束不同,每個(gè)表可以有與主鍵約束不同,每個(gè)表可以有多個(gè)外鍵約束多個(gè)外鍵約束。接下來(lái)以接下來(lái)以課程表課程表為例,其表結(jié)構(gòu)如下:為例,其表結(jié)構(gòu)如下:字段字段數(shù)據(jù)類型數(shù)據(jù)類型描述描述CnoVARCHAR2(
27、20)課程編號(hào)課程編號(hào)(主鍵主鍵)CnameVARCHAR2(50)課程名課程名(非空值非空值)CprecnoVARCHAR2(10)先行課先行課(允許為空允許為空)CcreditNumber(2)學(xué)分學(xué)分(允許為空允許為空)TnoVARCHAR2(6)教師編號(hào)教師編號(hào)(外鍵,參照外鍵,參照Teacher表主鍵表主鍵)3711.4.2 11.4.2 外鍵約束外鍵約束創(chuàng)建表時(shí)創(chuàng)建外鍵約束創(chuàng)建表時(shí)創(chuàng)建外鍵約束創(chuàng)建外鍵的語(yǔ)法結(jié)構(gòu)如下:創(chuàng)建外鍵的語(yǔ)法結(jié)構(gòu)如下:CONSTRAINTS CONSTRAINTS FOREIGN KEY ( FOREIGN KEY (外鍵列名外鍵列名) )REFERENCES
28、 REFERENCES ( (主鍵列名主鍵列名) ) ON DELETE NO ACTION ON DELETE NO ACTION| ON DELETE CASCADE| ON DELETE CASCADE| ON DELETE SET NULL| ON DELETE SET NULL| ON DELETE SET DEFAULT| ON DELETE SET DEFAULT外鍵所在的表外鍵所在的表-參照關(guān)系參照關(guān)系主鍵所在的表主鍵所在的表-被參照關(guān)系、目標(biāo)關(guān)系、父表被參照關(guān)系、目標(biāo)關(guān)系、父表3811.4.2 11.4.2 外鍵約束外鍵約束例例 創(chuàng)建課程表時(shí)創(chuàng)建外鍵約束創(chuàng)建課程表時(shí)創(chuàng)建外鍵約
29、束CREATE TABLE COURSE(CREATE TABLE COURSE( Cno VARCHAR2(20), Cno VARCHAR2(20), Cname VARCHAR2(50) NOT NULL, Cname VARCHAR2(50) NOT NULL, Cprecno VARCHAR2(10), Cprecno VARCHAR2(10), Ccredit NUMBER(2), Ccredit NUMBER(2), Tno VARCHAR2(6), Tno VARCHAR2(6), CONSTRAINTS cource_con_pk PRIMARY KEY(Cno), CONS
30、TRAINTS cource_con_pk PRIMARY KEY(Cno), CONSTRAINTS cource_tno_fk FOREIGN KEY(Tno) CONSTRAINTS cource_tno_fk FOREIGN KEY(Tno) REFERENCES Teacher(Tno) ON DELETE CASCADE REFERENCES Teacher(Tno) ON DELETE CASCADE););3911.4.2 11.4.2 外鍵約束外鍵約束在創(chuàng)建完表之后,使用在創(chuàng)建完表之后,使用ALTER TABLEALTER TABLE添加外添加外鍵約束。鍵約束。其語(yǔ)法結(jié)構(gòu)如下
31、:其語(yǔ)法結(jié)構(gòu)如下:ALTER TABLEALTER TABLE ADD CONSTRAINTS ADD CONSTRAINTS FOREIGN KEY ( FOREIGN KEY (列名列名) )REFERENCES REFERENCES ( (列名列名) ) ON DELETE NO ACTION ON DELETE NO ACTION| ON DELETE CASCADE| ON DELETE CASCADE| ON DELETE SET NULL| ON DELETE SET NULL| ON DELETE SET DEFAULT;| ON DELETE SET DEFAULT;4011
32、.4.2 11.4.2 外鍵約束外鍵約束例例 創(chuàng)建課程表之后,添加外鍵約束創(chuàng)建課程表之后,添加外鍵約束CREATE TABLE COURSE(CREATE TABLE COURSE( Cno VARCHAR2(20), Cno VARCHAR2(20), Cname VARCHAR2(50) NOT NULL, Cname VARCHAR2(50) NOT NULL, Cprecno VARCHAR2(10), Cprecno VARCHAR2(10), Ccredit NUMBER(2), Ccredit NUMBER(2), Tno VARCHAR2(6), Tno VARCHAR2(6)
33、, CONSTRAINTS cource_con_pk PRIMARY KEY(Cno), CONSTRAINTS cource_con_pk PRIMARY KEY(Cno),););ALTER TABLE courseALTER TABLE courseADD CONSTRAINTS cource_tno_fk FOREIGN KEY (Tno)ADD CONSTRAINTS cource_tno_fk FOREIGN KEY (Tno)REFERENCES teacher (Tno)REFERENCES teacher (Tno)ON DELETE CASCADE;ON DELETE C
34、ASCADE;41ALTER TABLE courseALTER TABLE courseADD CONSTRAINTS cource_tno_fk FOREIGN KEY (Tno)ADD CONSTRAINTS cource_tno_fk FOREIGN KEY (Tno)REFERENCES teacher (Tno)REFERENCES teacher (Tno)ON DELETE CASCADE;ON DELETE CASCADE;4211.4.2 11.4.2 外鍵約束外鍵約束刪除外鍵約束刪除外鍵約束刪除外鍵約束與刪除主鍵約束的方法相同刪除外鍵約束與刪除主鍵約束的方法相同例例 刪除
35、課程表的外鍵約束刪除課程表的外鍵約束cource_tno_fkcource_tno_fk,其代碼如下:其代碼如下: ALTER TABLE courseALTER TABLE courseDROP CONSTRAINTS cource_tno_fk;DROP CONSTRAINTS cource_tno_fk;4311.4.3 11.4.3 唯一約束唯一約束唯一維束可以保證表中唯一維束可以保證表中數(shù)據(jù)的唯一性。數(shù)據(jù)的唯一性。它它與主鍵約束的區(qū)別與主鍵約束的區(qū)別是:是:在一張表中在一張表中唯一約束可以有多個(gè)唯一約束可以有多個(gè),而,而主鍵約束只能有一個(gè)主鍵約束只能有一個(gè)。唯一約束唯一約束允許出現(xiàn)空
36、值允許出現(xiàn)空值,而主鍵約束,而主鍵約束不允許有空值不允許有空值存在。存在。對(duì)于對(duì)于同一張表或同一列同一張表或同一列,不能同時(shí)不能同時(shí)設(shè)置主鍵約束和唯設(shè)置主鍵約束和唯一約束。一約束。接下來(lái)以接下來(lái)以系表為例系表為例介紹唯一約束,其表結(jié)構(gòu)在前面已介紹唯一約束,其表結(jié)構(gòu)在前面已經(jīng)介紹過(guò)。經(jīng)介紹過(guò)。4411.4.3 11.4.3 唯一約束唯一約束創(chuàng)建表時(shí)創(chuàng)建唯一約束創(chuàng)建表時(shí)創(chuàng)建唯一約束其語(yǔ)法結(jié)構(gòu)如下:其語(yǔ)法結(jié)構(gòu)如下:CONSTRAINTS CONSTRAINTS UNIQUE ( UNIQUE (列名列名) )例例 創(chuàng)建系表時(shí)創(chuàng)建唯一約束創(chuàng)建系表時(shí)創(chuàng)建唯一約束CREATE TABLE DEPT(CRE
37、ATE TABLE DEPT( Dno VARCHAR2(6), Dno VARCHAR2(6), Dname VARCHAR2(50) NOT NULL, Dname VARCHAR2(50) NOT NULL, Dtelephone VARCHAR2(12), Dtelephone VARCHAR2(12), Ddean VARCHAR2(10) NOT NULL, Ddean VARCHAR2(10) NOT NULL, Daddress VARCHAR2(50), Daddress VARCHAR2(50), CONSTRAINTS dept_dno_pk PRIMARY KEY(dn
38、o), CONSTRAINTS dept_dno_pk PRIMARY KEY(dno), CONSTRAINTS dept_dname_unk UNIQUE (Dname)CONSTRAINTS dept_dname_unk UNIQUE (Dname););-系名唯一系名唯一4511.4.3 11.4.3 唯一約束唯一約束創(chuàng)建完表之后,使用創(chuàng)建完表之后,使用ALTER TABLEALTER TABLE添加唯一約束,其語(yǔ)法添加唯一約束,其語(yǔ)法結(jié)構(gòu)如下結(jié)構(gòu)如下: :ALTER TABLE ALTER TABLE ADD CONSTRAINTS ADD CONSTRAINTS UNIQUE (
39、UNIQUE (列名列名););例例創(chuàng)建完系表后,添加唯一約束創(chuàng)建完系表后,添加唯一約束CREATE TABLE DEPT(CREATE TABLE DEPT( Dno VARCHAR2(6), Dno VARCHAR2(6), Dname VARCHAR2(50) NOT NULL, Dname VARCHAR2(50) NOT NULL, Dtelephone VARCHAR2(12), Dtelephone VARCHAR2(12), Ddean VARCHAR2(10) NOT NULL, Ddean VARCHAR2(10) NOT NULL, Daddress VARCHAR2(5
40、0), Daddress VARCHAR2(50), CONSTRAINTS dept_dno_pk PRIMARY KEY(dno), CONSTRAINTS dept_dno_pk PRIMARY KEY(dno),););ALTER TABLE deptALTER TABLE deptADD CONSTRAINTS dept_dname_unq UNIQUE (Dname);ADD CONSTRAINTS dept_dname_unq UNIQUE (Dname);4611.4.3 11.4.3 唯一約束唯一約束刪除唯一約束刪除唯一約束刪除唯一約束與刪除主鍵約束的方法也相同。刪除唯一約束
41、與刪除主鍵約束的方法也相同。例例 我們使用下面語(yǔ)句將唯一約束我們使用下面語(yǔ)句將唯一約束dept_dname dept_dname _unq_unq刪除。刪除。ALTER TABLE deptALTER TABLE deptDROP CONSTRAINTS dept_dname_unq;DROP CONSTRAINTS dept_dname_unq;4711.4.4 11.4.4 檢查約束檢查約束檢查約束是限制表中某一列或者某些列中可接受檢查約束是限制表中某一列或者某些列中可接受的數(shù)據(jù)值或者數(shù)據(jù)格式。的數(shù)據(jù)值或者數(shù)據(jù)格式。如,如,限制限制學(xué)生表中的學(xué)生性別必須為學(xué)生表中的學(xué)生性別必須為“F”F”
42、或或“M”M”,成績(jī)表中的考試類型必須為,成績(jī)表中的考試類型必須為“期中期中”或或“期末期末”。接下來(lái)以接下來(lái)以學(xué)生表學(xué)生表為例,其表結(jié)構(gòu)如下為例,其表結(jié)構(gòu)如下:字段字段數(shù)據(jù)類型數(shù)據(jù)類型描述描述SnoVARCHAR2(20)學(xué)號(hào)學(xué)號(hào)(主鍵主鍵)SnameVARCHAR2(10)姓名姓名(非空值非空值)SsexVARCHAR2(6)性別性別(非空值,取非空值,取“F”或或“M”)SageNumber(3)年齡年齡(允許為空允許為空)SentrydateDATE入學(xué)日期入學(xué)日期(非空值非空值)DnoVARCHAR2(6)系標(biāo)號(hào)系標(biāo)號(hào)(外鍵,參照外鍵,參照Dept表主鍵表主鍵)4811.4.4 11
43、.4.4 檢查約束檢查約束創(chuàng)建表時(shí)創(chuàng)建檢查約束創(chuàng)建表時(shí)創(chuàng)建檢查約束創(chuàng)建檢查約束的語(yǔ)法結(jié)構(gòu)如下:創(chuàng)建檢查約束的語(yǔ)法結(jié)構(gòu)如下: CONSTRAINTS CONSTRAINTS CHECK ( CHECK (條件條件) )例例 創(chuàng)建學(xué)生表時(shí)創(chuàng)建檢查約束創(chuàng)建學(xué)生表時(shí)創(chuàng)建檢查約束CREATE TABLE STUDENT(CREATE TABLE STUDENT( Sno VARCHAR2(20), Sno VARCHAR2(20), Sname VARCHAR2(10) NOT NULL, Sname VARCHAR2(10) NOT NULL, Ssex VARCHAR2(6) NOT NULL, S
44、sex VARCHAR2(6) NOT NULL, Sage NUMBER(3), Sage NUMBER(3), Sentrydate DATE NOT NULL, Sentrydate DATE NOT NULL, Dno VARCHAR2(6), Dno VARCHAR2(6), CONSTRAINTS student_sno_pk PRIMARY KEY(Sno), CONSTRAINTS student_sno_pk PRIMARY KEY(Sno), CONSTRAINTS student_ssex_check CHECK(Ssex in (F,M),CONSTRAINTS stu
45、dent_ssex_check CHECK(Ssex in (F,M), CONSTRAINTS student_dno_fk FOREIGN KEY(Dno) REFERENCES dept(Dno) CONSTRAINTS student_dno_fk FOREIGN KEY(Dno) REFERENCES dept(Dno) ON DELETE CASCADE ON DELETE CASCADE););4911.4.4 11.4.4 檢查約束檢查約束創(chuàng)建完表之后,使用創(chuàng)建完表之后,使用ALTER TABLEALTER TABLE添加檢查約束添加檢查約束其語(yǔ)法結(jié)構(gòu)如下:其語(yǔ)法結(jié)構(gòu)如下:AL
46、TER TABLE ALTER TABLE ADD CONSTRAINTS ADD CONSTRAINTS CHECK ( CHECK (條件條件); ); 例例 添加檢查約束添加檢查約束CREATE TABLE STUDENT(CREATE TABLE STUDENT( Sno VARCHAR2(20), Sno VARCHAR2(20), Sname VARCHAR2(10) NOT NULL, Sname VARCHAR2(10) NOT NULL, Ssex VARCHAR2(6) NOT NULL, Ssex VARCHAR2(6) NOT NULL, Sage NUMBER(3),
47、 Sage NUMBER(3), Sentrydate DATE NOT NULL, Sentrydate DATE NOT NULL, Dno VARCHAR2(6), Dno VARCHAR2(6), CONSTRAINTS student_sno_pk PRIMARY KEY(Sno), CONSTRAINTS student_sno_pk PRIMARY KEY(Sno), CONSTRAINTS student_dno_fk FOREIGN KEY(Dno) REFERENCES dept(Dno) CONSTRAINTS student_dno_fk FOREIGN KEY(Dno
48、) REFERENCES dept(Dno) ON DELETE CASCADE ON DELETE CASCADE););ALTER TABLE studentALTER TABLE studentADD CONSTRAINTS student_ssex_check CHECK(Ssex in (F,M);ADD CONSTRAINTS student_ssex_check CHECK(Ssex in (F,M);5011.4.4 11.4.4 檢查約束檢查約束刪除刪除檢查約束檢查約束刪除檢查約束與刪除其它約束的方法相同。刪除檢查約束與刪除其它約束的方法相同。例例 刪除學(xué)生表刪除學(xué)生表STU
49、DENTSTUDENT的檢查約束的檢查約束student_ssex_ checkstudent_ssex_ check,其代碼如下所示,其代碼如下所示:ALTER TABLE studentALTER TABLE studentDROP CONSTRAINTS student_ssex_check;DROP CONSTRAINTS student_ssex_check;5111.4.5 11.4.5 非空約束非空約束創(chuàng)建表時(shí)創(chuàng)建非空約束創(chuàng)建表時(shí)創(chuàng)建非空約束非空約束的創(chuàng)建是在字段定義的后面直接寫上非空約束的創(chuàng)建是在字段定義的后面直接寫上NOT NULLNOT NULL,字段定義與,字段定義與NO
50、T NULLNOT NULL之間用空格隔之間用空格隔開。開。如入學(xué)時(shí)間非空如入學(xué)時(shí)間非空 Sentrydate DATE NOT NULL,Sentrydate DATE NOT NULL,使用使用ALTER TABLEALTER TABLE設(shè)置非空約束設(shè)置非空約束其語(yǔ)法結(jié)構(gòu)如下。其語(yǔ)法結(jié)構(gòu)如下。ALTER TABLE ALTER TABLE MODIFY MODIFY NOT NULL | NULL; NOT NULL | NULL;5211.4.5 11.4.5 非空約束非空約束例例 將學(xué)生表的入學(xué)日期字段將學(xué)生表的入學(xué)日期字段SentrydateSentrydate從從NOT NULLN
51、OT NULL修改為修改為NULLNULL其代碼如下:其代碼如下:ALTER TABLE studentALTER TABLE studentMODIFY Sentrydate NULL;MODIFY Sentrydate NULL;5311.5 11.5 使用使用企業(yè)管理器企業(yè)管理器管理表管理表11.5.1 11.5.1 創(chuàng)建表創(chuàng)建表11.5.2 11.5.2 修改表修改表11.5.3 11.5.3 刪除表刪除表11.5.4 11.5.4 定義約束定義約束(這部分內(nèi)容需要演示)(這部分內(nèi)容需要演示)5411.5.1 創(chuàng)建表1. 打開企業(yè)管理器55啟動(dòng)服務(wù)56查看端口portlist.ini5
52、7https:/localhost:5501/em582. 進(jìn)入創(chuàng)建數(shù)據(jù)表界面593. 創(chuàng)建表(標(biāo)準(zhǔn)表、索引表)6011.5.2 修改表6111.5.3 刪除表6211.5.4 創(chuàng)建約束63646511.6 11.6 分區(qū)表分區(qū)表11.6.1 11.6.1 什么是分區(qū)表什么是分區(qū)表11.6.2 11.6.2 創(chuàng)建分區(qū)表創(chuàng)建分區(qū)表11.6.3 11.6.3 維護(hù)分區(qū)維護(hù)分區(qū)11.6.4 11.6.4 查看分區(qū)信息查看分區(qū)信息6611.6.1 11.6.1 什么是分區(qū)表什么是分區(qū)表表可以進(jìn)行分區(qū)。表可以進(jìn)行分區(qū)。被分區(qū)的表在被分區(qū)的表在邏輯上仍然是一張完整的邏輯上仍然是一張完整的表,表,但是在但是
53、在物理物理層面上,層面上,不同分區(qū)的數(shù)據(jù)不同分區(qū)的數(shù)據(jù)被存被存儲(chǔ)到了儲(chǔ)到了不同的表空間不同的表空間上。上。對(duì)于數(shù)據(jù)庫(kù)管理員,對(duì)于數(shù)據(jù)庫(kù)管理員,分區(qū)表分區(qū)表既可既可集體管理集體管理,也可也可單獨(dú)管理單獨(dú)管理,這使得表管理,這使得表管理更加靈活更加靈活;對(duì)于對(duì)于應(yīng)用程序應(yīng)用程序,表是否分區(qū)是,表是否分區(qū)是感受不到感受不到的。的。 6711.6.1 11.6.1 什么是分區(qū)表什么是分區(qū)表分區(qū)表有以下分區(qū)表有以下特點(diǎn)特點(diǎn): :改善查詢性能改善查詢性能:查詢數(shù)據(jù)時(shí)可以:查詢數(shù)據(jù)時(shí)可以只檢索相應(yīng)的只檢索相應(yīng)的分區(qū)分區(qū),不必將整張表全部掃描,提高了檢索的,不必將整張表全部掃描,提高了檢索的速度。速度。 增強(qiáng)
54、健壯性增強(qiáng)健壯性:當(dāng)一個(gè)分區(qū)損壞時(shí),其它分區(qū)仍:當(dāng)一個(gè)分區(qū)損壞時(shí),其它分區(qū)仍然可以正常使用。然可以正常使用。 改善維護(hù)性改善維護(hù)性:當(dāng)一個(gè)分區(qū)損壞時(shí),只需維護(hù)該:當(dāng)一個(gè)分區(qū)損壞時(shí),只需維護(hù)該分區(qū),其它分區(qū)不受影響。分區(qū),其它分區(qū)不受影響。6811.6.2 11.6.2 創(chuàng)建分區(qū)表創(chuàng)建分區(qū)表我們?cè)诖私榻B我們?cè)诖私榻B四種分區(qū)方法四種分區(qū)方法:范圍分區(qū)范圍分區(qū)列表分區(qū)列表分區(qū)散列分區(qū)散列分區(qū)復(fù)合分區(qū)復(fù)合分區(qū)6911.6.2 11.6.2 創(chuàng)建分區(qū)表創(chuàng)建分區(qū)表法法1. 1. 范圍分區(qū)范圍分區(qū) 范圍分區(qū)就是對(duì)數(shù)據(jù)表中的某個(gè)值的范圍進(jìn)行分區(qū),根據(jù)某個(gè)值的范圍,決定將該數(shù)據(jù)存儲(chǔ)在哪個(gè)分區(qū)上。 如根據(jù)序號(hào)分區(qū)
55、,根據(jù)業(yè)務(wù)記錄的創(chuàng)建日期進(jìn)行分區(qū)等。 需求描述:需求描述:有一個(gè)物料交易表,表名:material_transactions。該表將來(lái)可能有千萬(wàn)級(jí)的數(shù)據(jù)記錄數(shù)。要求在建該表的時(shí)候使用分區(qū)表。 這時(shí)候我們可以使用序號(hào)分區(qū)三個(gè)區(qū),每個(gè)區(qū)中預(yù)計(jì)存儲(chǔ)三千萬(wàn)的數(shù)據(jù),也可以使用日期分區(qū),如每五年的數(shù)據(jù)存儲(chǔ)在一個(gè)分區(qū)上。70范圍分區(qū)是按照數(shù)據(jù)的取值范圍劃分分區(qū),其范圍分區(qū)是按照數(shù)據(jù)的取值范圍劃分分區(qū),其語(yǔ)法結(jié)構(gòu)如下:語(yǔ)法結(jié)構(gòu)如下:PARTITION BY RANGE PARTITION BY RANGE ( (列名列名) ) ( (PARTITION PARTITION 1 VALUES LESS THAN
56、VALUES LESS THAN ( (上界值上界值1) 1) TABLESPACE TABLESPACE 表空間名表空間名1, 1, PARTITION PARTITION 2 VALUES LESS THAN VALUES LESS THAN ( (上界值上界值2) 2) TABLESPACE TABLESPACE 表空間名表空間名2,2,PARTITION PARTITION n VALUES LESS THAN VALUES LESS THAN ( (上界值上界值3) 3) TABLESPACE TABLESPACE 表空間名表空間名n,n, ) )7.2創(chuàng)建分區(qū)
57、表創(chuàng)建分區(qū)表例例 以學(xué)生表為例,按學(xué)號(hào)創(chuàng)建范圍分區(qū)以學(xué)生表為例,按學(xué)號(hào)創(chuàng)建范圍分區(qū)CREATE TABLE STUDENT(CREATE TABLE STUDENT( Sno VARCHAR2(20), Sno VARCHAR2(20), Sname VARCHAR2(10) NOT NULL, Sname VARCHAR2(10) NOT NULL, Ssex VARCHAR2(6), Ssex VARCHAR2(6), Sage NUMBER(3), Sage NUMBER(3), Sentrydate DATE NOT NULL, Sentrydate DATE NOT NULL, Dn
58、o VARCHAR2(6), Dno VARCHAR2(6), CONSTRAINTS student_sno_pk PRIMARY KEY(Sno), CONSTRAINTS student_sno_pk PRIMARY KEY(Sno), CONSTRAINTS student_ssex_check CHECK(Ssex in (F,M), CONSTRAINTS student_ssex_check CHECK(Ssex in (F,M), CONSTRAINTS student_dno_fk FOREIGN KEY(Dno) REFERENCES dept(Dno) CONSTRAIN
59、TS student_dno_fk FOREIGN KEY(Dno) REFERENCES dept(Dno) ON DELETE CASCADE ON DELETE CASCADE) )PARTITION BY RANGE (PARTITION BY RANGE (SnoSno) ) ( ( PARTITION stu_part1 VALUES LESS THAN (20087740347) PARTITION stu_part1 VALUES LESS THAN (20087740347) TABLESPACE stu_space01, TABLESPACE stu_space01, PA
60、RTITION stu_part2 VALUES LESS THAN (20087790536) PARTITION stu_part2 VALUES LESS THAN (20087790536) TABLESPACE stu_space02 TABLESPACE stu_space02 ););72創(chuàng)建表空間CREATE TABLESPACE stu_space01 DATAFILED:ORCLTBS4_1.DBF SIZE 50MEXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K SEGMENT SPACE MANAGEMENT MANUAL;CREATE
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)意作品著作權(quán)保護(hù)合同(2篇)
- 2024年度天津市公共營(yíng)養(yǎng)師之三級(jí)營(yíng)養(yǎng)師考前沖刺模擬試卷A卷含答案
- 2024年度四川省公共營(yíng)養(yǎng)師之四級(jí)營(yíng)養(yǎng)師能力提升試卷A卷附答案
- 2024年度四川省公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師綜合練習(xí)試卷B卷附答案
- 糊仔面條行業(yè)深度研究報(bào)告
- 2025年建筑涂料色漿項(xiàng)目安全調(diào)研評(píng)估報(bào)告
- 硝酸鈣生產(chǎn)項(xiàng)目可行性研究報(bào)告申請(qǐng)建議書
- 巴布亞新幾內(nèi)亞某卷煙廠項(xiàng)目可行性研究報(bào)告
- 2024年流量?jī)x表項(xiàng)目評(píng)估報(bào)告
- 油炸豆腐項(xiàng)目可行性研究報(bào)告
- 《銷售主管競(jìng)聘》課件
- 青少年型青光眼個(gè)案護(hù)理
- 2024年形式與政策論文
- 機(jī)電設(shè)備故障診斷與維修(高職)全套教學(xué)課件
- 建設(shè)銀行新員工培訓(xùn)方案
- 2024年綠色生產(chǎn)培訓(xùn)資料
- 超市配送方案
- 醫(yī)院藥房年終工作總結(jié)
- 整體爬升鋼平臺(tái)模板工程技術(shù)規(guī)程
- 2024年醫(yī)療管理趨勢(shì)展望挑戰(zhàn)與機(jī)遇培訓(xùn)課件
- 發(fā)動(dòng)機(jī)無(wú)法啟動(dòng)的故障診斷
評(píng)論
0/150
提交評(píng)論