限制行和對(duì)數(shù)據(jù)_第1頁(yè)
限制行和對(duì)數(shù)據(jù)_第2頁(yè)
限制行和對(duì)數(shù)據(jù)_第3頁(yè)
限制行和對(duì)數(shù)據(jù)_第4頁(yè)
限制行和對(duì)數(shù)據(jù)_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章限制行和對(duì)數(shù)據(jù)排序3.1WHERE子句的用法WHERE定義了SELECT將返回哪些行。條件“condition”指定了必須存在什么或者必須滿足什么條件。Oracle9i搜索每一記錄以確定條件是否為TRUE。如果記錄滿足搜索指定的條件,那么查詢結(jié)果就將返回它?!癱ondition”可以是任何測(cè)試真或假的有效表達(dá)式。對(duì)于表的一個(gè)簡(jiǎn)單搜索來(lái)說(shuō),WHERE子句使用以下格式:<columnname><comparisonoperator><anothernamedcolumnorvalue>SELECT[DISTINCT|UNIQUE|ALL]{*

|{columnname|expr}[[AS]column_alias]

[,...n]}FROMtablename

[WHEREcondition]

[ORDERBY[expr|position|column_alias][ASC|DESC]]3.1WHERE子句的用法“condition”可以用以下幾種方法定義:表達(dá)式之間的比較(=、>、!=等等)。一個(gè)表達(dá)式和一個(gè)查詢之間的比較。一列表達(dá)式和查詢中的一列表達(dá)式之間的比較。一個(gè)表達(dá)式和一個(gè)列表的任一(ANY)或所有成員之間的比較(ALL)?;蛘呤且粋€(gè)表達(dá)式和從查詢中得到的值之間的比較。測(cè)試一個(gè)表達(dá)式在(IN)或不在(NOTIN)一個(gè)列表中,或者在(IN)或不在(NOTIN)查詢的結(jié)果中。測(cè)試是否存在(BETWEEN)或不在(NOTBETWEEN)一個(gè)值和另一個(gè)值之間。測(cè)試表達(dá)式是否為空(ISNULL)或不為空(ISNOTNULL)。測(cè)試一個(gè)查詢是否存在(EXISTS)或不存在(NOTEXISTS)結(jié)果。使用LIKE進(jìn)行模式匹配。一個(gè)下劃線“_”表示任意一個(gè)字符。一個(gè)百分號(hào)“%”表示任意數(shù)目的空格或字符,包括0個(gè)空格或字符。以上任何條件使用AND或OR的組合。3.2比較運(yùn)算符數(shù)學(xué)比較運(yùn)算符=等于>大于,只返回其值大于指定條件中的值的記錄(不包括剛好符合指定條件的值)。<小于,只返回其值小于指定條件中的值的記錄(不包括剛好符合指定條件的值)。<>、!=或^=不等于<=小于或等于>=大于或等于3.2比較運(yùn)算符其他比較運(yùn)算符[NOT]BETWEENxANDy允許用戶表示一個(gè)范圍,可以使用可選的NOT。[NOT]IN(x,y,…)與OR邏輯運(yùn)算符相似??梢运阉鳚M足括號(hào)中包括的至少一個(gè)條件的記錄。可選的NOT取反。[NOT]LIKE如果不能確定具體拼寫時(shí),可以使用LIKE來(lái)搜索一種模式。使用可選的NOT表示不應(yīng)該在結(jié)果中包括包含指定模式的記錄。IS[NOT]NULL允許用戶搜索指定字段沒有項(xiàng)目的記錄。3.2比較運(yùn)算符1、算術(shù)比較運(yùn)算符例3.1在BOOKS表中查詢價(jià)格大于55元的書的書名及銷售價(jià)格SQL>selecttitle,retail2frombooks3whereretail>55;3.2比較運(yùn)算符例3.2在BOOKS表中查詢書名的字母順序在字母ST之后的所有圖書的列表。SQL>selecttitle2frombooks3wheretitle>'ST';3.2比較運(yùn)算符例3.3在BOOKS表中查詢利潤(rùn)低于成本的20%的所有圖書的列表。SQL>selecttitle,retail-costprofit,cost2frombooks3whereretail-cost<cost*0.2;3.2比較運(yùn)算符例3.4查詢所居住州的州名的字母順序在佐治亞(Georgia)州之前的客戶的列表。SQL>selectfirstname,lastname,state2fromcustomers3wherestate<='GA';3.2比較運(yùn)算符例3.5查詢所有不居住在佐治亞(Georgia)州的客戶的列表。SQL>selectfirstname,lastname,state2fromcustomers3wherestate<>'GA';3.2比較運(yùn)算符(1)字符串規(guī)則無(wú)論何時(shí)使用串文字值作為搜索條件的一部分,這個(gè)值都必須包括在單引號(hào)中。如果目標(biāo)字段只包括“數(shù)字”,就不需要單引號(hào)。記錄中包括的數(shù)據(jù)是區(qū)分大小寫的。3.2比較運(yùn)算符例3.6查詢所有類別是LITERATURE的圖書列表。SQL>selecttitle,category2frombooks3wherecategory='literature';SQL>selecttitle,category2frombooks3wherecategory='LITERATURE';3.2比較運(yùn)算符例3.7查詢ISBN號(hào)為2147428890的書的ISBN號(hào)及書名。SQL>selectisbn,title2frombooks3whereisbn='2147428890';SQL>selectisbn,title2frombooks3whereisbn=2147428890;3.2比較運(yùn)算符(2)日期規(guī)則Oracle9i默認(rèn)使用DD-MM-YY顯示日期,MON是月份的標(biāo)準(zhǔn)三個(gè)字母縮寫。必須將日期值包括在單引號(hào)中。3.2比較運(yùn)算符例3.8查詢2001年1月21日出版的圖書的書名、出版社編號(hào)和出版日期。SQL>selecttitle,pubdate,pubid2frombooks3wherepubdate='21-1月-2001';3.2比較運(yùn)算符例3.9查詢2001年之后出版的圖書的ISBN、書名和出版日期。SQL>selectisbn,title,pubdate2frombooks3wherepubdate>'31-12月-2001';3.2比較運(yùn)算符2、BETWEEN…AND運(yùn)算符在查詢時(shí),如果要求某列的數(shù)值在某個(gè)區(qū)間范圍內(nèi),則可以使用BETWEEN…AND運(yùn)算符。

例3.10查詢出版社編號(hào)在1到3之間的所有圖書的書名和出版社編號(hào)。SQL>selecttitle,pubid2frombooks3wherepubidbetween1and3;3.2比較運(yùn)算符例3.11查詢出版日期在99年1月1日到01年12月31日之間的圖書的書名及出版日期。SQL>selecttitle,pubdate2frombooks3wherepubdatebetween'01-1月-99'and'31-12月-01';3.2比較運(yùn)算符3、IN運(yùn)算符IN運(yùn)算符返回與列出的值中指定的某一個(gè)值相等的記錄。Oracle9i語(yǔ)法要求使用逗號(hào)將列出的項(xiàng)目分開,而且必須將整個(gè)列表都包括在圓括號(hào)中。例3.12查詢編號(hào)為1、2、5的出版社所出版的圖書書名及出版社編號(hào)。SQL>selecttitle,pubid2frombooks3wherepubidin(1,2,5);3.2比較運(yùn)算符例3.13查詢不在GA、FL和CA州居住的客戶的姓氏、名字及所居住的州。SQL>selectfirstname,lastname,state2fromcustomers3wherestatenotin('GA','FL','CA');3.2比較運(yùn)算符4、LIKE(模式匹配)運(yùn)算符在查詢時(shí),經(jīng)常需要對(duì)字符串進(jìn)行比較。在比較中,有的要求兩個(gè)字符串完全相同,有的要求部分字符相同,而其余的字符可以任意。LIKE運(yùn)算符可以和通配符一起使用,用來(lái)查找與你所描述的模式相匹配的記錄。LIKE提供兩種通配符:1)百分號(hào)(%):表示“任意數(shù)量的字符”。2)下劃線(_):表示“一個(gè)字符”。百分號(hào)和下劃線可以在同一個(gè)搜索條件中使用,以便創(chuàng)建更為復(fù)雜的搜索模式。3.2比較運(yùn)算符例3.14查詢所有姓氏以字母P開始的客戶的姓氏和名字。SQL>selectlastname,firstname2fromcustomers3wherelastnamelike'P%';3.2比較運(yùn)算符例3.15customers表中客戶編號(hào)為四位數(shù)字,查詢客戶編號(hào)的前兩位數(shù)字是“1”和“0”,第三位是任意字符,最后一位數(shù)字是“9”的客戶編號(hào)及姓氏、名字。SQL>selectcustomer#,lastname,firstname2fromcustomers3wherecustomer#like'10_9';3.2比較運(yùn)算符例3.16查詢ISBN號(hào)的第2位數(shù)字是4,最后一位數(shù)字是0的圖書列表。SQL>selectisbn,title2frombooks3whereisbnlike'_4%0';3.2比較運(yùn)算符例3.17查詢出版社名字是以字母P打頭,并且包含I的出版社信息。SQL>select*frompublisher2wherenamelike'P%I%';3.2比較運(yùn)算符5、NULL值的比較我們使用的數(shù)據(jù)庫(kù)一般是反映實(shí)際的具體情況,但有時(shí)某些數(shù)據(jù)在實(shí)際情況中還不存在。例如:CUSTOMERS表中有的客戶是其他客戶介紹的,有的不是。如果某個(gè)客戶不是其他客戶介紹的,那么他的REFERRED就不存在,即既不等于0、空格,也不等于某個(gè)值,而是一個(gè)未知的值,我們稱他的REFERRED的值為空值??罩祵?shí)際是指一種未知的、不存在的或不可應(yīng)用的數(shù)據(jù),通常用NULL表示。NULL僅僅是一個(gè)符號(hào),它不等同于零和空格,所以NULL不能與等號(hào)之類的運(yùn)算符連用。如果需要識(shí)別包含一個(gè)NULL值的記錄,應(yīng)該使用ISNULL比較運(yùn)算符。3.2比較運(yùn)算符例3.18向客戶發(fā)貨時(shí),發(fā)貨的日期會(huì)輸入到ORDERS表中。如果Shipdate字段中沒有顯示一個(gè)日期,則表示還沒有發(fā)貨。請(qǐng)查詢?nèi)魏芜€沒有發(fā)給客戶的訂單。SQL>selectorder#2fromorders3whereshipdateisnull;3.2比較運(yùn)算符例3.19查詢經(jīng)由其他客戶介紹的客戶,并顯示其介紹人的客戶編號(hào)。SQL>selectcustomer#,lastname,firstname,referred2fromcustomers3wherereferredisnotnull;3.3邏輯運(yùn)算符在WHERE子句中,也可以通過(guò)邏輯運(yùn)算符連接多個(gè)條件,構(gòu)成一個(gè)更復(fù)雜的條件進(jìn)行查詢。在WHERE子句中可以使用三種邏輯運(yùn)算符:運(yùn)算符含義NOT邏輯非。選擇不滿足條件的行。AND邏輯與。選擇列值同時(shí)滿足多個(gè)條件的行。OR邏輯或。選擇列值滿足任一條件的行。3.3邏輯運(yùn)算符在WHERE子句中,比較運(yùn)算符的優(yōu)先級(jí)高于邏輯運(yùn)算符。在邏輯運(yùn)算符中,邏輯非(NOT)的優(yōu)先級(jí)最高,邏輯與(AND)次之,邏輯或(OR)優(yōu)先級(jí)最低。如果需要更改計(jì)算順序,只需使用圓括號(hào)指定首先執(zhí)行的運(yùn)算符即可。3.3邏輯運(yùn)算符例3.20查詢由編號(hào)為3的出版社出版,并且屬于Computer類的圖書列表。SQL>selecttitle,pubid,category2frombooks3wherepubid=3and4category='COMPUTER';3.3邏輯運(yùn)算符例3.21查詢地址是以字母P開始的,或者郵編以3開始的客戶信息。SQL>selectlastname,address,zip2fromcustomers3whereaddresslike'P%'orziplike'3%';3.3邏輯運(yùn)算符例3.22查詢成本高于15美元,并且由編號(hào)為4的出版社出版,或者屬于Familylife類的圖書列表。SQL>selecttitle,category,pubid,cost2frombooks3wherecategory='FAMILYLIFE'4ORpubid=45ANDcost>15;3.3邏輯運(yùn)算符SQL>selecttitle,category,pubid,cost2frombooks3where(category='FAMILYLIFE'4ORpubid=4)5ANDcost>15;3.4ORDERBY子句SELECT語(yǔ)句獲得的數(shù)據(jù)一般是沒有按規(guī)律進(jìn)行排序的。也就是說(shuō),這一次提取出的數(shù)據(jù)組的排列順序與下一次提取出的數(shù)據(jù)組的排列順序可以截然不同。所以為了方便閱讀和使用,最好對(duì)查詢結(jié)果進(jìn)行一次排序。在成功地選擇所要的數(shù)據(jù)后,可以利用ORDERBY子句對(duì)這些數(shù)據(jù)以某一列或數(shù)個(gè)列組合當(dāng)作鍵值依序排列,排序的方向可以按鍵值由大到小或由小到大排列,這樣,ORDERBY子句就為某個(gè)查詢結(jié)果定義一個(gè)特定的行順序。SELECT[DISTINCT|UNIQUE|ALL]{*

|{columnname|expr}[[AS]column_alias]

[,...n]}FROMtablename

[WHEREcondition]

[ORDERBY{expr[,expr]…| position[,position]…} column_alias[,alias] [ASC|DESC]]3.4ORDERBY子句例3.22查詢出版社信息,并且按照出版社名字的升序排列。SQL>select*frompublisher2orderbyname;3.4ORDERBY子句1、排列規(guī)則按升序排列時(shí),值將按照以下順序列出:

1)數(shù)值

2)字符值

3)NULL值如果希望按升序排列,并且首先列出NULL值,可以在ORDERBY子句中添加NULLSFIRST。例3.23查詢每個(gè)客戶的地址信息,并且按照客戶地址的升序排列。SQL>selectlastname,firstname,address2fromcustomers3orderbyaddress;3.4ORDERBY子句例3.24查詢客戶的姓氏、名字和介紹人的編號(hào)(referred),并且按照referred的升序排列。SQL>selectlastname,firstname,referred2fromcustomers3orderbyreferred;3.4ORDERBY子句例3.25查詢客戶的姓氏、名字和介紹人的編號(hào)(referred),并且按照referred的升序排列,并且首先列出NULL值。SQL>selectlastname,firstname,referred2fromcustomers3orderbyreferredNULLSFIRST;3.4ORDERBY子句2、降序排列除非指定了DESC以使用降序,否則在默認(rèn)情況下,ORDERBY子句將按升序進(jìn)行排列。例3.26查詢每個(gè)客戶的地址信息,并且按照客戶地址的降序排列。SQL>selectlastname,firstname,address2fromcustomers3orderbyaddressdesc;3.4ORDERBY子句3、按列別名排序如果在SELECT語(yǔ)句中為一個(gè)列指定了列別名,而且在ORDERBY子句中也使用了這個(gè)列,那么可以在ORDERBY子句中使用相同的別名。例3.27題目同例3.23,查詢每個(gè)客戶的地址信息,并且按照客戶地址的升序排列。SQL>selectlastname,firstname,2address"customeraddress"3fromcustomers4orderby"customeraddress";3.4ORDERBY子句4、按SELECT順序排列ORDERBY子句還可以使用SELECT子句中的列的position(位置)來(lái)完成。例3.28題目同例3.23,查詢每個(gè)客戶的地址信息,并且按照客戶地址的升序排列。SQL>selectlastname,firstname,address2fromcustomers3orderby3;3.4ORDERBY子句5、次排序在ORDERBY子句中只指定了一列時(shí),稱為“主排序”。如果主排序中的兩行或更多行完全相同,那么“次排序”提供另一個(gè)進(jìn)行排序的字段。選擇按多列排序,首先由第一個(gè)列名確定順序,若第一排序列值相同,再按第二個(gè)列名排序,第二排序列值相同,再按第三列排序,依此類推。如果按多列進(jìn)行排序時(shí),應(yīng)分別指出它們相應(yīng)的列名及有關(guān)的遞增或遞減方式。在OEDERBY子句中可以使用的列數(shù)限制是255。3.4ORDERBY子句例3.29查詢客戶信息,按照客戶所居住的州的降序進(jìn)行排序,如果有多個(gè)居住在某個(gè)特定州的客戶時(shí),將按城市的升序?qū)蛻暨M(jìn)行排序。SQL>selectlastname,firstname,state,city2fromcustomers3orderbystatedesc,city;3.4ORDERBY子句注意:在SELECT子句中可以列出用于排序的列,也可以不列出用于排序的列。如果在SELECT子句中使用了DISTINCT或UNIQUE關(guān)鍵字,那么“只能”使用在SELECT子句中明確列出的列進(jìn)行排序。DESC只應(yīng)用于它之前的那一列。3.4ORDERBY子句例3.30查詢客戶信息,按照客戶所居住的州的降序進(jìn)行排序,如果有多個(gè)居住在某個(gè)特定州的客戶時(shí),將按城市的升序?qū)蛻暨M(jìn)行排序,但是并不顯示城市信息。SQL>selectlastname,firstname,state2fromcustomers3orderbystatedesc,city;3.4ORDERBY子句例3.31在例3.30的SELECT子句中使用DISTINCT關(guān)鍵字,查看結(jié)果。SQL>selectdistinctlastname,firstname,state2fromcustomers3orderbystatedesc,city;3.4ORDERBY子句例3.32查詢訂單

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論