版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
SQL語言基礎(chǔ)主要內(nèi)容基本的SELECT語句約束和排序數(shù)據(jù)單行函數(shù)多表顯示數(shù)據(jù)、組函數(shù)合計數(shù)據(jù)創(chuàng)建和管理表子查詢&操縱數(shù)據(jù)內(nèi)置約束創(chuàng)建視圖其他數(shù)據(jù)庫對象基本的select語句目標(biāo)完成本課后,您應(yīng)當(dāng)能夠:?列出SQLSELECT語句的功能?執(zhí)行基本的SELECT語句SQLSELECT語句的功能列選擇:你能夠使用SELECT語句的列選擇功能選擇表中的列,這些列是你想要用查詢返回的。當(dāng)你查詢時,你能夠選擇你查詢的表中指定的列。行選擇:你能夠使用SELECT語句的行選擇功能選擇表中的行,這些行是你想要用查詢返回的。你能夠使用不同的標(biāo)準(zhǔn)限制你看見的行。連接:你能夠使用SELECT語句的連接功能來集合數(shù)據(jù),這些數(shù)據(jù)被存儲在不同的表中,在它們之間可以創(chuàng)建連接。在后面的課程中你將學(xué)到更多關(guān)于連接的內(nèi)容。
基本SELECT語句SELECT*|{[DISTINCT]
column|expression[alias],...}FROMtable;
?SELECT確定哪些列?FROM確定哪張表選擇所有列與指定列SELECT*FROMdepartments;用跟在SELECT關(guān)鍵字后面的星號(*),你能夠顯示表中數(shù)據(jù)的所有列。
SELECTdepartment_id,location_idFROMdepartments;你能夠用SELECT語句來顯示表的指定列,指定列名之間用逗號分隔。寫SQL語句?SQL語句對大小寫不敏感?SQL語句可以寫成一行或多行?關(guān)鍵字不能簡寫或分開折行?子句通常放在不同的行?縮進(jìn)用于增強(qiáng)可讀性算術(shù)表達(dá)式
用算術(shù)運(yùn)算符創(chuàng)建數(shù)字和日期數(shù)據(jù)的表達(dá)式操作說明+加-減*乘/除
使用算術(shù)運(yùn)算符SELECTlast_name,salary,salary+300FROMemployees;優(yōu)先級:?乘法和除法比加法和減法的優(yōu)先級高?相同優(yōu)先級的運(yùn)算符從左到右計算?圓括號用于強(qiáng)制優(yōu)先計算,并且使語句更清晰SELECTlast_name,salary,12*salary+100FROMemployees;空值?null是一個個未分配的的、未知的的,或不適適用的值?null不是0,,也不是空空格?包含空值值的算術(shù)表表達(dá)式計算算結(jié)果為空空SELECTlast_name,job_id,salary,commission_pctFROMemployees;定義列別名名列別名:?改變列標(biāo)標(biāo)題的名字字?可用于計計算結(jié)果?緊跟在列列名后面––在列名和和別名之間間可以有選選項AS關(guān)關(guān)鍵字?如果別名名中包含有有空格、或或者特殊字字符、或者者大小寫敏敏感,要求求用雙引號號SELECTlast_nameASname,commission_pctcommFROMemployees;連字運(yùn)算符符連字運(yùn)算符符:?連接列或或者字符串串到其它的的列?用兩個豎豎線表示(||)?構(gòu)造一個個字符表達(dá)達(dá)式的合成成列SELECTfirst_name||last_nameASEmployeesFROMemployees;文字字符串串?文字字符符串是包含含在SELECT列表中的一一個字符串串,一個數(shù)數(shù)字或者一一個日期?日期和字字符的文字字字符串值值必須用單單引號括起起來?每個文字字字符串在在每行輸出出一次SELECTlast_name||'isa'||job_idAS"EmployeeDetails””FROMemployees;約束和排序序數(shù)據(jù)目標(biāo)完成本課后后,您應(yīng)應(yīng)當(dāng)能夠執(zhí)執(zhí)行下列操操作:?用一個查查詢限制返返回的行?用一個查查詢分類返返回的行限制選擇的的行用WHERE子句限制返返回的行SELECT*|{[DISTINCT]column|expression[alias],...}FROMtable[WHEREcondition(s)];WHERE子句跟著著FROM子句WHERE限制查查詢滿足條條件的行condition由列名、表表達(dá)式、常常數(shù)和比較較操作組成成WHERE子句能夠夠比較列值值、文字值值、算術(shù)表表達(dá)式或者者函數(shù),WHERE子句句由三個元元素組成::列名,比比較條件件,列列名、常量量或值列表表。使用WHERE子句SELECTemployee_id,last_name,job_id,department_id]FROMemployeesWHEREdepartment_id=90;字符串和日日期?字符串和和日期的值值放在單引引號中?字符值區(qū)區(qū)分大小寫寫,日期值值是格式敏敏感的?日期的默默認(rèn)格式是是DD-MON-RR.SELECTlast_name,job_id,department_idFROMemployeesWHERElast_name='Whalen';比較條件運(yùn)算含含義=等于>大于>=大于等于<小于<=小于等于<>不等于比較條件被被用于一個個表達(dá)式與與一個值或或與另一個個表達(dá)式的的比較。...WHEREhire_date='01-JAN-95'...WHEREsalary>=6000...WHERElast_name='Smith'其它比較條條件操作含含義BETWEEN...AND...在兩個值之之間(包含含)IN(set)匹配一個任任意值列表表LIKE匹配一個字字符模板ISNULL是一個空值值使用BETWEEN條件:SELECTlast_name,salaryFROMemployeesWHEREsalaryBETWEEN2500AND3500;使用IN條條件SELECTemployee_id,last_name,salary,manager_idFROMemployeesWHEREmanager_idIN(100,101,201);其它比較條條件使用LIKE條件?使用LIKE條件執(zhí)行有有效搜索串串值的通配配符搜索?搜索條件件既可以包包含文字也也可以包含含數(shù)字:–%表示任意順順序的零個個或多個字字符–_表示一個字字符SELECTfirst_nameFROMemployeesWHEREfirst_nameLIKE'S%';使用NULL條件?用ISNULL操作來測測試空值SELECTlast_name,manager_idFROMemployeesWHEREmanager_idISNULL;NULL條條件,包括括ISNULL條條件和ISNOTNULL條件。。邏輯條件運(yùn)算含含義AND如果兩個組組成部分的的條件都為為真,返回回TRUEOR如果兩個組組成部分中中的任一個個條件為真真,返回TRUENOT如果跟隨的的條件為假假,返回TRUE可以在WHERE子子句中用AND和OR運(yùn)算符符使用多個個條件。使用AND操作:AND要要求兩個條條件同時為為真SELECTemployee_id,last_name,job_id,salaryFROMemployeesWHEREsalary>=10000ANDjob_idLIKE'%MAN%';邏輯條件使用OR操作:OR操作要求兩兩者之一為為真即可SELECTemployee_id,last_name,job_id,salaryFROMemployeesWHEREsalary>=10000ORjob_idLIKE'%MAN%';使用NOT操作SELECTlast_name,job_idFROMemployeesWHEREjob_idNOTIN('IT_PROG','ST_CLERK','SA_REP');注:NOT運(yùn)算符也也可以用于于另一個SQL運(yùn)算算符,例如如,BETWEEN、LIKE、和NULL。。優(yōu)先規(guī)規(guī)則求值順順序1算術(shù)運(yùn)運(yùn)算2連字操操作3比較操操作4IS[NOT]NULL,LIKE,[NOT]IN5[NOT]BETWEEN6NOT邏輯條條件7AND邏輯條條件8OR邏輯條條件使用圓圓括號號改變變優(yōu)先先規(guī)則則ORDERBY子句?用ORDERBY子句排排序行行–ASC:升升序排排序,,默認(rèn)認(rèn)–DESC:降降序序排序序?ORDERBY子句在在SELECT語句的的最后后SELECTlast_name,job_dateFROMemployeesORDERBYhire_date;語法:SELECTexprFROMtable[WHEREcondition(s)][ORDERBY{column,expr}[ASC|DESC]];單行函函數(shù)目標(biāo)完成本課課后,您您應(yīng)當(dāng)能能夠執(zhí)行行下列操操作:?描述在在SQL中可可用的函函數(shù)的變變量類型型?在SELECT語句中使使用字符符,數(shù)字字和日期期函數(shù)?描述轉(zhuǎn)轉(zhuǎn)換函數(shù)數(shù)的使用用SQL函數(shù)函數(shù)是SQL的的一個非非常強(qiáng)有有力的特特性,函函數(shù)能夠夠用于下下面的目目的:執(zhí)行數(shù)據(jù)據(jù)計算修改單個個數(shù)據(jù)項項操縱輸出出進(jìn)行行行分組格式化顯顯示的日日期和數(shù)數(shù)字轉(zhuǎn)換列數(shù)數(shù)據(jù)類型型SQL函函數(shù)有輸輸入?yún)?shù)數(shù),并且且總有一一個返回回值。注:在本本課中講講述的大大多數(shù)函函數(shù)是針針對SQL的Oracle版版的。SQL函數(shù)(續(xù))有兩種截截然不同同的函數(shù)數(shù):單行函數(shù)數(shù)多行函數(shù)數(shù)單行函數(shù)數(shù)這些函數(shù)數(shù)僅對單單個行進(jìn)進(jìn)行運(yùn)算算,并且且每行返返回一個個結(jié)果。。有不同同類型的的單行函函數(shù),本本課下面面的函數(shù)數(shù)類型::字符數(shù)字日期轉(zhuǎn)換多行函數(shù)數(shù)這些函數(shù)數(shù)能夠操操縱成組組的行,,每個行行組給出出一個結(jié)結(jié)果,這這些函數(shù)數(shù)也被稱稱為組函函數(shù)。多多行函數(shù)數(shù)在后面面的課程程中介紹紹。單行函數(shù)數(shù)單行函數(shù)數(shù):?操縱數(shù)數(shù)據(jù)項?接受多多個參數(shù)數(shù)并返回回一個值值?作用于于每一個個返回行行?每行返返回一個個結(jié)果?可以修修改數(shù)據(jù)據(jù)類型?可以嵌嵌套?接受多多個參數(shù)數(shù),參數(shù)數(shù)可以是是一個列列或者一一個表達(dá)達(dá)式單行函數(shù)數(shù)(續(xù)))單行函數(shù)數(shù)的特性性包括::作用于查查詢中返返回的每每一行每行返回回一個結(jié)結(jié)果可能返回回一個與與參數(shù)不不同類型型的數(shù)據(jù)據(jù)值可能需要要一個或或多個參參數(shù)能夠用在在SELECT、WHERE和ORDERBY子句中中,可以以嵌套。。function_name[(arg1,arg2,...)]function_name是函數(shù)的的名字。。arg1,arg2是由函數(shù)數(shù)使用的的任意參參數(shù),可可以由一一個列名名或者一一個表達(dá)達(dá)式提供供。單行函數(shù)數(shù)(續(xù)))本課包括括下面的的單行函函數(shù):字符函數(shù)數(shù):接受受字符輸輸入,可可以返回回字符或或者數(shù)字字值數(shù)字函數(shù)數(shù):接受受數(shù)字輸輸入,返返回數(shù)字字值日期函數(shù)數(shù):對DATE數(shù)據(jù)類類型的值值進(jìn)行運(yùn)運(yùn)算(除了MONTHS_BETWEEN函數(shù)數(shù)返回一一個數(shù)字字,所有有日期函函數(shù)都返返回一個個DATE數(shù)據(jù)據(jù)類型的的值。)轉(zhuǎn)換函數(shù)數(shù):從一一個數(shù)據(jù)據(jù)類型到到另一個個數(shù)據(jù)類類型轉(zhuǎn)換換一個值值通用函數(shù)數(shù):NVL、、NVL2、NULLIF、、COALSECE、CASE、DECODE字符函數(shù)數(shù)單行字符符函數(shù)接接受字符符數(shù)據(jù)作作為輸入入,既可可以返回回字符值值也可以返回回數(shù)字值值。字符符函數(shù)可可以被分分為下面面兩種::大小寫處處理函數(shù)數(shù)字符處理理函數(shù)大小寫處處理函數(shù)數(shù)如下::LOWER(column|expression)轉(zhuǎn)轉(zhuǎn)換字字符值為為小寫UPPER(column|expression)轉(zhuǎn)轉(zhuǎn)換字字符值為為大寫INITCAP(column|expression)轉(zhuǎn)換換每個單單詞的首首字母值值為大寫寫,所有有其它值為為小寫字符處理理函數(shù)如如下:CONCAT(column1|expression1,column2|expression2)連接第一一個字符符值到第第二個字字符值;;等價于于連接運(yùn)運(yùn)算符(||)SUBSTR(column|expression,m[,n])從字符值值中返回回指定的的字符,,開始位位置在m,n字符長度度(如如果m是負(fù)數(shù),,計數(shù)從從字符值值末尾開開始;如如果n被忽略,,返回到到串結(jié)束束的所有有字符)。LENGTH(column|expression)返回回表達(dá)式式中的字字符數(shù)INSTR(column|expression,‘‘string’,[,m],[n])返回一個個命名串串的數(shù)字字位置。。隨意地地,你可可以提供供一個位位置m作為查找找的開始始,在字字符串中中第n次發(fā)現(xiàn)的的位置。。m和n的默認(rèn)值值是1,,意味著著在起始始開始查查找,并并且報告告第一個個發(fā)現(xiàn)的的位置。。LPAD(column|expression,n,'string')RPAD(column|expression,n,'string')填充字符符值左、、右調(diào)節(jié)節(jié)到n字字符位置置的總寬寬度TRIM(leading|trailing|both,trim_characterFROMtrim_source)使你能夠夠從一個個字符串串修整頭頭或尾字字符(或或兩者)。如果果trim_character或trim_source是字符文文字,你你必須放放在單引引號中。。REPLACE(text,search_string,replacement_string)從字符串串查找一一個文本本表達(dá)式式,如果果找到,,用指定定的值串串代替它它字符函數(shù)數(shù)(續(xù)))大小寫處處理函數(shù)數(shù)這些函數(shù)數(shù)轉(zhuǎn)換字字符串的的大小寫寫函數(shù)結(jié)結(jié)果果LOWER('SQLCourse')sqlcourseUPPER('SQLCourse')SQLCOURSEINITCAP('SQLCourse')SqlCourseLOWER:轉(zhuǎn)轉(zhuǎn)換大小小寫混合合的字符符串為小小寫字符符串UPPER:轉(zhuǎn)轉(zhuǎn)換大小小寫混合合的字符符串為大大寫字符符串INITCAP:將每每個單詞詞的首字字母轉(zhuǎn)換換為大寫寫,其他他字母為為小寫SELECT‘‘Thejobidfor’||UPPER(last_name)||‘is’’||LOWER(job_id)AS"EMPLOYEEDETAILS"FROMemployees;字符處理理函數(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('H'FROM'HelloWorld')elloWorld數(shù)字函數(shù)數(shù)ROUND:四舍五入入指定小小數(shù)的值值ROUND(45.926,2)45.93TRUNC(45.926,2)45.92MOD(1600,300)100ROUND(column|expression,n)四舍五入入列、表表達(dá)式或或值為n位小數(shù)位位,或者者,如果果n被忽略,,無小數(shù)數(shù)位。(如果n是負(fù)值,,小數(shù)點(diǎn)點(diǎn)左邊的的數(shù)被四四舍五入入)TRUNC(column|expression,n)截斷斷列列、、表表達(dá)達(dá)式式或或值值到到n位小小數(shù)數(shù),,或或者者,,如如果果n被忽忽略略,,那那么么n默認(rèn)認(rèn)為為0MOD(m,n)返返回回m除以以n的余余數(shù)數(shù)使用用ROUND函數(shù)數(shù)SELECTROUND(45.923,2),ROUND(45.923,0),ROUND(45.923,-1)FROMDUAL;使用用TRUNC函數(shù)數(shù)SELECTTRUNC(45.923,2),TRUNC(45.923),TRUNC(45.923,-2)FROMDUAL;使用用MOD函數(shù)數(shù)SELECTlast_name,salary,MOD(salary,5000)FROMemployeesWHEREjob_id='SA_REP';注::MOD函函數(shù)數(shù)經(jīng)經(jīng)常常用用于于確確定定一一個個值值是是奇奇數(shù)數(shù)還還是是偶偶數(shù)數(shù)日期期的的使使用用?Oracle數(shù)數(shù)據(jù)據(jù)庫庫用用內(nèi)內(nèi)部部數(shù)數(shù)字字格格式式存存儲儲日日期期::世世紀(jì)紀(jì),,年年,,月月,,日日,,小小時時,,分分鐘鐘和和秒秒?默默認(rèn)認(rèn)日日期期顯顯示示格格式式是是DD-MON-RR.SELECTlast_name,hire_dateFROMemployeesWHERElast_namelike''G%';';SYSDATE函數(shù)數(shù)返返回回::?Date?TimeSYSDATE是是一一個個日日期期函函數(shù)數(shù),,它它返返回回當(dāng)當(dāng)前前數(shù)數(shù)據(jù)據(jù)庫庫服服務(wù)務(wù)器器的的日日期期和和時時間間。。SELECTSYSDATEFROMDUAL;用日日期期計計算算?從從日日期期加加或或者者減減一一個個數(shù)數(shù),,結(jié)結(jié)果果是是一一個個日日期期值值?兩兩個個日日期期相相減減,,得得到到兩兩個個日日期期之之間間的的天天數(shù)數(shù)?用用小小時時數(shù)數(shù)除除以以24,,可可以以加加小小時時到到日日期期上上既然然數(shù)數(shù)據(jù)據(jù)庫庫以以數(shù)數(shù)字字方方式式存存儲儲日日期期,,你你就就可可以以用用算算術(shù)術(shù)運(yùn)運(yùn)算算符符進(jìn)進(jìn)行行計計算算,,例例如如,,加加或或減減。。你你可可以以加加或或減減數(shù)數(shù)字字常常數(shù)數(shù)以以及及日日期期。。你可可以以進(jìn)進(jìn)行行下下面面的的運(yùn)運(yùn)算算::運(yùn)算算結(jié)結(jié)果果說說明明date+number日日期期加加一一個個天天數(shù)數(shù)到到一一個個日日期期上上date-number日日期期從從一一個個日日期期上上減減一一個個天天數(shù)數(shù)date-date天天數(shù)數(shù)用用一一個個日日期期減減另另一一個個日日期期date+number/24日日期期加加一一個個小小時時數(shù)數(shù)到到一一個個日日期期上上日期期函函數(shù)數(shù)函數(shù)數(shù)說說明明MONTHS_BETWEEN兩個個日日期期之之間間的的月月數(shù)數(shù)ADD_MONTHS加日日歷歷月月到到日日期期NEXT_DAY下個個星星期期幾幾是是幾幾號號LAST_DAY指定定月月的的最最后后一一天天ROUND四舍舍五五入入日日期期TRUNC截斷斷日日期期日期期函函數(shù)數(shù)((續(xù)續(xù)))MONTHS_BETWEEN(date1,date2)::計計算算date1和date2之間間的的月月數(shù)數(shù),,其其結(jié)結(jié)果果可可以以是是正正的的也也可可以以是是負(fù)負(fù)的的。。如如果果date1大于于date2,結(jié)結(jié)果果是是正正的的,,反反之之,,結(jié)結(jié)果果是是負(fù)負(fù)的的。。結(jié)結(jié)果果的的小小數(shù)數(shù)部部分分表表示示月月的的一一部部分分。。ADD_MONTHS(date,n)::添添加加n個日日歷歷月月到到date。n的值值必必須須是是整整數(shù)數(shù),,但但可可以以是是負(fù)負(fù)的的。。NEXT_DAY(date,‘char’)::計計算算在在date之后后的的下下一一個個周周(‘‘char’)指指定定天天的的日日期期。。char的值值可可能能是是一一個個表表示示一一天天的的數(shù)數(shù)或或者者是是一一個個字字符符串串。。LAST_DAY(date)::計計算算包包含含date的月月的的最最后后一一天天的的日日期期ROUND(date[,‘‘fmt’’])::返返回回用用格格式式化化模模式式fmt四舍舍五五入入到到指指定定單單位位的的date,如如果果格格式式模模式式fmt被忽忽略略,,date被四四舍舍五五入入到到最最近近的的天天。。TRUNC(date[,‘‘fmt’’])::返返回回用用格格式式化化模模式式fmt截斷斷到到指指定定單單位位的的帶帶天天的的時時間間部部分分的的date,如如果果格格式式模模式式fmt被忽忽略略,,date被截截斷斷到到最最近近的的天天。。使用用日日期期函函數(shù)數(shù)?MONTHS_BETWEEN(‘‘01-SEP-95’’,‘‘11-JAN-94’’)19.6774194?ADD_MONTHS(‘‘11-JAN-94’’,6)'11-JUL-94'?NEXT_DAY(‘‘01-SEP-95’’,‘‘2’’)下個個星星期期五五是是幾幾號號'08-SEP-95'?LAST_DAY('01-FEB-95')'28-FEB-95'使用用日日期期函函數(shù)數(shù)((續(xù)續(xù)))假定定SYSDATE='25-JUL-95':?ROUND(SYSDATE,'MONTH')01-AUG-95?ROUND(SYSDATE,'YEAR')01-JAN-96?TRUNC(SYSDATE,'MONTH')01-JUL-95?TRUNC(SYSDATE,'YEAR')01-JAN-95?TRUNC(TO_DATE('25-JUL-95'),'YEAR')01-JAN-95轉(zhuǎn)換函數(shù)數(shù)數(shù)據(jù)類型型轉(zhuǎn)換?隱式數(shù)數(shù)據(jù)類型型轉(zhuǎn)換?顯式數(shù)數(shù)據(jù)類型型轉(zhuǎn)換對于直接接賦值,,Oracle服務(wù)務(wù)器能夠夠自動地地進(jìn)行下下面的轉(zhuǎn)換::從到到VARCHAR2orCHARNUMBERVARCHAR2orCHARDATENUMBERVARCHAR2DATEVARCHAR2對于表達(dá)達(dá)式賦值值,Oracle服服務(wù)器能能自動地地進(jìn)行下下面的轉(zhuǎn)轉(zhuǎn)換:從VARCHAR2orCHAR到DATE從VARCHAR2orCHAR到NUMBER轉(zhuǎn)換函數(shù)數(shù)(續(xù)))顯式數(shù)據(jù)據(jù)類型轉(zhuǎn)轉(zhuǎn)換SQL提提供三三種函數(shù)數(shù)來從一一種數(shù)據(jù)據(jù)類型轉(zhuǎn)轉(zhuǎn)換值到到另一種種:TO_CHAR(number|date,[fmt],[nlsparams])轉(zhuǎn)換一個個數(shù)字或或日期值值為一個個VARCHAR2字字符串,,帶格式式化樣式fmt。數(shù)字轉(zhuǎn)換換:nlsparams參參數(shù)指定定下面的的字符,,它由數(shù)數(shù)字格式式化元素返返回:小數(shù)字符符99999.99前導(dǎo)009999本地貨幣幣符號L9999國際貨幣幣符號$9999如果忽略略nlsparams或其它它參數(shù),,該函數(shù)數(shù)在會話話中使用用默認(rèn)參參數(shù)值。。TO_CHAR(number|date,[fmt],[nlsparams])指定返回回的月和和日名字字及其縮縮寫的語語言。如如果忽略略該參數(shù)數(shù),該函數(shù)在在會話中中使用默默認(rèn)日期期語言。。TO_NUMBER(char,[fmt],[nlsparams])用由可選選格式化化樣式fmt指定的格格式轉(zhuǎn)換換包含數(shù)數(shù)字的字字符串為為一個數(shù)字字。Nlsparams參數(shù)數(shù)在該函函數(shù)中的的目的與與TO_CHAR函數(shù)用于于數(shù)字轉(zhuǎn)轉(zhuǎn)換的目目的相同同。TO_DATE(char,[fmt],[nlsparams])按照fmt指定的格格式轉(zhuǎn)換換表示日日期的字字符串為為日期值值。如果果忽略fmt,格式是是DD-MON-YY。Nlsparams參參數(shù)的目目的與TO_CHAR函數(shù)用用于日期期轉(zhuǎn)換時時的目的的相同。。對日期使使用TO_CHAR函數(shù)TO_CHAR(date,'format_model')格式模板板?必須加加單引號號,并且且區(qū)分大大小寫?能夠包包含任一一有效的的日期格格式元素素?有一個個fm元素用來來刪除填填補(bǔ)的空空,或者者前導(dǎo)零零?用一個個逗號與與日期值值分開SELECTemployee_id,TO_CHAR(hire_date,'MM/YY')Month_HiredFROMemployeesWHERElast_name='Higgins';日期格式式模板的的元素YYYY數(shù)字全寫寫年YEAR年的拼寫寫MM月的兩數(shù)數(shù)字值MONTH月的全名名DY周中天的的三字母母縮寫DAY周中天的的全名MON月的三字字母縮寫寫DD月的數(shù)字字天使用TO_NUMBER和TO_DATE函數(shù)?轉(zhuǎn)換字字符串到到數(shù)字,,用TO_NUMBER函數(shù)格式式化:TO_NUMBER(char[,'format_model'])?轉(zhuǎn)換字字符串到到日期,,用TO_DATE函數(shù)格式式化:TO_DATE(char[,'format_model'])Selectto_number(‘12345’)fromdual;Selectto_date(‘‘20000810’’,’yyyy-mm-dd’fromdual;通用函數(shù)數(shù)這些函數(shù)數(shù)可用于于任意數(shù)數(shù)據(jù)類型型,并且且適用于于空值?NVL(expr1,expr2)?NVL2(expr1,expr2,expr3)?NULLIF(expr1,expr2)?COALESCE(expr1,expr2,...,exprn)NVL轉(zhuǎn)轉(zhuǎn)換空空值為一一個實(shí)際際值NVL2如如果expr1非空,,NVL2返回回expr2;;如果expr1為空空,NVL2返回回expr3。。參數(shù)expr1可以以是任意意數(shù)據(jù)類類型NULLIF比比較兩兩個表達(dá)達(dá)式,如如果相等等返回空空;如果果不相等等,返回第第一個表表達(dá)式COALESCE返返回表達(dá)達(dá)式列表表中的第第一個非非空表達(dá)達(dá)式NVL函數(shù)轉(zhuǎn)換一個個空值到到一個實(shí)實(shí)際的值值?可用的的數(shù)據(jù)類類型可以以是日期期、字符符和數(shù)字字?數(shù)據(jù)類類型必須須匹配::–NVL(commission_pct,0)–NVL(hire_date,'01-JAN-97')–NVL(job_id,'NoJobYet')語法:NVL(expr1,expr2)在語法中中:expr1是包含空空值的源源值或者者表達(dá)式式expr2是用于轉(zhuǎn)轉(zhuǎn)換空值值的目的的值Selectnvl(‘‘1’,’notnull’fromdual;注:如果果expr1為為空則返返回expr2r的值值使用NVL2函數(shù)NVL2函數(shù)數(shù)檢查第第一個表表達(dá)式,,如果第第一個表表達(dá)式不不為空,,那么NVL2函數(shù)數(shù)返回第第二個表表達(dá)式;;如果第第一個表表達(dá)式為為空,那么么第三個個表達(dá)式式被返回回。expr2expr1非空空時時的的返返回回值值語法法NVL2(expr1,expr2,expr3)在語語法法中中::expr1是可可能能包包含含空空的的源源值值或或表表達(dá)達(dá)式式expr3expr1為空空時時的的返返回回值值SelectNVL2(‘‘1’’,’’notnull’’,’’null’’)fromdual;SelectNVL2(‘‘1’’,’’notnull’’,’’null’’)fromdual;使用用NULLIF函數(shù)數(shù)NULLIF函函數(shù)數(shù)比比較較兩兩個個表表達(dá)達(dá)式式,,如如果果相相等等,,函函數(shù)數(shù)返返回回空空,,如如果果不不相相等等,,函數(shù)數(shù)返返回回第第一一個個表表達(dá)達(dá)式式。。第第一一個個表表達(dá)達(dá)式式不不能能為為NULL。。語法法NULLIF(expr1,expr2)在語語法法中中::expr1是對對于于expr2的被被比比較較原原值值expr2是對對于于expr1的被被比比較較原原值值。。(如如果果它它不不等等于于expr1,expr1被返返回回)。。Selectnullif(‘‘a(chǎn)bc’’,’’abcd’’)fromdual;使用用COALESCE函數(shù)數(shù)?COALESCE函數(shù)數(shù)超超過過NVL函數(shù)數(shù)的的優(yōu)優(yōu)點(diǎn)點(diǎn)是是COALESCE函數(shù)數(shù)能夠夠接接受受多多個個交交替替的的值值。。?如如果果第第一一個個表表達(dá)達(dá)式式非非空空,,它它返返回回該該表表達(dá)達(dá)式式;;否否則則,,它它做做一一個個保留留表表達(dá)達(dá)式式的的結(jié)結(jié)合合。。COALESCE函函數(shù)數(shù)返返回回列列表表中中的的第第一一個個非非空空表表達(dá)達(dá)式式。。語法法COALESCE(expr1,expr2,...exprn)在語語法法中中::expr1如果果它它非非空空,,返返回回該該表表達(dá)達(dá)式式expr2如果果第第一一個個表表達(dá)達(dá)式式為為空空并并且且該該表表達(dá)達(dá)式式非非空空,,返返回回該該表表達(dá)達(dá)式式exprn如果果前前面面的的表表達(dá)達(dá)式式都都為為空空,,返返回回該該表表達(dá)達(dá)式式Selectcoalesce(‘‘',‘‘','bca')fromdual;條件件表表達(dá)達(dá)式式在SQL語語句句中中提提供供IF-THEN-ELSE邏邏輯輯的的使使用用。。兩種種用用法法::–CASE表達(dá)達(dá)式式–DECODE函數(shù)數(shù)CASE表達(dá)達(dá)式式CASEexprWHENcomparison_expr1THENreturn_expr1WHENcomparison_expr2THENreturn_expr2WHENcomparison_exprnTHENreturn_exprnELSEelse_expr]ENDDECODE函數(shù)數(shù)DECODE(col|expression,search1,result1[,search2,result2,...,][,default])DECODE函函數(shù)數(shù)在在比比較較表表達(dá)達(dá)式式(expression)和每每個個查查找找(search)值后后解解碼碼表表達(dá)達(dá)式式,,如如果果表表達(dá)達(dá)式式與與查查找找相相同同,,返返回結(jié)結(jié)果果。。如果果省省略略默默認(rèn)認(rèn)值值,,當(dāng)當(dāng)沒沒有有查查找找值值與與表表達(dá)達(dá)式式相相匹匹配配時時返返回回一個個空空值值。。多表表顯顯示示數(shù)數(shù)據(jù)據(jù)&組組函函數(shù)數(shù)合合計計數(shù)數(shù)據(jù)據(jù)目標(biāo)標(biāo)完成成本本課課后后,您您應(yīng)應(yīng)當(dāng)當(dāng)能能夠夠執(zhí)執(zhí)行行下下列列操操作作::?寫寫SELECT語語句句使使用用等等值值和和非非等等值值連連接接從多多個個表表中中訪訪問問數(shù)數(shù)據(jù)據(jù)?使使用用外外連連接接查查看看不不滿滿足足連連接接條條件件的的數(shù)數(shù)據(jù)據(jù)?識識別別可可用用的的組組函函數(shù)數(shù)?描描述述組組函函數(shù)數(shù)的的使使用用?用用GROUPBY子子句句分分組組數(shù)數(shù)據(jù)據(jù)?用用HAVING子子句句包包含含或或排排除除分分組組的的行行笛卡卡爾爾乘乘積積?笛卡爾爾乘積的的形成,,當(dāng):–一個連連接條件件被遺漏漏時–一個連連接條件件不正確確時–在第一一個表中中的所有有行被連連接到第第二個表表的所有有行時?為了避避免笛卡卡爾乘積積的形成成,在WHERE子子句中應(yīng)應(yīng)當(dāng)總是是包含正確的的連接條條件。。用Oracle語法法連接表表使用一個個連接從從多個表表中查詢詢數(shù)據(jù)SELECTtable1.column,table2.columnFROMtable1,table2WHEREtable1.column1=table2.column2;?在WHERE子句句中寫連連接條件件?當(dāng)多個個表中有有相同的的列名時時,將表表名作為為列名的的前綴定定義連接接?當(dāng)數(shù)據(jù)據(jù)從多表表中查詢詢時,要要使用連連接(join)條件件。一個個表中的行按照照存在于于相應(yīng)列列中的公公值被連連接到另另一個表表中的行行,即,通常常所說的的主鍵和和外鍵列列。什么是等等值連接接?EMPLOYEESDEPARTMENTS用等值連連接返回回記錄SELECTemployees.employee_id,employees.last_name,employees.department_id,departments.department_id,departments.location_idFROMemployees,departmentsWHEREemployees.department_id=departments.department_id;使用表別別名?使用表表別名簡簡化查詢詢?使用表表別名改改善性能能SELECTe.employee_id,e.last_name,e.department_id,d.department_id,d.location_idFROMemployeese,departmentsdWHEREe.department_id=d.department_id;原則表別名最最多可以以有30個個字符,,但短一一些更好好。如果在FROM子子句中表表別名被被用于指指定的表表,那么么在整個個SELECT語語句中都都要使用用表別名名。表別名應(yīng)應(yīng)該是有有意義的的。表別名只只對當(dāng)前前的SELECT語語句有有效。多于兩個個表的連連接EMPLOYEESDEPARTMENTSLOCATIONS非等值連連接EMPLOYEESJOB_GRADES用非等值值連接返返回記錄錄SELECTe.last_name,e.salary,j.grade_levelFROMemployeese,job_gradesjWHEREe.salaryBETWEENj.lowest_salANDj.highest_sal;外連接DEPARTMENTSEMPLOYEES外連接語語法?你可以以用一個個外連接接查看那那些不滿滿足連接接條件的的行?外連接接運(yùn)算符符是加號號(+)SELECTtable1.column,table2.columnFROMtable1,table2WHEREtable1.column(+)=table2.column;SELECTtable1.column,table2.columnFROMtable1,table2WHEREtable1.column=table2.column(+);?用外連連接返回回不直接接匹配的的記錄?如果在在連接條條件中使使用外連連接操作作,缺少少的行就就可以被被返回。操作作符是一一個在圓圓括號中中的加號號(+),它它被放置置在連接接的缺少信信息的一一側(cè)。為為了使來來自不完完善表的的一行或或多行能能夠被連接,,該操作作符有產(chǎn)產(chǎn)生一個個或多個個空行的的作用。。使用外連連接SELECTe.last_name,e.department_id,d.department_nameFROMemployeese,departmentsdWHEREe.department_id(+)=d.department_id;什么是組組函數(shù)?組函數(shù)操操作行集集,給出出每組的的結(jié)果EMPLOYEES在EMPLOYEES表中的最最高薪水水組函數(shù)的的類型?AVG平均值?COUNT計數(shù)?MAX最大值?MIN最小值?STDDEV標(biāo)準(zhǔn)差?SUM合計?VARIANCE方差組函數(shù)(續(xù))每個函數(shù)數(shù)接收一一個參數(shù)數(shù),下面面的表確確定你可可以在語語法中使使用的選選項:函數(shù)數(shù)說說明明AVG([DISTINCT|ALL]n)n的平均值值,忽略略空值COUNT({*|[DISTINCT|ALL]expr})用用*計數(shù)數(shù)所有行行,包括括重復(fù)和和帶空值值的行。expr求除了空空計算MAX([DISTINCT|ALL]expr)expr的最大值值,忽略略空值MIN([DISTINCT|ALL]expr)expr的最小值值,忽略略空值STDDEV([DISTINCT|ALL]x)n的標(biāo)準(zhǔn)差差,忽略略空值SUM([DISTINCT|ALL]n)合合計計n的值,忽忽略空值值VARIANCE([DISTINCT|ALL]x)n的方差,,忽略空空值組函數(shù)的的語法SELECT[column,]group_function(column),...FROMtable[WHEREcondition][GROUPBYcolumn][ORDERBYcolumn];使用組函函數(shù)的原原則DISTINCT使使得函數(shù)數(shù)只考慮慮不重復(fù)復(fù)的值;;ALL使得得函數(shù)考考慮每個個值,包包括重復(fù)復(fù)值。默默認(rèn)值是是ALL,,因此不不需要指指定。用于函數(shù)數(shù)的參數(shù)數(shù)的數(shù)據(jù)據(jù)類型可可以是CHAR、VARCHAR2、NUMBER或或DATE。所有組函函數(shù)忽略略空值。。為了用用一個值值代替空空值,用用NVL、NVL2或COALESCE函函數(shù)。。當(dāng)使用GROUPBY子子句時時,Oracle服服務(wù)器隱隱式以升升序排序序結(jié)果集集。為了了覆蓋該該默認(rèn)順順序,DESC可以以被用于于ORDERBY子句句。使用AVG、、SUM、MIN、MAX函函數(shù)你可以使使用AVG和和SUM用于于數(shù)字?jǐn)?shù)數(shù)據(jù)SELECTAVG(salary),MAX(salary),MIN(salary),SUM(salary)FROMemployeesWHEREjob_idLIKE'%REP%';使用COUNT函數(shù)數(shù)COUNT(*)返返回一個個表中的的行數(shù)COUNT函函數(shù)有三三中格式式:COUNT(*)COUNT(expr)COUNT(DISTINCTexpr)COUNT(*)返返回表中中滿足SELECT語句句標(biāo)準(zhǔn)的的行數(shù),,包括重重復(fù)行,,包括有有空值列列的行。。如果WHERE子子句包包括在SELECT語句句中,COUNT(*)返返回滿足足WHERE子句句條件的的行數(shù)。。COUNT(expr)返回在列列中的由expr指定的非空值值的數(shù)。COUNT(DISTINCTexpr)返返回在在列中中的由由expr指定的的唯一一的非非空值值的數(shù)數(shù)。注:expr為為列名名組函數(shù)數(shù)和Null值值所有組組函數(shù)數(shù)忽略略列中中的空空值。。在幻幻燈片片的例例子中中,平均值值只基基于表表中的的那些些COMMISSION_PCT列列的值有有效的的行的的計算算。平平均值值計算算是用用付給給所有有雇員的總總傭金金除以以接受受傭金金的雇雇員數(shù)數(shù)(4)。SELECTAVG(commission_pct)FROMemployees;在組函函數(shù)中中使用用NVL函函數(shù)數(shù)NVL函函數(shù)強(qiáng)強(qiáng)制組組函數(shù)數(shù)包括括空值值。在在幻燈燈片的的例子子中,,平均均值被基于于所有有表中中的行行來計計算,,不管管COMMISSION_PCT列列是否為為空。。平均均值的的計算算是用用付給給所有有雇員員的總總傭金金除以以公司的雇雇員總總數(shù)(20)。SELECTAVG(NVL(commission_pct,0))FROMemployees;創(chuàng)建數(shù)數(shù)據(jù)組組:GROUPBY子子句句語法法用GROUPBY子子句劃劃分表表中的的行到到較小小的組組中SELECTcolumn,group_function(column)FROMtable[WHEREcondition][GROUPBYgroup_by_expression][ORDERBYcolumn];在語法中,,group_by_expression指定那些用用于將行分分組的列,這些列列的值作為為行分組的的依據(jù)。使用WHERE子子句,你你可以在劃劃分行成組組以前過濾濾行。在GROUPBY子句句中必須包包含列。在GROUPBY子句句中你不能能用列別名名。默認(rèn)情況下下,行以包包含在GROUPBY列列表中的的字段的升升序排序。。你可以用用ORDERBY子句句覆蓋這個個默認(rèn)值。。如果在SELECT子句句中包含了了組函數(shù),,就不能選選擇單獨(dú)的的結(jié)果,除除非單獨(dú)的的列出現(xiàn)在在GROUPBY子句句中。如果果你未能在在GROUPBY子句句中包含一一個字段列列表,你會會收到一個個錯誤信息息。約束分組結(jié)結(jié)果:HAVING子句句用HAVING子子句約束分分組:1.行被分分組2.應(yīng)用組組函數(shù)3.匹配HAVING子句句的組被顯顯示SELECTcolumn,group_functionFROMtable[WHEREcondition][GROUPBYgroup_by_expression][HAVINGgroup_condition][ORDERBYcolumn];使用HAVING子子句SELECTdepartment_id,MAX(salary)FROMemployeesGROUPBYdepartment_idHAVINGMAX(salary)>10000;嵌套組函數(shù)顯示最大平均均薪水SELECTMAX(AVG(salary))FROMemployeesGROUPBYdepartment_id;創(chuàng)建和管理表表目標(biāo)完成本課后,您應(yīng)當(dāng)能能夠執(zhí)行下列列操作:?描述主要數(shù)數(shù)據(jù)庫對象?創(chuàng)建表?描述列定義義時可用的數(shù)數(shù)據(jù)類型?改變表的定定義?刪除、改名名和截斷表數(shù)據(jù)庫對象表基基本存儲單元元,由行和和列組成視圖邏邏輯地從從一個或多個個表中表示數(shù)數(shù)據(jù)子集序列數(shù)數(shù)字值發(fā)發(fā)生器索引改改善一些些查詢的性能能同義詞給給對對象可選擇的的名字命名規(guī)則表命名和列命命名:?必須以字母母開始?必須是1––30個字字符長度?只能包含A–Z,a–z,0–9,_,$,和和#?同一個用戶戶所擁有的對對象之間不能能重名?不能用Oracle服服務(wù)器的保保留字注:名字是大大小寫不敏感感的,例如,,EMPLOYEES與eMPloyees或或eMpLOYEES作為同一一個名字來處處理。CREATETABLE語句?用戶必須有有:–CREATETABLE權(quán)限–一個存儲區(qū)區(qū)域CREATETABLE[schema.]table(columndatatype[DEFAULTexpr][,...]);?必須指定::–表名–列名、列數(shù)數(shù)據(jù)類型和列列的大小schema與所有者的名名字一樣table表的名字DEFAULTexpr指定默認(rèn)值column列的名字datatype列的數(shù)據(jù)類型型和長度引用另一個用用戶的表?表屬于另一一個用戶,不不在該用戶的的方案中?在那些表名名字的前面使使用所有者的的名字作為前綴如果一個表不不屬于本用戶戶,那么,其其所有者的名名字必須放在表名名的前面SELECT*FROMuser_b.employees;創(chuàng)建表?創(chuàng)建表CREATETABLEdept(deptnoNUMBER(2),dnameVARCHAR2(14),locVARCHAR2(13));?確認(rèn)表的創(chuàng)建建DESCRIBEdeptOracle數(shù)據(jù)庫中中的表?用戶表:–由用戶創(chuàng)建建和維護(hù)的表表的集合–包含用戶信信息?數(shù)據(jù)字典::–由Oracle服務(wù)務(wù)器創(chuàng)建和維維護(hù)的表的集集合–包含數(shù)據(jù)庫庫信息有四種數(shù)據(jù)字字典視圖,每每一種有一個個特定的前綴綴來反映其不不同的目的。USER_這這些視圖圖包含關(guān)于用用戶所擁有的的對象的信息息。ALL_這這些些視圖包含所所有用戶可訪訪問的表(對象表和相相關(guān)的表)的的信息。DBA_這這些視圖圖是受限制的的視圖,它們們只能被分配配有DBA角色的用用戶所訪問。V$這這些些視圖是動態(tài)態(tài)執(zhí)行的視圖圖,包含數(shù)據(jù)據(jù)庫服務(wù)器的的性能、存儲儲器和鎖的信息。。查詢數(shù)據(jù)字典典?查看本用戶戶所擁有的表表的名稱SELECTtable_nameFROMuser_tables;?查看本用戶戶所擁有的不不同的對象類類型SELECTDISTINCTobject_typeFROMuser_objects;?查看本用戶戶所擁有的表表、視圖、同同義詞和序列列SELECT*FROMuser_catalog;數(shù)據(jù)類型數(shù)據(jù)類型說說明明VARCHAR2(size)可可變變長度的字符符數(shù)據(jù)CHAR(size)固固定定長度的字符符數(shù)據(jù)NUMBER(p,s)可變長度的數(shù)數(shù)字?jǐn)?shù)據(jù)DATE日日期和時間間值LONG最最大2G的的可變長度字字符數(shù)據(jù)CLOB最最大4G的的字符數(shù)據(jù)RAWandLONGRAW原始二進(jìn)進(jìn)制數(shù)據(jù)BLOB最最大4G的的二進(jìn)制數(shù)據(jù)據(jù)BFILE最最大4G的,存儲在在外部文件中中的二進(jìn)制數(shù)據(jù)ROWID一一個64進(jìn)制制的數(shù)制系統(tǒng)統(tǒng),表示表中中一行的唯一地地址用子查詢創(chuàng)建建表該方法既可以以創(chuàng)建表還可可以將從子查查詢返回的行行插入新創(chuàng)建建的表中。CREATETABLEdept80ASSELECTemployee_id,last_name,salary*12ANNSAL,hire_dateFROMemployeesWHEREdepartment_id=80;原則被創(chuàng)建的表要要帶指定的列列名,并且由由SELECT語句返回回的行被插入入到新表中。。字段的定義只只能包括列名名和默認(rèn)值。。如果給出了指指定的列,列列的數(shù)目必須須等于子查詢詢的SELECT列表的的列數(shù)目。如果沒有給出出了指定的列列,表的列名名應(yīng)和子查詢詢中的列名是是相同的。完整性規(guī)則不不會被傳遞到到新表中,僅僅列的數(shù)據(jù)類類型被定義。。ALTERTABLE語句用ALTERTABLE語句來:?添加一個新新列?修改一個已已存在的列?為新列定義義一個默認(rèn)值值?刪除一個列列添加列ALTERTABLEtableADD(columndatatype[DEFAULTexpr][,columndatatype]...);修改列ALTERTABLEtableMODIFY(columndatatype[DEFAULTexpr][,columndatatype]...);刪除列ALTERTABLEtableDROP(column);添加新列?用ADD字句添加列ALTERTABLEdept80ADD(job_idVARCHAR2(9));添加新列的原原則你可以添加或或修改列。你不能指定新新添加的列的的位置,新列列將成為最后后一列。修改列?可以改變列列的數(shù)據(jù)類型型、大小和默默認(rèn)值A(chǔ)LTERTABLEdept80MODIFY(last_nameVARCHAR2(30));?對默認(rèn)值的的改變只影響響后來插入表表中的數(shù)據(jù)原則你可以增加寬寬度或一個數(shù)數(shù)字列的精度度。你可以增加數(shù)數(shù)字列或字符符列的寬度。。你可以減少一一個列的寬度度,但僅在列列中只包含空空值或表中沒沒有行時。你可以改變數(shù)數(shù)據(jù)類型,但但僅在列中只只包含空值時時。你可以轉(zhuǎn)換一一個CHAR列到VARCHAR2數(shù)據(jù)類型或或轉(zhuǎn)換一個VARCHAR2列到CHAR數(shù)數(shù)據(jù)類型僅僅當(dāng)列中只包包含空值時,,或者你不改改變列的大小小時。對默認(rèn)值的改改變僅影響以以后插入的列列。刪除列用DROPCOLUMN子句從表中刪刪除列ALTERTABLEdept80DROPCOLUMNjob_id;原則列可以有也可可以沒有數(shù)據(jù)據(jù)。用ALTERTABLE語句,一一次只能有一一列被刪除。。表被修改后必必須至少保留留一列。一旦一列被刪刪除,它不能能再恢復(fù)。刪除表?在表中的所所有數(shù)據(jù)和結(jié)結(jié)構(gòu)都被刪除除?任何未決的的事務(wù)都被提提交?所有的索引引被刪除?你不能回退退DROPTABLE語句DROPTABLEdept80;DROPTABLE語語句刪除Oracle表表定義,當(dāng)你你刪除一個表表時,數(shù)據(jù)庫丟失表表中所有的數(shù)數(shù)據(jù),并且所所有與其相關(guān)關(guān)的索引也被被刪除。改變一個對象象的名字?執(zhí)行RENAME語句,改變一一個表、視圖圖、序列或同義詞RENAMEdeptTOdetail_dept;注:你必須是是對象的所有有者截斷表?TRUNCATETABLE語句:–刪除表中所所有的行–釋放該表所所使用的存儲儲空間TRUNCATETABLEdetail_dept;?不能回退用用TRUNCATE刪除的行?作為選擇,,可以用DELETE語句刪除行子查詢&操縱縱數(shù)據(jù)目標(biāo)完成本課后,您應(yīng)當(dāng)能能夠執(zhí)行下列列操作:?描述子查詢詢能夠解決的的問題類型?定義子查詢詢?列出子查詢詢的類型?寫單行和多多行子查詢?描述每個DML語句句?插入行到表表中?更新表中的的行?從表中刪除除行?控制事務(wù)用子查詢解決決問題用子查詢解決決問題假想你想要寫寫一個查詢來來找出掙錢比比Abel的薪水還還多的人。為為了解決這個個問題,你需需要兩個查詢詢:一個找出出Abel的收入,,第二個查詢詢找出收入高高于Abel的人。。你可以用組合合兩個查詢的的方法解決這這個問題,放放置一個查詢詢到另一個查查詢中。內(nèi)查詢或子查查詢返回一個個值給外查詢詢或主查詢。。使用一個子子查詢相當(dāng)于于執(zhí)行兩個連連續(xù)查詢并且且用第一個查查詢的結(jié)果作作為第二個查查詢的搜索值值。子查詢語法SELECTselect_listFROMtableWHEREexproperator(SELECTselect_listFROMtable);?子查詢(內(nèi)內(nèi)查詢)在在主查詢之前前執(zhí)行一次?子查詢的結(jié)結(jié)果被用于主主查詢(外查查詢)子查詢可以被被放在CREATEVIEW語語句中、CREATETABLE語語句、UPDATE語語句、INSERT語語句的INTO子子句和UPDATE語句句的SET子句中。。使用子查詢SELECTlast_nameFROMemployeesWHEREsalary>(SELECTsalaryFROMemployeesWHERElast_name='Abel');使用子查詢的的原則?子查詢放在在圓括號中?將子查詢放放在比較條件件的右邊?在子查詢中中的ORDERBY子子句一般不不需要。?在單行子查查詢中用單行行運(yùn)算符,在在多行子查詢詢中用多行運(yùn)算符。。子查詢的類型型?單行子查詢詢:從內(nèi)SELECT語句只返返回一行的查查詢?多行子查詢詢:從內(nèi)SELECT語句返回回多行的查詢詢單行子查詢?僅返回一行行?使用單行比比較符運(yùn)算符含含義=等于>大于>=大于或等于<小于<=小于或等于<>不等于執(zhí)行單行子查查詢SELECTlast_name,job_id,salaryFROMemployeesWHEREjob_id=(SELECTjob_idFROMemployeesWHEREemployee_id=141)ANDsalary>(SELECTsalaryFROMemployeesWHEREemployee_id=143);多行子查詢?返回多于一一行?使用多行比比較符操作含含義義IN等等于列列表中的任何何成員ANY比比較子查詢返返回的每個值值A(chǔ)LL比比較子查詢詢返回的全部部值在多行子查詢詢中使用ANY運(yùn)算符符SELECTemployee_id,last_name,job_id,salaryFROMemployeesWHEREsalary<ANY(SELECTsalaryFROMemp
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 零星健身房工程維修合同
- 醫(yī)院建設(shè)勞務(wù)大清包施工合同
- 二零二五年工業(yè)地產(chǎn)買賣合同范本集2篇
- 礦山開發(fā)與開采合同
- 旅游公司導(dǎo)游招募合同聘用合同
- 2025年度汽車租賃服務(wù)合同范本2篇
- 2024年生態(tài)環(huán)境治理項目承包合同
- 二零二五DJ音樂節(jié)贊助商權(quán)益保障合同3篇
- 2024年田地承包權(quán)轉(zhuǎn)讓及農(nóng)業(yè)技術(shù)指導(dǎo)服務(wù)合同3篇
- 2024外墻翻新及外墻照明系統(tǒng)升級合同書3篇
- 廣西建設(shè)工程造價咨詢服務(wù)行業(yè)收費(fèi)參考標(biāo)準(zhǔn)
- 對于成立產(chǎn)科安全管理辦公室通知
- 醫(yī)院突發(fā)呼吸心跳驟停搶救演練腳本
- 雨雪天氣安全教育PPT
- 深基坑支護(hù)專項施工方案(咬合樁)
- 勞務(wù)派遣服務(wù)外包技術(shù)方案
- 極致物業(yè)管理系統(tǒng)收費(fèi)管理業(yè)務(wù)操作
- GB∕T 29639-2020 生產(chǎn)經(jīng)營單位生產(chǎn)安全事故應(yīng)急預(yù)案編制導(dǎo)則
- 貴州省工傷保險待遇申領(lǐng)授權(quán)委托書
- 媒介融合(ppt)課件
- 液壓系統(tǒng)中油管尺寸的選擇
評論
0/150
提交評論