Oracle數(shù)據(jù)庫(kù)培訓(xùn)-SQL基礎(chǔ)篇_第1頁(yè)
Oracle數(shù)據(jù)庫(kù)培訓(xùn)-SQL基礎(chǔ)篇_第2頁(yè)
Oracle數(shù)據(jù)庫(kù)培訓(xùn)-SQL基礎(chǔ)篇_第3頁(yè)
Oracle數(shù)據(jù)庫(kù)培訓(xùn)-SQL基礎(chǔ)篇_第4頁(yè)
Oracle數(shù)據(jù)庫(kù)培訓(xùn)-SQL基礎(chǔ)篇_第5頁(yè)
已閱讀5頁(yè),還剩198頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、SQL 語(yǔ)言基礎(chǔ)主要內(nèi)容容基本的SELECT語(yǔ)句約束和排排序數(shù)據(jù)據(jù)單行函數(shù)數(shù)多表顯示示數(shù)據(jù)、組函數(shù)數(shù)合計(jì)數(shù)數(shù)據(jù)創(chuàng)建和管管理表子查詢(xún)&操縱數(shù)數(shù)據(jù)內(nèi)置約束束創(chuàng)建視圖圖其他數(shù)據(jù)據(jù)庫(kù)對(duì)象象基本的select語(yǔ)語(yǔ)句目標(biāo)完成本課課后,您您應(yīng)當(dāng)當(dāng)能夠:列出SQLSELECT語(yǔ)句的功功能執(zhí)行基基本的SELECT語(yǔ)句SQLSELECT語(yǔ)句的功功能列選擇:你能夠夠使用SELECT語(yǔ)語(yǔ)句的列列選擇功功能選擇擇表中的的列,這這些列是是你想要要用查詢(xún)?cè)兎祷氐牡摹.?dāng)你你查詢(xún)時(shí)時(shí),你能能夠選擇擇你查詢(xún)?cè)兊谋碇兄兄付ǖ牡牧?。行選擇:你能夠夠使用SELECT語(yǔ)語(yǔ)句的行行選擇功功能選擇擇表中的的行,這這些行是是你想要要用查詢(xún)?cè)兎?/p>

2、回的的。你能能夠使用用不同的的標(biāo)準(zhǔn)限限制你看看見(jiàn)的行行。連接:你你能夠使使用SELECT語(yǔ)句句的連接接功能來(lái)來(lái)集合數(shù)數(shù)據(jù),這這些數(shù)據(jù)據(jù)被存儲(chǔ)儲(chǔ)在不同同的表中中,在它它們之間間可以創(chuàng)創(chuàng)建連接接。在后后面的課課程中你你將學(xué)到到更多關(guān)關(guān)于連接接的內(nèi)容容?;維ELECT語(yǔ)句SELECT*|DISTINCTcolumn|expressionalias,.FROMtable;SELECT 確定定哪些列列FROM確確定哪張張表選擇所有有列與指指定列SELECT*FROM departments;用跟在SELECT關(guān)關(guān)鍵字后后面的星星號(hào)(*),你能夠夠顯示表表中數(shù)據(jù)據(jù)的所有有列。SELECTdepartme

3、nt_id,location_idFROM departments;你能夠用用SELECT語(yǔ)句來(lái)來(lái)顯示表表的指定定列,指指定列名名之間用用逗號(hào)分分隔。寫(xiě)SQL 語(yǔ)句句SQL 語(yǔ)句句對(duì)大小小寫(xiě)不敏敏感SQL 語(yǔ)句句可以寫(xiě)寫(xiě)成一行行或多行行關(guān)鍵字字不能簡(jiǎn)簡(jiǎn)寫(xiě)或分分開(kāi)折行行子句通通常放在在不同的的行縮進(jìn)用用于增強(qiáng)強(qiáng)可讀性性算術(shù)表達(dá)達(dá)式用算術(shù)運(yùn)運(yùn)算符創(chuàng)創(chuàng)建數(shù)字字和日期期數(shù)據(jù)的的表達(dá)式式操作說(shuō)說(shuō)明+加-減*乘/除 使用算術(shù)術(shù)運(yùn)算符符SELECTlast_name,salary, salary+ 300FROM employees;優(yōu)先級(jí):乘法和和除法比比加法和和減法的的優(yōu)先級(jí)級(jí)高相同優(yōu)優(yōu)先級(jí)的的運(yùn)算符符

4、從左到到右計(jì)算算圓括號(hào)號(hào)用于強(qiáng)強(qiáng)制優(yōu)先先計(jì)算,并且使使語(yǔ)句更更 清晰晰SELECTlast_name,salary,12*salary+100FROM employees;空值null是是一個(gè)未未分配的的、未知知的,或或不適用用的值null不是是0,也也不是空空格包含空空值的算算術(shù)表達(dá)達(dá)式計(jì)算算結(jié)果為為空SELECTlast_name,job_id, salary,commission_pctFROM employees;定義列別別名列別名:改變列列標(biāo)題的的名字可用于于計(jì)算結(jié)結(jié)果緊跟在在列名后后面在在列名和和別名之之間可以以有選項(xiàng)項(xiàng)AS關(guān)關(guān)鍵字字如果別別名中包包含有空空格、或或者特殊殊字符、或

5、者大大小寫(xiě)敏敏感,要要求用雙雙引號(hào)SELECTlast_name AS name, commission_pct commFROMemployees;連字運(yùn)算算符連字運(yùn)算算符:連接列列或者字字符串到到其它的的列用兩個(gè)個(gè)豎線表表示(|)構(gòu)造一一個(gè)字符符表達(dá)式式的合成成列SELECTfirst_name|last_name AS EmployeesFROM employees;文字字符符串文字字字符串是是包含在在SELECT列表中的的一個(gè)字字符串,一個(gè)數(shù)數(shù)字或者者一個(gè)日日期日期和和字符的的文字字字符串值值必須用用單引號(hào)號(hào)括起來(lái)來(lái)每個(gè)文文字字符符串在每每行輸出出一次SELECTlast_name|

6、is a|job_idASEmployeeDetails”FROM employees;約束和排排序數(shù)據(jù)據(jù)目標(biāo)完成本課課后,您您應(yīng)當(dāng)當(dāng)能夠執(zhí)執(zhí)行下列列操作:用一個(gè)個(gè)查詢(xún)限限制返回回的行用一個(gè)個(gè)查詢(xún)分分類(lèi)返回回的行限制選擇擇的行用WHERE子句限制制返回的的行SELECT*|DISTINCTcolumn|expressionalias,.FROMtableWHEREcondition(s);WHERE子句句跟著FROM子句WHERE限限制查詢(xún)?cè)儩M(mǎn)足條條件的行行condition由列名、表達(dá)式式、常數(shù)數(shù)和比較較操作組組成WHERE子句句能夠比比較列值值、文字字值、算算術(shù)表達(dá)達(dá)式或者者函數(shù),WHER

7、E子句由由三個(gè)元元素組成成:列名, 比較較條件,列列名、常常量或值值列表。使用WHERE子句SELECTemployee_id, last_name,job_id,department_idFROM employeesWHEREdepartment_id =90;字符串和和日期字符串串和日期期的值放放在單引引號(hào)中字符值值區(qū)分大大小寫(xiě),日期值值是格式式敏感的的日期的的默認(rèn)格格式是DD-MON-RR.SELECTlast_name,job_id, department_idFROM employeesWHERElast_name=Whalen;比較條件件運(yùn)算含含義=等于大于=大于等于于小于=小于等

8、于于不等于比較條件件被用于于一個(gè)表表達(dá)式與與一個(gè)值值或與另另一個(gè)表表達(dá)式的的比較。.WHEREhire_date=01-JAN-95.WHEREsalary=6000.WHERElast_name=Smith其它比較較條件操作含含義義BETWEEN.AND.在兩個(gè)值值之間(包含)IN(set)匹配一個(gè)個(gè)任意值值列表LIKE匹配一個(gè)個(gè)字符模模板ISNULL是一個(gè)空空值使用BETWEEN條條件:SELECTlast_name,salaryFROM employeesWHEREsalaryBETWEEN2500 AND3500;使用IN條件SELECTemployee_id, last_name,s

9、alary,manager_idFROM employeesWHEREmanager_id IN (100, 101,201);其它比較較條件使用LIKE條條件使用LIKE條件執(zhí)行行有效搜搜索串值值的通配配符搜索索搜索條條件既可可以包含含文字也也可以包包含數(shù)字字:%表示任意意順序的的零個(gè)或或多個(gè)字字符_表示一個(gè)個(gè)字符SELECTfirst_nameFROM employeesWHEREfirst_name LIKES%;使用NULL條條件用IS NULL操操作來(lái)測(cè)測(cè)試空值值SELECTlast_name,manager_idFROM employeesWHEREmanager_id IS NU

10、LL;NULL條件,包括ISNULL條件和和ISNOT NULL條條件。邏輯條件件運(yùn)算含含義AND如果兩個(gè)個(gè)組成部部分的條條件都為為真,返返回TRUEOR如果兩個(gè)個(gè)組成部部分中的的任一個(gè)個(gè)條件為為真,返返回TRUENOT如果跟隨隨的條件件為假,返回TRUE可以在WHERE子句句中用AND和和OR運(yùn)運(yùn)算符使使用多個(gè)個(gè)條件。使用AND操作作:AND要求兩兩個(gè)條件件同時(shí)為為真SELECTemployee_id, last_name,job_id,salaryFROM employeesWHEREsalary=10000ANDjob_id LIKE%MAN%;邏輯條件件使用OR操作:OR操作要求求兩者

11、之之一為真真即可SELECTemployee_id, last_name,job_id,salaryFROM employeesWHEREsalary=10000ORjob_id LIKE%MAN%;使用NOT操作SELECTlast_name,job_idFROM employeesWHEREjob_idNOTIN(IT_PROG,ST_CLERK,SA_REP);注:NOT運(yùn)算算符也可可以用于于另一個(gè)個(gè)SQL運(yùn)算符符,例如如,BETWEEN、LIKE、和和NULL。優(yōu)先規(guī)則則求值順序序1算術(shù)運(yùn)算算2連字操作作3比較操作作4ISNOTNULL,LIKE,NOTIN5NOT BETWEEN6N

12、OT邏輯條件件7AND邏輯條件件8OR邏輯條件件使用圓括括號(hào)改變變優(yōu)先規(guī)規(guī)則 ORDERBY子句用ORDERBY子句排序序行ASC:升升序排序序,默認(rèn)認(rèn)DESC:降降序排排序ORDERBY子句在SELECT語(yǔ)句的最最后SELECTlast_name,job_dateFROM employeesORDERBYhire_date;語(yǔ)法:SELECTexprFROMtableWHEREcondition(s)ORDERBYcolumn,expr ASC|DESC;單行函數(shù)數(shù)目標(biāo)完成本課課后,您您應(yīng)當(dāng)能能夠執(zhí)行行下列操操作:描述在在SQL 中可可用的函函數(shù)的變變量類(lèi)型型在SELECT語(yǔ)句中使使用字符符

13、,數(shù)字字和日期期函數(shù)描述轉(zhuǎn)轉(zhuǎn)換函數(shù)數(shù)的使用用SQL函數(shù)函數(shù)是SQL的的一個(gè)非非常強(qiáng)有有力的特特性,函函數(shù)能夠夠用于下下面的目目的:執(zhí)行數(shù)據(jù)據(jù)計(jì)算修改單個(gè)個(gè)數(shù)據(jù)項(xiàng)項(xiàng)操縱輸出出進(jìn)行行行分組格式化顯顯示的日日期和數(shù)數(shù)字轉(zhuǎn)換列數(shù)數(shù)據(jù)類(lèi)型型SQL函函數(shù)有輸輸入?yún)?shù)數(shù),并且且總有一一個(gè)返回回值。注:在本本課中講講述的大大多數(shù)函函數(shù)是針針對(duì)SQL的Oracle版版的。SQL函數(shù)(續(xù))有兩種截截然不同同的函數(shù)數(shù):?jiǎn)涡泻瘮?shù)數(shù)多行函數(shù)數(shù)單行函數(shù)數(shù)這些函數(shù)數(shù)僅對(duì)單單個(gè)行進(jìn)進(jìn)行運(yùn)算算,并且且每行返返回一個(gè)個(gè)結(jié)果。有不同同類(lèi)型的的單行函函數(shù),本本課下面面的函數(shù)數(shù)類(lèi)型:字符 數(shù)字 日期 轉(zhuǎn)換 多行函數(shù)數(shù)這些函數(shù)數(shù)能夠操操

14、縱成組組的行,每個(gè)行行組給出出一個(gè)結(jié)結(jié)果,這這些函數(shù)數(shù)也被稱(chēng)稱(chēng)為組函函數(shù)。多多行函數(shù)數(shù)在后面面的課程程中介紹紹。單行函數(shù)數(shù)單行函數(shù)數(shù):操縱數(shù)數(shù)據(jù)項(xiàng)接受多多個(gè)參數(shù)數(shù)并返回回一個(gè)值值作用于于每一個(gè)個(gè)返回行行每行返返回一個(gè)個(gè)結(jié)果可以修修改數(shù)據(jù)據(jù)類(lèi)型可以嵌嵌套接受多多個(gè)參數(shù)數(shù),參數(shù)數(shù)可以是是一個(gè)列列或者一一個(gè)表達(dá)達(dá)式單行函數(shù)數(shù)(續(xù))單行函數(shù)數(shù)的特性性包括:作用于查查詢(xún)中返返回的每每一行每行返回回一個(gè)結(jié)結(jié)果可能返回回一個(gè)與與參數(shù)不不同類(lèi)型型的數(shù)據(jù)據(jù)值可能需要要一個(gè)或或多個(gè)參參數(shù)能夠用在在SELECT、WHERE和ORDER BY子句中中,可以以嵌套。function_name(arg1,arg2,.)f

15、unction_name是函數(shù)的的名字。arg1,arg2是由函數(shù)數(shù)使用的的任意參參數(shù),可可以由一一個(gè)列名名或者一一個(gè)表達(dá)達(dá)式提供供。單行函數(shù)數(shù)(續(xù))本課包括括下面的的單行函函數(shù):字符函數(shù)數(shù):接受受字符輸輸入,可可以返回回字符或或者數(shù)字字值數(shù)字函數(shù)數(shù):接受受數(shù)字輸輸入,返返回?cái)?shù)字字值日期函數(shù)數(shù):對(duì)DATE數(shù)據(jù)類(lèi)類(lèi)型的值值進(jìn)行運(yùn)運(yùn)算(除了MONTHS_BETWEEN函數(shù)數(shù)返回一一個(gè)數(shù)字字,所有有日期函函數(shù)都返返回一個(gè)個(gè)DATE數(shù)據(jù)據(jù)類(lèi)型的的值。)轉(zhuǎn)換函數(shù)數(shù):從一一個(gè)數(shù)據(jù)據(jù)類(lèi)型到到另一個(gè)個(gè)數(shù)據(jù)類(lèi)類(lèi)型轉(zhuǎn)換換一個(gè)值值通用函數(shù)數(shù):NVL、NVL2、NULLIF、 COALSECE、CASE 、DECOD

16、E字符函數(shù)數(shù)單行字符符函數(shù)接接受字符符數(shù)據(jù)作作為輸入入,既可可以返回回字符值值也可以返回回?cái)?shù)字值值。字符符函數(shù)可可以被分分為下面面兩種:大小寫(xiě)處處理函數(shù)數(shù)字符處理理函數(shù)大小寫(xiě)處處理函數(shù)數(shù)如下:LOWER(column|expression)轉(zhuǎn)轉(zhuǎn)換字字符值為為小寫(xiě)UPPER(column|expression)轉(zhuǎn)轉(zhuǎn)換字字符值為為大寫(xiě)INITCAP(column|expression) 轉(zhuǎn)換換每個(gè)單單詞的首首字母值值為大寫(xiě)寫(xiě),所有有其它值為為小寫(xiě)字符處理理函數(shù)如如下:CONCAT(column1|expression1 ,column2|expression2)連接第一一個(gè)字符符值到第第二個(gè)字字符

17、值;等價(jià)于于連接運(yùn)運(yùn)算符(|)SUBSTR(column|expression,m ,n)從字符值值中返回回指定的的字符,開(kāi)始位位置在m,n字符長(zhǎng)度度 (如如果m是負(fù)數(shù),計(jì)數(shù)從從字符值值末尾開(kāi)開(kāi)始;如如果n被忽略,返回到到串結(jié)束束的所有有字符)。LENGTH(column|expression) 返回回表達(dá)式式中的字字符數(shù)INSTR(column|expression,string, ,m, n)返回一個(gè)個(gè)命名串串的數(shù)字字位置。隨意地地,你可可以提供供一個(gè)位位置m作為查找找的開(kāi)始始,在字字符串中中第n次發(fā)現(xiàn)的的位置。m和n的默認(rèn)值值是1,意味著著在起始始開(kāi)始查查找,并并且報(bào)告告第一個(gè)個(gè)發(fā)現(xiàn)的的

18、位置。LPAD(column|expression,n,string)RPAD(column|expression,n,string)填充字符符值左、右調(diào)節(jié)節(jié)到n字字符位置置的總寬寬度TRIM(leading|trailing|both,trim_characterFROM trim_source)使你能夠夠從一個(gè)個(gè)字符串串修整頭頭或尾字字符(或或兩者)。如果果trim_character或trim_source是字符文文字,你你必須放放在單引引號(hào)中。REPLACE(text,search_string,replacement_string)從字符串串查找一一個(gè)文本本表達(dá)式式,如果果找到,用指

19、定定的值串串代替它它字符函數(shù)數(shù)(續(xù))大小寫(xiě)處處理函數(shù)數(shù)這些函數(shù)數(shù)轉(zhuǎn)換字字符串的的大小寫(xiě)寫(xiě)函 數(shù)結(jié)結(jié)果果LOWER(SQL Course)sqlcourseUPPER(SQL Course)SQLCOURSEINITCAP(SQLCourse)SqlCourseLOWER:轉(zhuǎn)轉(zhuǎn)換大小小寫(xiě)混合合的字符符串為小小寫(xiě)字符符串UPPER:轉(zhuǎn)轉(zhuǎn)換大小小寫(xiě)混合合的字符符串為大大寫(xiě)字符符串INITCAP:將每每個(gè)單詞詞的首字字母轉(zhuǎn)換換為大寫(xiě)寫(xiě),其他他字母為為小寫(xiě)SELECTThejobidfor |UPPER(last_name)|is|LOWER(job_id)ASEMPLOYEE DETAILSFROM

20、employees;字符處理理函數(shù)函數(shù)數(shù)結(jié)結(jié)果果CONCAT(Hello,World)HelloWorldSUBSTR(HelloWorld,1,5)HelloLENGTH(HelloWorld)10INSTR(HelloWorld, W)6LPAD(salary,10,*)*24000RPAD(salary,10, *)24000*TRIM(HFROM HelloWorld)elloWorld數(shù)字函數(shù)數(shù)ROUND:四舍五入入指定小小數(shù)的值值ROUND(45.926, 2)45.93TRUNC(45.926, 2)45.92MOD(1600,300)100ROUND(column|expres

21、sion,n)四舍五入入列、表表達(dá)式或或值為n位小數(shù)位位,或者者,如果果n被忽略,無(wú)小數(shù)數(shù)位。(如果n是負(fù)值,小數(shù)點(diǎn)點(diǎn)左邊的的數(shù)被四四舍五入入)TRUNC(column|expression,n)截?cái)嗔小⒈磉_(dá)式式或值到到n位小數(shù),或者,如果n被忽略,那么n默認(rèn)為0MOD(m,n)返返回m除以n的余數(shù)使用ROUND函數(shù)SELECTROUND(45.923,2),ROUND(45.923,0),ROUND(45.923,-1)FROM DUAL;使用TRUNC函數(shù)SELECTTRUNC(45.923,2),TRUNC(45.923),TRUNC(45.923,-2)FROMDUAL;使用MOD函數(shù)

22、SELECTlast_name,salary, MOD(salary, 5000) FROMemployees WHERE job_id= SA_REP;注:MOD函數(shù)數(shù)經(jīng)常用用于確定定一個(gè)值值是奇數(shù)數(shù)還是偶偶數(shù)日期的使使用Oracle 數(shù)據(jù)據(jù)庫(kù)用內(nèi)內(nèi)部數(shù)字字格式存存儲(chǔ)日期期:世紀(jì)紀(jì),年,月,日日,小時(shí)時(shí),分鐘鐘和秒默認(rèn)日日期顯示示格式是是DD-MON-RR.SELECTlast_name,hire_dateFROM employeesWHERElast_namelikeG%;SYSDATE函數(shù)返回回:DateTimeSYSDATE是一個(gè)個(gè)日期函函數(shù),它它返回當(dāng)當(dāng)前數(shù)據(jù)據(jù)庫(kù)服務(wù)務(wù)器的日日期和時(shí)

23、時(shí)間。SELECTSYSDATEFROMDUAL;用日期計(jì)計(jì)算從日期期加或者者減一個(gè)個(gè)數(shù),結(jié)結(jié)果是一一個(gè)日期期值兩個(gè)日日期相減減,得到到兩個(gè)日日期之間間的天數(shù)數(shù)用小時(shí)時(shí)數(shù)除以以24,可以加加小時(shí)到到日期上上既然數(shù)據(jù)據(jù)庫(kù)以數(shù)數(shù)字方式式存儲(chǔ)日日期,你你就可以以用算術(shù)術(shù)運(yùn)算符符進(jìn)行計(jì)計(jì)算,例例如,加加或減。你可以以加或減減數(shù)字常常數(shù)以及及日期。你可以進(jìn)進(jìn)行下面面的運(yùn)算算:運(yùn)算結(jié)結(jié)果說(shuō)說(shuō)明date +number日日期加加一一個(gè)天數(shù)數(shù)到一個(gè)個(gè)日期上上date -number日日期從從一一個(gè)日期期上減一一個(gè)天數(shù)數(shù)date -date天天數(shù)用用一個(gè)日日期減另另一個(gè)日日期date +number/24日日期

24、加加一個(gè)小小時(shí)數(shù)到到一個(gè)日日期上日期函數(shù)數(shù)函數(shù)數(shù)說(shuō)說(shuō)明明MONTHS_BETWEEN兩個(gè)日期期之間的的月數(shù)ADD_MONTHS加日歷月月到日期期NEXT_DAY下個(gè)星期期幾是幾幾號(hào)LAST_DAY指定月的的最后一一天ROUND四舍五入入日期TRUNC截?cái)嗳掌谄谌掌诤瘮?shù)數(shù)(續(xù))MONTHS_BETWEEN(date1,date2):計(jì)算算date1和date2之間的月月數(shù),其其結(jié)果可可以是正正的也可可以是負(fù)負(fù)的。如如果date1大于date2,結(jié)果是是正的,反之,結(jié)果是是負(fù)的。結(jié)果的的小數(shù)部部分表示示月的一一部分。ADD_MONTHS(date,n):添加加n個(gè)日歷月月到date。n的值必須須是

25、整數(shù)數(shù),但可可以是負(fù)負(fù)的。NEXT_DAY(date,char):計(jì)計(jì)算在date之后的下下一個(gè)周周(char)指定定天的日日期。char的值可能能是一個(gè)個(gè)表示一一天的數(shù)數(shù)或者是是一個(gè)字字符串。LAST_DAY(date):計(jì)算算包含date的月的最最后一天天的日期期ROUND(date,fmt):返返回用格格式化模模式fmt四舍五入入到指定定單位的的date,如果格格式模式式fmt被忽略,date被四舍五五入到最最近的天天。TRUNC(date,fmt):返返回用格格式化模模式fmt截?cái)嗟街钢付▎挝晃坏膸焯斓臅r(shí)間間部分的的date,如果格格式模式式fmt被忽略,date被截?cái)嗟降阶罱牡奶?/p>

26、。使用日期期函數(shù)MONTHS_BETWEEN(01-SEP-95,11-JAN-94)19.6774194ADD_MONTHS (11-JAN-94,6)11-JUL-94NEXT_DAY(01-SEP-95,2)下個(gè)星期期五是幾幾號(hào)08-SEP-95LAST_DAY(01-FEB-95)28-FEB-95使用日期期函數(shù)(續(xù))假定SYSDATE=25-JUL-95:ROUND(SYSDATE,MONTH)01-AUG-95ROUND(SYSDATE ,YEAR)01-JAN-96TRUNC(SYSDATE ,MONTH)01-JUL-95TRUNC(SYSDATE ,YEAR)01-JAN-9

27、5TRUNC(TO_DATE(25-JUL-95),YEAR)01-JAN-95轉(zhuǎn)換函數(shù)數(shù)數(shù)據(jù)類(lèi)型型轉(zhuǎn)換隱式數(shù)數(shù)據(jù)類(lèi)型型轉(zhuǎn)換顯式數(shù)數(shù)據(jù)類(lèi)型型轉(zhuǎn)換對(duì)于直接接賦值,Oracle 服務(wù)務(wù)器能夠夠自動(dòng)地地進(jìn)行下下面的轉(zhuǎn)換:從到到VARCHAR2orCHARNUMBERVARCHAR2orCHARDATENUMBERVARCHAR2DATEVARCHAR2對(duì)于表達(dá)達(dá)式賦值值,Oracle服服務(wù)器能能自動(dòng)地地進(jìn)行下下面的轉(zhuǎn)轉(zhuǎn)換:從 VARCHAR2 or CHAR到DATE從 VARCHAR2 or CHAR到NUMBER轉(zhuǎn)換函數(shù)數(shù)(續(xù))顯式數(shù)據(jù)據(jù)類(lèi)型轉(zhuǎn)轉(zhuǎn)換SQL提提供三三種函數(shù)數(shù)來(lái)從一一種數(shù)據(jù)據(jù)類(lèi)型轉(zhuǎn)轉(zhuǎn)

28、換值到到另一種種:TO_CHAR(number|date,fmt,nlsparams)轉(zhuǎn)換一個(gè)個(gè)數(shù)字或或日期值值為一個(gè)個(gè)VARCHAR2字字符串,帶格式式化樣式fmt。數(shù)字轉(zhuǎn)換換:nlsparams參參數(shù)指定定下面的的字符,它由數(shù)數(shù)字格式式化元素返返回:小數(shù)字符符99999.99前導(dǎo)009999本地貨幣幣符號(hào)L9999國(guó)際貨幣幣符號(hào)$9999如果忽略略nlsparams或其它它參數(shù),該函數(shù)數(shù)在會(huì)話話中使用用默認(rèn)參參數(shù)值。TO_CHAR(number|date,fmt,nlsparams)指定返回回的月和和日名字字及其縮縮寫(xiě)的語(yǔ)語(yǔ)言。如如果忽略略該參數(shù)數(shù),該函數(shù)在在會(huì)話中中使用默默認(rèn)日期期語(yǔ)言。

29、TO_NUMBER(char,fmt,nlsparams)用由可選選格式化化樣式fmt指定的格格式轉(zhuǎn)換換包含數(shù)數(shù)字的字字符串為為一個(gè)數(shù)字字。Nlsparams參數(shù)數(shù)在該函函數(shù)中的的目的與與TO_CHAR函數(shù)用于于數(shù)字轉(zhuǎn)轉(zhuǎn)換的目目的相同同 。TO_DATE(char,fmt,nlsparams)按照f(shuō)mt指定的格格式轉(zhuǎn)換換表示日日期的字字符串為為日期值值。如果果忽略fmt,格式是是 DD-MON-YY。Nlsparams參參數(shù)的目目的與TO_CHAR函數(shù)用用于日期期轉(zhuǎn)換時(shí)時(shí)的目的的相同。對(duì)日期使使用TO_CHAR函數(shù)TO_CHAR(date,format_model)格式模板板必須加加單引號(hào)號(hào),

30、并且且區(qū)分大大小寫(xiě)能夠包包含任一一有效的的日期格格式元素素有一個(gè)個(gè)fm元素用來(lái)來(lái)刪除填填補(bǔ)的空空,或者者前導(dǎo)零零用一個(gè)個(gè)逗號(hào)與與日期值值分開(kāi)SELECTemployee_id,TO_CHAR(hire_date,MM/YY)Month_HiredFROM employeesWHERElast_name=Higgins;日期格式式模板的的元素YYYY數(shù)字全寫(xiě)寫(xiě)年YEAR年的拼寫(xiě)寫(xiě)MM月的兩數(shù)數(shù)字值MONTH月的全名名DY周中天的的三字母母縮寫(xiě)DAY周中天的的全名MON月的三字字母縮寫(xiě)寫(xiě)DD月的數(shù)字字天使用TO_NUMBER和TO_DATE函數(shù)轉(zhuǎn)換字字符串到到數(shù)字,用TO_NUMBER函數(shù)格式式化

31、:TO_NUMBER(char,format_model)轉(zhuǎn)換字字符串到到日期,用TO_DATE函數(shù)格式式化:TO_DATE(char,format_model)Selectto_number(12345)from dual;Selectto_date(20000810,yyyy-mm-ddfromdual;通用函數(shù)數(shù)這些函數(shù)數(shù)可用于于任意數(shù)數(shù)據(jù)類(lèi)型型,并且且適用于于空值NVL(expr1,expr2)NVL2 (expr1,expr2, expr3)NULLIF(expr1,expr2)COALESCE(expr1, expr2,., exprn)NVL轉(zhuǎn)轉(zhuǎn)換空空值為一一個(gè)實(shí)際際值NVL2如

32、如果expr1非空,NVL2返回回expr2;如果expr1為空空,NVL2返回回expr3。參數(shù)expr1可以以是任意意數(shù)據(jù)類(lèi)類(lèi)型NULLIF比比較兩兩個(gè)表達(dá)達(dá)式,如如果相等等返回空空;如果果不相等等,返回第第一個(gè)表表達(dá)式COALESCE返返回表達(dá)達(dá)式列表表中的第第一個(gè)非非空表達(dá)達(dá)式NVL函數(shù)轉(zhuǎn)換一個(gè)個(gè)空值到到一個(gè)實(shí)實(shí)際的值值可用的的數(shù)據(jù)類(lèi)類(lèi)型可以以是日期期、字符符和數(shù)字字?jǐn)?shù)據(jù)類(lèi)類(lèi)型必須須匹配:NVL(commission_pct,0)NVL(hire_date,01-JAN-97)NVL(job_id,NoJobYet)語(yǔ)法:NVL(expr1,expr2)在語(yǔ)法中中:expr1是包含空空

33、值的源源值或者者表達(dá)式式expr2是用于轉(zhuǎn)轉(zhuǎn)換空值值的目的的值Selectnvl(1,notnullfrom dual;注:如果果expr1為為空則返返回expr2r的值值使用NVL2函數(shù)NVL2 函數(shù)數(shù)檢查第第一個(gè)表表達(dá)式,如果第第一個(gè)表表達(dá)式不不為空,那么NVL2 函數(shù)數(shù)返回第第二個(gè)表表達(dá)式;如果第第一個(gè)表表達(dá)式為為空,那么么第三個(gè)個(gè)表達(dá)式式被返回回。expr2expr1非空時(shí)的的返回值值語(yǔ)法 NVL2(expr1,expr2,expr3)在語(yǔ)法中中:expr1是可能包包含空的的源值或或表達(dá)式式expr3expr1為空時(shí)的的返回值值SelectNVL2(1,notnull,null)fro

34、m dual;SelectNVL2(1,notnull,null)from dual;使用NULLIF函數(shù)NULLIF函函數(shù)比比較兩個(gè)個(gè)表達(dá)式式,如果果相等,函數(shù)返返回空,如果不不相等,函數(shù)返回回第一個(gè)個(gè)表達(dá)式式。第一一個(gè)表達(dá)達(dá)式不能能為NULL。語(yǔ)法 NULLIF(expr1,expr2)在語(yǔ)法中中:expr1是對(duì)于expr2的被比較較原值expr2是對(duì)于expr1的被比較較原值。(如果果它不等等于expr1,expr1被返回)。Selectnullif(abc,abcd)fromdual;使用COALESCE函數(shù)COALESCE函數(shù)超過(guò)過(guò)NVL函數(shù)的優(yōu)優(yōu)點(diǎn)是COALESCE函數(shù)能夠接受受多

35、個(gè)交交替的值值。如果第第一個(gè)表表達(dá)式非非空,它它返回該該表達(dá)式式;否則則,它做做一個(gè)保留表達(dá)達(dá)式的結(jié)結(jié)合。COALESCE函函數(shù)返回回列表中中的第一一個(gè)非空空表達(dá)式式。語(yǔ)法 COALESCE(expr1,expr2,. exprn)在語(yǔ)法中中:expr1如果它非非空,返返回該表表達(dá)式expr2如果第一一個(gè)表達(dá)達(dá)式為空空并且該該表達(dá)式式非空,返回該該表達(dá)式式exprn如果前面面的表達(dá)達(dá)式都為為空,返返回該表表達(dá)式Selectcoalesce(,bca)fromdual;條件表達(dá)達(dá)式在SQL 語(yǔ)句句中提供供IF-THEN-ELSE 邏輯輯的使用用。兩種用法法:CASE表達(dá)式DECODE函數(shù)CASE

36、表達(dá)式CASEexprWHENcomparison_expr1THENreturn_expr1WHENcomparison_expr2THENreturn_expr2WHENcomparison_exprnTHENreturn_exprnELSEelse_exprENDDECODE函數(shù)DECODE(col|expression,search1,result1, search2, result2,., default)DECODE函函數(shù)在在比較表表達(dá)式(expression)和每個(gè)查查找(search)值后解碼碼表達(dá)式式,如果果表達(dá)式式與查找找相同,返回結(jié)果。如果省略略默認(rèn)值值,當(dāng)沒(méi)沒(méi)有查找找值

37、與表表達(dá)式相相匹配時(shí)時(shí)返回一個(gè)空值值。多表顯示示數(shù)據(jù)&組函數(shù)數(shù)合計(jì)數(shù)數(shù)據(jù)目標(biāo)完成本課課后,您您應(yīng)當(dāng)當(dāng)能夠執(zhí)執(zhí)行下列列操作:寫(xiě)SELECT語(yǔ)語(yǔ)句使用用等值和和非等值值連接從多個(gè)表表中訪問(wèn)問(wèn)數(shù)據(jù)使用外外連接查查看不滿(mǎn)滿(mǎn)足連接接條件的的數(shù)據(jù)識(shí)別可可用的組組函數(shù)描述組組函數(shù)的的使用用GROUP BY 子句句分組數(shù)數(shù)據(jù)用HAVING子子句包含含或排除除分組的的行笛卡爾乘乘積笛卡爾爾乘積的的形成,當(dāng):一個(gè)連連接條件件被遺漏漏時(shí)一個(gè)連連接條件件不正確確時(shí)在第一一個(gè)表中中的所有有行被連連接到第第二個(gè)表表的所有有行時(shí)為了避避免笛卡卡爾乘積積的形成成,在WHERE子子句中應(yīng)應(yīng)當(dāng)總是是包含正確的的連接條條件。用Or

38、acle 語(yǔ)法法連接表表使用一個(gè)個(gè)連接從從多個(gè)表表中查詢(xún)?cè)償?shù)據(jù)SELECTtable1.column,table2.columnFROMtable1, table2WHEREtable1.column1=table2.column2;在WHERE 子句句中寫(xiě)連連接條件件當(dāng)多個(gè)個(gè)表中有有相同的的列名時(shí)時(shí),將表表名作為為列名的的前綴定定義連接接當(dāng)數(shù)據(jù)據(jù)從多表表中查詢(xún)?cè)儠r(shí),要要使用連連接(join) 條件件。一個(gè)個(gè)表中的行按照照存在于于相應(yīng)列列中的公公值被連連接到另另一個(gè)表表中的行行,即,通常常所說(shuō)的的主鍵和和外鍵列列。什么是等等值連接接?EMPLOYEESDEPARTMENTS用等值連連接返回回記

39、錄SELECTemployees.employee_id,employees.last_name,employees.department_id,departments.department_id,departments.location_idFROM employees,departmentsWHEREemployees.department_id= departments.department_id;使用表別別名使用表表別名簡(jiǎn)簡(jiǎn)化查詢(xún)?cè)兪褂帽肀韯e名改改善性能能SELECTe.employee_id,e.last_name, e.department_id,d.department_id,

40、d.location_idFROM employeese ,departmentsdWHEREe.department_id=d.department_id;原則 表別名最最多可以以有30個(gè)個(gè)字符,但短一一些更好好。如果在FROM子子句中表表別名被被用于指指定的表表,那么么在整個(gè)個(gè) SELECT語(yǔ)語(yǔ)句中都都要使用用表別名名。表別名應(yīng)應(yīng)該是有有意義的的。表別名只只對(duì)當(dāng)前前的SELECT語(yǔ)語(yǔ)句有有效。多于兩個(gè)個(gè)表的連連接EMPLOYEESDEPARTMENTSLOCATIONS非等值連連接EMPLOYEESJOB_GRADES用非等值值連接返返回記錄錄SELECTe.last_name, e.sa

41、lary,j.grade_levelFROM employeese,job_grades jWHEREe.salaryBETWEEN j.lowest_salANDj.highest_sal;外連接DEPARTMENTSEMPLOYEES外連接語(yǔ)語(yǔ)法你可以以用一個(gè)個(gè)外連接接查看那那些不滿(mǎn)滿(mǎn)足連接接條件的的行外連接接運(yùn)算符符是加號(hào)號(hào)(+)SELECTtable1.column,table2.columnFROMtable1, table2WHEREtable1.column(+)=table2.column;SELECTtable1.column,table2.columnFROMtable1,

42、 table2WHEREtable1.column=table2.column(+);用外連連接返回回不直接接匹配的的記錄如果在在連接條條件中使使用外連連接操作作,缺少少的行就就可以被被返回。操作作符是一一個(gè)在圓圓括號(hào)中中的加號(hào)號(hào) (+),它它被放置置在連接接的缺少信信息的一一側(cè)。為為了使來(lái)來(lái)自不完完善表的的一行或或多行能能夠被連接,該操作作符有產(chǎn)產(chǎn)生一個(gè)個(gè)或多個(gè)個(gè)空行的的作用。使用外連連接SELECTe.last_name, e.department_id,d.department_nameFROM employeese,departmentsdWHEREe.department_id(+)

43、 =d.department_id ;什么是組組函數(shù)?組函數(shù)操操作行集集,給出出每組的的結(jié)果EMPLOYEES在EMPLOYEES表中的最最高薪水水組函數(shù)的的類(lèi)型AVG平均值COUNT計(jì)數(shù)MAX最大值MIN最小值STDDEV標(biāo)準(zhǔn)差SUM合計(jì)VARIANCE方差組函數(shù)(續(xù))每個(gè)函數(shù)數(shù)接收一一個(gè)參數(shù)數(shù),下面面的表確確定你可可以在語(yǔ)語(yǔ)法中使使用的選選項(xiàng):函數(shù)數(shù)說(shuō)說(shuō)明明AVG(DISTINCT|ALLn)n的平均值值,忽略略空值COUNT(*|DISTINCT|ALLexpr)用用* 計(jì)數(shù)數(shù)所有行行,包括括重復(fù)和和帶空值值的行。expr求除了空空計(jì)算MAX(DISTINCT|ALLexpr)expr的

44、最大值值,忽略略空值MIN(DISTINCT|ALLexpr)expr的最小值值,忽略略空值STDDEV(DISTINCT|ALLx)n的標(biāo)準(zhǔn)差差,忽略略空值SUM(DISTINCT|ALLn)合合計(jì)計(jì)n的值,忽忽略空值值VARIANCE(DISTINCT|ALLx)n的方差,忽略空空值組函數(shù)的的語(yǔ)法SELECTcolumn,group_function(column),.FROMtableWHEREconditionGROUPBYcolumnORDERBYcolumn;使用組函函數(shù)的原原則DISTINCT使使得函數(shù)數(shù)只考慮慮不重復(fù)復(fù)的值;ALL 使得得函數(shù)考考慮每個(gè)個(gè)值,包包括重復(fù)復(fù)值。默默

45、認(rèn)值是是 ALL,因此不不需要指指定。用于函數(shù)數(shù)的參數(shù)數(shù)的數(shù)據(jù)據(jù)類(lèi)型可可以是CHAR、VARCHAR2、NUMBER或或DATE。所有組函函數(shù)忽略略空值。為了用用一個(gè)值值代替空空值,用用 NVL、NVL2 或COALESCE函函數(shù)。當(dāng)使用GROUPBY子子句時(shí)時(shí),Oracle服服務(wù)器隱隱式以升升序排序序結(jié)果集集。為了了覆蓋該該默認(rèn)順順序,DESC 可以以被用于于 ORDER BY 子句句。使用AVG、SUM、MIN、MAX函函數(shù)你可以使使用AVG和和SUM 用于于數(shù)字?jǐn)?shù)數(shù)據(jù)SELECTAVG(salary), MAX(salary),MIN(salary),SUM(salary)FROM em

46、ployeesWHEREjob_idLIKE%REP%;使用COUNT 函數(shù)數(shù)COUNT(*)返返回一個(gè)個(gè)表中的的行數(shù)COUNT函函數(shù)有三三中格式式:COUNT(*)COUNT(expr)COUNT(DISTINCTexpr)COUNT(*)返返回表中中滿(mǎn)足SELECT 語(yǔ)句句標(biāo)準(zhǔn)的的行數(shù),包括重重復(fù)行,包括有有空值列列的行。如果WHERE子子句包包括在SELECT 語(yǔ)句句中,COUNT(*)返返回滿(mǎn)足足 WHERE 子句句條件的的行數(shù)。COUNT(expr) 返回回在列中中的由expr指定的非非空值的的數(shù)。COUNT(DISTINCTexpr) 返回回在列中中的由expr指定的唯唯一的非非空

47、值的的數(shù)。注:expr為為列名組函數(shù)和和Null值值所有組函函數(shù)忽略略列中的的空值。在幻燈燈片的例例子中,平均值只只基于表表中的那那些COMMISSION_PCT列列的值有效效的行的的計(jì)算。平均值值計(jì)算是是用付給給所有雇雇員的總傭傭金除以以接受傭傭金的雇雇員數(shù)(4)。SELECTAVG(commission_pct)FROM employees;在組函數(shù)數(shù)中使用用NVL 函數(shù)數(shù)NVL函函數(shù)強(qiáng)強(qiáng)制組函函數(shù)包括括空值。在幻燈燈片的例例子中,平均值值被基于所所有表中中的行來(lái)來(lái)計(jì)算,不管COMMISSION_PCT列列是否為空空。平均均值的計(jì)計(jì)算是用用付給所所有雇員員的總傭傭金除以以公司的雇員員總數(shù)(

48、20)。SELECTAVG(NVL(commission_pct,0)FROM employees;創(chuàng)建數(shù)據(jù)據(jù)組:GROUPBY子子句語(yǔ)法法用GROUPBY子子句劃劃分表中中的行到到較小的的組中SELECTcolumn,group_function(column)FROMtableWHEREconditionGROUPBYgroup_by_expressionORDERBYcolumn;在語(yǔ)法中中,group_by_expression指定那些些用于將將行分組組的列,這些些列的值值作為行行分組的的依據(jù)。使用WHERE子子句,你你可以在在劃分行行成組以以前過(guò)濾濾行。在 GROUP BY 子句句中

49、必須須包含列列。在 GROUP BY 子句句中你不不能用列列別名。默認(rèn)情況況下,行行以包含含在GROUPBY列列表中的的字段的的升序排排序。你你可以用用 ORDER BY 子句句覆蓋這這個(gè)默認(rèn)認(rèn)值。如果在SELECT 子句句中包含含了組函函數(shù),就就不能選選擇單獨(dú)獨(dú)的結(jié)果果,除非非單獨(dú)的的列出現(xiàn)現(xiàn)在GROUPBY子子句中。如果你你未能在在 GROUP BY 子句句中包含含一個(gè)字字段列表表,你會(huì)會(huì)收到一一個(gè)錯(cuò)誤誤信息。約束分組組結(jié)果: HAVING子子句用HAVING 子句句約束分分組:1.行被被分組2.應(yīng)用用組函數(shù)數(shù)3.匹配配HAVING 子句句的組被被顯示SELECTcolumn,group_

50、functionFROMtableWHEREconditionGROUPBYgroup_by_expressionHAVINGgroup_conditionORDERBYcolumn;使用HAVING子子句SELECTdepartment_id,MAX(salary)FROM employeesGROUPBYdepartment_idHAVINGMAX(salary)10000;嵌套組函函數(shù)顯示最大大平均薪薪水SELECTMAX(AVG(salary)FROM employeesGROUPBYdepartment_id;創(chuàng)建和管管理表目標(biāo)完成本課課后,您您應(yīng)當(dāng)當(dāng)能夠執(zhí)執(zhí)行下列列操作:描述主主要

51、數(shù)據(jù)據(jù)庫(kù)對(duì)象象創(chuàng)建表表描述列列定義時(shí)時(shí)可用的的數(shù)據(jù)類(lèi)類(lèi)型改變表表的定義義刪除、改名和和截?cái)啾肀頂?shù)據(jù)庫(kù)對(duì)對(duì)象表基基本存儲(chǔ)儲(chǔ)單元, 由行行和列組組成視圖邏邏輯地從從一個(gè)或或多個(gè)表表中表示示數(shù)據(jù)子子集序列數(shù)數(shù)字值發(fā)發(fā)生器索引改改善一些些查詢(xún)的的性能同義詞給給對(duì)象可可選擇的的名字命名規(guī)則則表命名和和列命名名:必須以以字母開(kāi)開(kāi)始必須是是130個(gè)個(gè)字符長(zhǎng)長(zhǎng)度只能包包含AZ,az,09, _, $, 和#同一個(gè)個(gè)用戶(hù)所所擁有的的對(duì)象之之間不能能重名不能用用Oracle 服務(wù)務(wù)器的保保留字注:名字字是大小小寫(xiě)不敏敏感的,例如, EMPLOYEES與與eMPloyees或或eMpLOYEES作作為同同一個(gè)名名字

52、來(lái)處處理。CREATETABLE語(yǔ)句用戶(hù)必必須有:CREATETABLE權(quán)限一個(gè)存存儲(chǔ)區(qū)域域CREATETABLEschema.table(columndatatypeDEFAULTexpr,.);必須指指定:表名列名、列數(shù)據(jù)據(jù)類(lèi)型和和列的大大小schema與所有者者的名字字一樣table表的名字字DEFAULTexpr指定默認(rèn)認(rèn)值column列的名字字datatype列的數(shù)據(jù)據(jù)類(lèi)型和和長(zhǎng)度引用另一一個(gè)用戶(hù)戶(hù)的表表屬于于另一個(gè)個(gè)用戶(hù),不在該該用戶(hù)的的方案中中在那些些表名字字的前面面使用所所有者的的名字作作為前綴如果一個(gè)個(gè)表不屬屬于本用用戶(hù),那那么,其其所有者者的名字字必須放在在表名的的前面SE

53、LECT*FROM user_b.employees;創(chuàng)建表創(chuàng)建表表CREATETABLEdept(deptnoNUMBER(2),dnameVARCHAR2(14),locVARCHAR2(13);確認(rèn)表的的創(chuàng)建DESCRIBEdeptOracle數(shù)數(shù)據(jù)庫(kù)庫(kù)中的表表用戶(hù)表表:由用戶(hù)戶(hù)創(chuàng)建和和維護(hù)的的表的集集合包含用用戶(hù)信息息數(shù)據(jù)字字典:由Oracle服服務(wù)器創(chuàng)創(chuàng)建和維維護(hù)的表表的集合合包含數(shù)數(shù)據(jù)庫(kù)信信息有四種數(shù)數(shù)據(jù)字典典視圖,每一種種有一個(gè)個(gè)特定的的前綴來(lái)來(lái)反映其其不同的目的的。USER_這這些視視圖包含含關(guān)于用用戶(hù)所擁?yè)碛械膶?duì)對(duì)象的信信息。ALL_這這些視圖圖包含所所有用戶(hù)戶(hù)可訪問(wèn)問(wèn)的表(

54、對(duì)象象表和相相關(guān)的表表)的的信息。DBA_這這些視視圖是受受限制的的視圖,它們只只能被分分配有DBA 角色色的用戶(hù)戶(hù)所訪問(wèn)。V$這這些視圖圖是動(dòng)態(tài)態(tài)執(zhí)行的的視圖,包含數(shù)數(shù)據(jù)庫(kù)服服務(wù)器的的性能、存儲(chǔ)器器和鎖的信信息。查詢(xún)數(shù)據(jù)據(jù)字典查看本本用戶(hù)所所擁有的的表的名名稱(chēng)SELECTtable_nameFROM user_tables ;查看本本用戶(hù)所所擁有的的不同的的對(duì)象類(lèi)類(lèi)型SELECTDISTINCTobject_typeFROM user_objects;查看本本用戶(hù)所所擁有的的表、視視圖、同同義詞和和序列SELECT*FROM user_catalog;數(shù)據(jù)類(lèi)型型數(shù)據(jù)類(lèi)型型說(shuō)說(shuō)明明VARCHA

55、R2(size)可可變長(zhǎng)度度的字符符數(shù)據(jù)CHAR(size)固固定長(zhǎng)長(zhǎng)度的字字符數(shù)據(jù)據(jù)NUMBER(p,s)可變長(zhǎng)度度的數(shù)字字?jǐn)?shù)據(jù)DATE日日期和和時(shí)間值值LONG最最大2G的可可變長(zhǎng)度度字符數(shù)數(shù)據(jù)CLOB最最大4G的字字符數(shù)據(jù)據(jù)RAWand LONGRAW 原始始二進(jìn)制制數(shù)據(jù)BLOB最最大4G的二二進(jìn)制數(shù)數(shù)據(jù)BFILE最最大大4G的的,存儲(chǔ)儲(chǔ)在外部部文件中中的二進(jìn)制數(shù)據(jù)據(jù)ROWID一一個(gè)64進(jìn)制的的數(shù)制系系統(tǒng),表表示表中中一行的唯唯一地址址用子查詢(xún)?cè)儎?chuàng)建表表該方法既既可以創(chuàng)創(chuàng)建表還還可以將將從子查查詢(xún)返回回的行插插入新創(chuàng)創(chuàng)建的表中。CREATETABLEdept80 ASSELECTempl

56、oyee_id, last_name,salary*12ANNSAL, hire_dateFROM employeesWHEREdepartment_id =80;原則 被創(chuàng)建的的表要帶帶指定的的列名,并且由由SELECT語(yǔ)句返返回的行行被插入入到新表表中。字段的定定義只能能包括列列名和默默認(rèn)值。如果給出出了指定定的列,列的數(shù)數(shù)目必須須等于子子查詢(xún)的的SELECT列表的的列數(shù)目目。如果沒(méi)有有給出了了指定的的列,表表的列名名應(yīng)和子子查詢(xún)中中的列名名是相同同的。完整性規(guī)規(guī)則不會(huì)會(huì)被傳遞遞到新表表中,僅僅列的數(shù)數(shù)據(jù)類(lèi)型型被定義義。ALTERTABLE語(yǔ)句用ALTERTABLE語(yǔ)句來(lái):添加一一個(gè)新列列

57、修改一一個(gè)已存存在的列列為新列列定義一一個(gè)默認(rèn)認(rèn)值刪除一一個(gè)列添加列ALTERTABLEtableADD(columndatatypeDEFAULTexpr,columndatatype.);修改列ALTERTABLEtableMODIFY(columndatatypeDEFAULTexpr,columndatatype.);刪除列ALTERTABLEtableDROP(column);添加新列列用ADD字句添加加列ALTERTABLEdept80ADD (job_idVARCHAR2(9);添加新列列的原則則你可以添添加或修修改列。你不能指指定新添添加的列列的位置置,新列列將成為為最后一一列

58、。修改列可以改改變列的的數(shù)據(jù)類(lèi)類(lèi)型、大大小和默默認(rèn)值A(chǔ)LTERTABLEdept80MODIFY(last_nameVARCHAR2(30);對(duì)默認(rèn)認(rèn)值的改改變只影影響后來(lái)來(lái)插入表表中的數(shù)數(shù)據(jù)原則 你可以增增加寬度度或一個(gè)個(gè)數(shù)字列列的精度度。你可以增增加數(shù)字字列或字字符列的的寬度。你可以減減少一個(gè)個(gè)列的寬寬度,但但僅在列列中只包包含空值值或表中中沒(méi)有行行時(shí)。你可以改改變數(shù)據(jù)據(jù)類(lèi)型,但僅在在列中只只包含空空值時(shí)。你可以轉(zhuǎn)轉(zhuǎn)換一個(gè)個(gè)CHAR列到到VARCHAR2數(shù)數(shù)據(jù)類(lèi)型型或轉(zhuǎn)換換一個(gè)VARCHAR2列到到 CHAR數(shù)數(shù)據(jù)類(lèi)類(lèi)型僅當(dāng)當(dāng)列中只只包含空空值時(shí),或者你你不改變變列的大大小時(shí)。對(duì)默認(rèn)值值的

59、改變變僅影響響以后插插入的列列。刪除列用DROP COLUMN子句從表表中刪除除列ALTERTABLEdept80DROP COLUMNjob_id;原則 列可以有有也可以以沒(méi)有數(shù)數(shù)據(jù)。用ALTERTABLE語(yǔ)語(yǔ)句,一一次只能能有一列列被刪除除。表被修改改后必須須至少保保留一列列。一旦一列列被刪除除,它不不能再恢恢復(fù)。刪除表在表中中的所有有數(shù)據(jù)和和結(jié)構(gòu)都都被刪除除任何未未決的事事務(wù)都被被提交所有的的索引被被刪除你不能能回退DROP TABLE語(yǔ)句DROP TABLE dept80;DROP TABLE語(yǔ)句刪刪除Oracle表定定義,當(dāng)當(dāng)你刪除除一個(gè)表表時(shí),數(shù)據(jù)庫(kù)丟丟失表中中所有的的數(shù)據(jù),并且所

60、所有與其其相關(guān)的的索引也也被刪除。改變一個(gè)個(gè)對(duì)象的的名字執(zhí)行RENAME語(yǔ)句,改改變一個(gè)個(gè)表、視視圖、序序列或同義詞RENAMEdeptTOdetail_dept;注:你必必須是對(duì)對(duì)象的所所有者截?cái)啾鞹RUNCATETABLE語(yǔ)句:刪除表表中所有有的行釋放該該表所使使用的存存儲(chǔ)空間間TRUNCATETABLEdetail_dept;不能回回退用TRUNCATE刪除的行行作為選選擇,可可以用DELETE語(yǔ)句刪除除行子查詢(xún)&操縱數(shù)數(shù)據(jù)目標(biāo)完成本課課后,您您應(yīng)當(dāng)當(dāng)能夠執(zhí)執(zhí)行下列列操作:描述子子查詢(xún)能能夠解決決的問(wèn)題題類(lèi)型定義子子查詢(xún)列出子子查詢(xún)的的類(lèi)型寫(xiě)單行行和多行行子查詢(xún)?cè)兠枋雒棵總€(gè)DML語(yǔ)語(yǔ)句插

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論