版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第四課 建立和管理表,作者:吳進(jìn),,,教學(xué)提示,在Oracle的數(shù)據(jù)庫系統(tǒng)中,表是數(shù)據(jù)庫的基本對(duì)象,也是存取數(shù)據(jù)庫的主要手段,與桌面數(shù)據(jù)庫的文件類似,可以把所有的基本實(shí)體都看成表,不管應(yīng)用中的表有多復(fù)雜,都可以用表來表示,用以存放實(shí)體的數(shù)據(jù)。學(xué)習(xí)完本課內(nèi)容后,將對(duì)數(shù)據(jù)庫表的操作會(huì)有一個(gè)比較全面的了解,教學(xué)目標(biāo),了解表的基本概念理解表的結(jié)構(gòu)掌握表的創(chuàng)建、修改和刪除,數(shù)據(jù)范式,從數(shù)據(jù)庫表中除去冗余數(shù)據(jù)的過程稱為規(guī)范化。如果使用得當(dāng),規(guī)
2、范化是得到高效的數(shù)據(jù)表邏輯結(jié)構(gòu)最好和最容易的方法。規(guī)范化數(shù)據(jù)時(shí),應(yīng)執(zhí)行以下操作:將數(shù)據(jù)庫的結(jié)構(gòu)精簡為最簡單的形式從表中刪除冗余列標(biāo)識(shí)所有依賴于其它數(shù)據(jù)的數(shù)據(jù)規(guī)范化過程有幾個(gè)階段。它們被稱為:第一范式(1NF)第二范式(2NF)第三范式(3NF)第四范式(4NF)第五范式(5NF)對(duì)于所有的實(shí)際應(yīng)用,3NF已經(jīng)足夠。,高效范式的任務(wù),刪除表中重復(fù)的列達(dá)到1NF。刪除表中不完全依賴于主鍵的數(shù)據(jù)為2NF。刪除不屬于該表
3、的數(shù)據(jù)(即完全依賴于其它列或外鍵的數(shù)據(jù)項(xiàng)),以使數(shù)據(jù)符合3NF。向表中放回一定數(shù)量的冗余數(shù)據(jù),通過避免使用跨表聯(lián)接來提高性能。,數(shù)據(jù)庫設(shè)計(jì)異常,從概念的角度出發(fā),將所有的信息放在一個(gè)關(guān)系中很方便,因?yàn)檫@樣查詢數(shù)據(jù)庫可能會(huì)比較容易。但是這些關(guān)系具有下列不必要的特性:見備注。,1NF,第一范示(1NF)滿足關(guān)系性質(zhì)的表稱為滿足第一范式。此時(shí),關(guān)系不能有多值或復(fù)合屬性。這是1NF所必需的。當(dāng)且僅當(dāng)一個(gè)關(guān)系的所有基礎(chǔ)域包含原子值時(shí),則稱
4、該關(guān)系滿足1NF。第一范式僅處理關(guān)系的基本結(jié)構(gòu),不解決冗余信息或異常信息。,2NF,第二范式(2NF)第二范式用于解決已滿足1NF的關(guān)系所標(biāo)識(shí)的問題。第二范示的目標(biāo)是確保關(guān)系中的所有信息只是關(guān)于一個(gè)實(shí)體的信息。如果一個(gè)關(guān)系滿足1NF,并且所有非主鍵屬性完全依賴于該關(guān)系的任一主鍵,則該關(guān)系滿足2NF。例子解說見備注:,3NF,第三范式(3NF)雖然使關(guān)系滿足2NF可以刪除許多可能出現(xiàn)的異常,但不能完全刪除所有的異常,還需要進(jìn)一步
5、的規(guī)范化。定義3NF:如果關(guān)系R 滿足2NF,并且R 的任一非主鍵屬性都不傳遞依賴于R 的其它任何非主鍵屬性,則稱為R 滿足第三范示。傳遞依賴:假設(shè)屬性 A、B、C 是 R 的三個(gè)屬性,如果A ? B,且B ? C,我們可得出這就是A ?C.發(fā)生了傳遞依賴。,表的結(jié)構(gòu),用戶表和數(shù)據(jù)字典是Oracle數(shù)據(jù)庫中的兩種類型的表用戶表由用戶創(chuàng)建數(shù)據(jù)字典由Oracle服務(wù)器創(chuàng)建和維護(hù)數(shù)據(jù)字典包括有關(guān)數(shù)據(jù)庫的信息,表、列和行,列稱為字段
6、行又稱為記錄每個(gè)字段具有 字段名、字段長度、約束、默認(rèn)值 屬性,命名表時(shí)需要遵循的規(guī)則,,表名首字符應(yīng)該為字母不能使用保留字表名長度不超過30字符同一用戶下表名不能重復(fù)可以使用下劃線、數(shù)字、字母,但不能使用空格和單引號(hào)不區(qū)分大小寫,系統(tǒng)自動(dòng)轉(zhuǎn)換為大寫,創(chuàng)建新表,創(chuàng)建表屬于DDL語言CREATE TABLE EMPLOYEE( empid char(4) not null, empname varch
7、ar2(15) not null, empaddress varchar2(20), zip char(10), empphone char(15) );,創(chuàng)建臨時(shí)表,Oracle可以建立臨時(shí)表臨時(shí)表用來保存一個(gè)會(huì)話(SESSION)的數(shù)據(jù)或者一個(gè)事務(wù)中需要的數(shù)據(jù)當(dāng)會(huì)話退出或者用戶提交和回滾事務(wù)的時(shí)候,臨時(shí)表的數(shù)據(jù)自動(dòng)清空,但是臨時(shí)表的結(jié)構(gòu)以及元數(shù)據(jù)還存儲(chǔ)在用戶的數(shù)據(jù)字典中會(huì)話特有的臨時(shí)表和
8、事務(wù)特有的臨時(shí)表,事務(wù)特有的臨時(shí)表,只在事務(wù)生命周期中存在Create global temporary table classes(class_id number(5),class_name varchar2(8),class_memo varchar2(200))On commit delete rows;,事務(wù)特有的臨時(shí)表,Insert into classes values(1,’1’,’1’);Selec
9、t * from classes;Commit;Select * from classes;,會(huì)話特有的臨時(shí)表,用戶退出,自動(dòng)清除臨時(shí)表中數(shù)據(jù)Create global temporary table student(stu_id number(5),class_id number(5),stu_name varchar2(8),stu_meno varchar2(200))on commit
10、preserve rows;,會(huì)話特有的臨時(shí)表,insert into student values(1,1,'1','1');Select * from student;Commit;Select * from student;--更換一個(gè)用戶后Select * from student;,特性和性能,臨時(shí)表只在當(dāng)前連接內(nèi)有效臨時(shí)表不建立索引,所以如果數(shù)據(jù)量比較大或進(jìn)行多次查詢時(shí),不推薦使
11、用在Oracle中,全局臨時(shí)表并不會(huì)刪除,實(shí)際上你只需要建立一次,以后直接應(yīng)用就行了,這與sqlserver和Sybase不一樣。實(shí)際上在斷開數(shù)據(jù)庫連接時(shí),臨時(shí)表中數(shù)據(jù)自動(dòng)清空。,增加列,Alter table employee add DepartmentCode char(6);,修改列,Alter table employee modify empname varchar2(40);Alter table departmen
12、t modify(Deptno char(6),Note varchar2(80));,刪除列,Alter table employee drop column empphone;--有的時(shí)候數(shù)據(jù)正在使用,并發(fā)時(shí),可以先把字段設(shè)置為unused,等沒有人使用的時(shí)候再進(jìn)行刪除。Alter table employee Set unused(zip);Alter table employee Drop unused col
13、umns;,重命名表,Rename old_name to new_name;Rename employee to emp;Alter table employee rename to emp;,清空與刪除表,,,Delete from emp;Truncate table emp;,TRUNCATE 與 DELETE 的區(qū)別,,,TRUNCATE在各種表上無論是大的還是小的都非???。如果有ROLLBACK命令,DELETE將
14、被撤銷,而TRUNCATE則不會(huì)被撤銷TRUNCATE 是一個(gè)DDL語言,象其他所有的DDL語言一樣,它將被隱形提交,不能對(duì)TRUNCATE使用ROLLBACK命令TRUNCATE將重新設(shè)置所有的索引。在對(duì)整個(gè)表和索引進(jìn)行完全瀏覽時(shí),經(jīng)過TRUNCATE操作后的表比DELETE操作后的表要快得多。TRUNCATE不能觸發(fā)任何DELETE觸發(fā)器當(dāng)表被清空后,表和表的索引將重新設(shè)置成初始大小,而DELETE則不能,刪除表,,,Dro
15、p table employee;,查看有關(guān)表信息,,,查看有關(guān)表信息,,,查看有關(guān)表信息,,,如何從數(shù)據(jù)字典中查看一個(gè)表中所有列的信息,,,--查詢表信息SELECT * FROM ALL_OBJECTS WHERE OWNER ='SCOTT' AND OBJECT_NAME='EMP';--查詢列信息SELECT OBJ#,COL#,NAME FROM SYS.COL$ WHERE OBJ#
16、in (SELECT object_id FROM ALL_OBJECTS WHERE OWNER ='SCOTT' AND OBJECT_NAME='EMP');,使用OEM實(shí)踐操作,,,登陸(SYS)-管理-建表,使用OEM實(shí)踐操作,,,可以通過顯示SQL選項(xiàng)生成DDL語句,習(xí)題,,,通過SYS利用OEM建立自己用戶下的表,表結(jié)構(gòu)來自scott用戶下的emp,dept表,并導(dǎo)入數(shù)據(jù)。將建立的表生成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
評(píng)論
0/150
提交評(píng)論