




已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
地質(zhì)研究所開發(fā)信息室2005 10 4 PowerBuilder中的select語句的使用 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 目錄 一 SQL語言1 1數(shù)據(jù)查詢語言DQL1 2數(shù)據(jù)類型1 3類型轉(zhuǎn)換1 4表達式二 SQL中的查詢語句2 1簡單查詢2 2嵌套的select語句查詢2 3IN和OR的用法2 4ANY和ALL的用法2 5BETWEEN和NOTBETWEEN的用法2 6LIKE和NOTLIKE的用法2 7NYLL和NOTNULL的用法2 8GROUPBY HAVING及ORDERBY的用法2 9表連接操作 三 常用的函數(shù)3 1算術(shù)函數(shù)3 2日期函數(shù)3 3字符串函數(shù)3 4空值函數(shù)3 5聚組函數(shù) PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 一 SQL語言分類 命令共分為四大類 1 數(shù)據(jù)查詢語言DQL select 2 數(shù)據(jù)操作語言DML insert update delete 3 據(jù)定義語言DDL createtable表 view視圖 index索引 syn同義詞 cluster聚簇 4 數(shù)據(jù)控制語言DCL 授權(quán) 數(shù)據(jù)查詢語言DQL基本結(jié)構(gòu)是由select子句 from子句 where子句組成的查詢塊 其書寫格式為 selectfromwhere 1 數(shù)據(jù)查詢語言DQL PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 數(shù)據(jù)類型 數(shù)字型 numbernumber 7 2 表示一共7位 小數(shù)點后是二位小數(shù) 字符型 charchar 120 包括空格 varchar 20 不包括空格 日期型 date布爾型 boolean 數(shù)據(jù)類型 3 類型轉(zhuǎn)換 類型轉(zhuǎn)換有 1 字符型轉(zhuǎn)換為數(shù)字型 char number2 數(shù)字型轉(zhuǎn)換為字符型 number char3 字符型轉(zhuǎn)換為日期型 char date4 日期型轉(zhuǎn)換為字符型 date char PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 4 表達式 算術(shù)表達式 1 常數(shù) 如10 20 30 05 2 變量 字段名 如NAME 3 用 聯(lián)結(jié)的表達式 關(guān)系表達式 關(guān)系表達式主要是關(guān)系運算符聯(lián)結(jié)的算術(shù)表達式而成 運算的結(jié)果是一個邏輯值 關(guān)系運算符有 大于 等于 大于等于 不等于邏輯表達式 邏輯表達式是由邏輯運算符聯(lián)結(jié)的表達式 邏輯表達式有 NOT AND OR 它們執(zhí)行的優(yōu)先級為 NOT AND OR 表達式 注意 在SQL中 算術(shù)表達式可以用在select子句和order子句中 而關(guān)系表達式和邏輯表達式?jīng)Q不能用在這兩個子句中 關(guān)系表達式和邏輯表達式可以用在where子句和having子句中 表達式中還可以用字符型和日期型表達式 在日期型中 以 天 為基本單位 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 二 SQL中的查詢語句 SQL語言的查詢分為兩大類 1 簡單查詢 簡單查詢只對一個表進行查詢 2 嵌套查詢 又稱子查詢 是對多個表的復(fù)雜查詢 查詢的總體結(jié)構(gòu)是 selectfrom where groupby having orderby PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 1 簡單查詢 select fromdaa01 顯示daa01表中所有 的列值 簡單查詢是指對一個單表的查詢 它分帶條件的查詢和不帶條件的查詢 以六區(qū)所管的井為例 1 不帶條件的簡單查詢 例如 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 帶條件的簡單查詢格式為 select屬性 組 form表 組 where 例1查詢daa01表中每口井的井號 selectjhfromdaa01 查詢結(jié)果如右圖 例2查詢daa01表中每口井的井號 礦名 selectjh kmfromdaa01 查詢結(jié)果如右圖 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 selectjh qkdy cw mqjb kmfromdaa01 查詢結(jié)果如右圖 例3查詢daa01表中井號 區(qū)塊單元 層位 目前井別 礦名 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例4查詢射開井段頂深超過1000米的井的井號 區(qū)塊單元 層位 射開井段頂深 目前井別 礦名 selectjh qkdy cw skjdds1 mqjb kmfromdaa01whereskjdds1 1000 查詢結(jié)果如右圖 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例5查詢射開井段頂深超過1000米的井的所有中心站 selectdmfromdaa01whereskjdds1 1000 查詢結(jié)果如右圖 例6查詢射開井段頂深超過1000米的井的所有中心站 并消去重復(fù)值 selectdistinctdmfromdaa01whereskjdds1 1000 查詢結(jié)果如下圖 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例7查詢井號以 杜 打頭的井號的井號 隊名 計量站號 selectjh dm jlzhfromdaa01wherejhlike 杜 查詢結(jié)果如右圖 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例8查詢射開井段頂深超過1000米的井的井號 區(qū)塊單元 層位 射開井段頂深 目前井別 其查詢結(jié)果按射開井段頂深的遞增次序排列 selectjh qkdy cw skjdds1 mqjbfromdaa01whereskjdds1 1000orderbyskjdds1 查詢結(jié)果如右圖 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例9查詢射開井段頂深超過1000米的井的隊名 井號 區(qū)塊單元 層位 射開井段頂深 目前井別 其查詢結(jié)果按隊名遞減次序排列 并且與按射開井段頂深的遞增次序排列 selectdm jh qkdy cw skjdds1 mqjbfromdaa01whereskjdds1 1000orderbydmdesc skjdds1 查詢結(jié)果如右圖 注 用ORDERBY語句對列排序 ASC 升序 缺省的 DESC 降序 ORDERBY語句在SELECT命令最后 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例10如果六區(qū)5站的每口井都加100m 查詢該站的每口井的井號和新加的射開井段頂深的值 selectdm jh skjdds1 skjdds1 100fromdaa01wheredm 六區(qū)5站 查詢結(jié)果如右圖 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 2嵌套的select語句查詢 所謂嵌套查詢 又稱 子查詢 是指在where子句中包括的查詢 它使得一系列簡單查詢可以構(gòu)成復(fù)雜的查詢 子查詢的查詢結(jié)果用于建立主查詢的查找條件 我們來看下面的列子 例1查詢dba01庫中的井號在daa01中 i 用嵌套查詢 selectjhfromdba01wherejhin selectjhfromdaa01wherekm 采油作業(yè)六區(qū) ii 不用嵌套查詢 selectdba01 jhfromdba01 daa01wheredba01 jh daa01 jhandkm 采油作業(yè)六區(qū) PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例2查詢那些井和 曙1 37 43 井在同一中心站中 selectjh dmfromdba04wheredm selectdmfromdaa01wherejh 曙1 37 43 在這個例子中 首先要解決 曙1 37 43 在哪個中心站 這由子查詢完成 然后再在主查詢中查找和 曙1 37 43 在同一中心站中的其他全部井 這個查詢等價于兩個查詢 1 先查詢 曙1 37 43 在那一個中心站 selectdmfromdaa01wherejh 曙1 37 43 得到的結(jié)果是六區(qū)5站 2 然后再查詢在六區(qū)5站的井號 selectjh dmfromdba04wheredm 六區(qū)5站 子查詢可以是多層的 子查詢所存取的表可以是主查詢中所沒有存取的表 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例3查詢在 曙1 37 43 井中的區(qū)塊單元 selectqkdyfromdba04wheredm selectdmfromdaa01wherejh 曙1 37 43 當子查詢返回的值不是一個值而是一個集合時 就不能簡單地使用比較符了 此時必須根據(jù)語義在子查詢前加上ANY或ALL 或者使用集合關(guān)系操作符IN NOTIN等 若上面的列子位于 曙1 37 43 這個井的站不止一個 那么就應(yīng)將條件改成 wheredmnotin selectdmfromdaa01wherejh 曙1 37 43 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例4找出其它中心站中比六區(qū)5站中某一井產(chǎn)量高的井 速度較慢 selectjhfromdba04whereycyl any selectycylfromdba04wheredm 六區(qū)5站 andny 200508 andkm 采油作業(yè)六區(qū) anddm 六區(qū)5站 andny 200508 andkm 采油作業(yè)六區(qū) orderbyycyldesc 例5找出其它中心站中比六區(qū)5站中全部井產(chǎn)量都高的井 速度較慢 selectjhfromdba04whereycyl all selectycylfromdba04wheredm 六區(qū)5站 andny 200508 andkm 采油作業(yè)六區(qū) anddm 六區(qū)5站 andny 200508 andkm 采油作業(yè)六區(qū) orderbyycyldesc 從這幾個例子中可以看出 ALL等價于AND關(guān)系 ANY等價于OR關(guān)系 IN是屬于關(guān)系 NOTIN是不屬于關(guān)系 當字查詢返回的值多于一列時 主查詢的where子句中的列名要在擴號中 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例6查找與 曙1 38 更037 有相同的計量站號和中心站號的井號 層位 和區(qū)塊單元 selectjh cw qkdyfromdaa01where jlzh dm selectjlzh dmfromdaa01wherejh 曙1 38 更037 selectjh dm ycylfromdba04wheredm selectdmfromdba04wherejh 曙1 34 548 orycyl selectycylfromdba04wherejh 曙1 34 548 例7查找與 曙1 34 548 單位相同或者月產(chǎn)油量比它高的井號 在書寫時要注意 多個列的位置要對應(yīng)正確 SQL允許將基本select查詢塊組合成較復(fù)雜的命令 一個查詢的where子句可以包含標準查找條件 連接條件 函數(shù)等 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例8查找月產(chǎn)油量比 杜813 興平51 高 且在2005 7 26日投產(chǎn)的井號 selectdba04 jh dba04 dm ycyl tcrqfromdba04 daa01wheretcrq 26 jul 2005 anddba04 jh daa01 jhandycyl selectycylfromdba04wherejh 杜813 興平51 子查詢中不能有orderby子句 因為orderby子句只能改變查詢結(jié)果數(shù)據(jù)顯示的順序 并不改變存儲的順序 子查詢和主查詢可以同步操作 在上面的例子中 子查詢都是先確定的 然后再以此作為主查詢的條件 但有時子查詢需要根據(jù)主查詢進行計算 然后再將其查詢結(jié)果影響主查詢 這種情況稱為主查詢和子查詢的同步操作 參見下例 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例9查找所有月產(chǎn)油量高于所在單位平均月產(chǎn)油量的井號 selectdm jh ycylfromdba04awhereycyl selectavg ycyl fromdba04wherea km kmandkm 采油作業(yè)六區(qū) andny 200508 andkm 采油作業(yè)六區(qū) andny 200508 用主查詢選取的單位在子查詢中計算平均產(chǎn)量 然后用該平均產(chǎn)量判斷主查詢所選取的單位是否滿足條件 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 3IN和OR的用法 例查詢 六區(qū)5站 或者 六區(qū)6站 的所有井號 礦名 此查詢有三種實現(xiàn)方法 1 可以在where子句中用or來實現(xiàn) selectjh kmfromdaa01wheredm 六區(qū)5站 ordm 六區(qū)6站 2 可以在where子句中用in來實現(xiàn) selectjh km dmfromdaa01wheredmin 六區(qū)5站 六區(qū)6站 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 3 可以在where子句中用union來實現(xiàn) selectjh km dmfromdaa01wheredm 六區(qū)5站 unionselectjh km dmfromdaa01wheredm 六區(qū)6站 查詢結(jié)果如右圖 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 4ANY和ALL的用法 在嵌套select語句中 當子查詢結(jié)果是一組值時 any和all可以與子查詢前面的比較運算符一起使用 關(guān)于any和all的用法請注意兩點 寫查詢時 不要將any和all錯誤的理解為英語中通常意義下的any和all 而要按它們在技術(shù)上專門的定義理解 in和 any 的意義相同 notin和 all 的意義相同 例找出至少超過 采油作業(yè)六區(qū) 中 六區(qū)6站 的每個站所在的隊名和井號 此查詢有兩種實現(xiàn)方法 1 用any來實現(xiàn) selectdm jhfromdba04whereny 200508 andkm any selectkmfromdba04wheredm 六區(qū)6站 andny 200508 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 用min函數(shù)來實現(xiàn) selectdm jhfromdba04whereny 200508 andkm any selectmin km fromdba04wheredm 六區(qū)6站 andny 200508 查詢結(jié)果如右圖 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 5BETWEEN和NOTBETWEEN的用法 between操作符給出查詢范圍內(nèi)的某些列 而notbetween則給出查詢選擇范圍之外的某些列 例1找出8月份六區(qū)月產(chǎn)油量在400和600之間的所有井 selectjh qkdy ycylfromdba04whereycylbetween400and600andny 200508 andkm 采油作業(yè)六區(qū) 例2找出8月份六區(qū)月產(chǎn)油量不在400和600之間的所有井 selectjh qkdy ycylfromdba04whereycylnotbetween400and600andny 200508 andkm 采油作業(yè)六區(qū) PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 6LIKE和NOTLIKE的用法 例2找出以 4 結(jié)尾的井號 select fromdaa01wherejhlike 4 andkm 采油作業(yè)六區(qū) 例3找出以 杜 開頭 后面有三個字符的井號 select fromdaa01wherejhlike 杜 andkm 采油作業(yè)六區(qū) 注意 代表一個字符 例4找出所有不以 曙 開頭的井號 select fromdaa01wherejhnotlike 曙 andkm 采油作業(yè)六區(qū) 例1找出以 曙 開頭的井號 like操作符在where中列出了一些特殊的字符 可用select子句去找?guī)в羞@些字符的字段 而notlike的意義同like正好相反 select fromdaa01wherejhlike 曙 andkm 采油作業(yè)六區(qū) 注意 代表0或多個字符 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 7NYLL和NOTNULL的用法 null空值不代表任何一個數(shù)值 不是一個數(shù)字 也不分類型 例1找出曾用井號是空的井 select fromdaa01wherecyjhisnullandkm 采油作業(yè)六區(qū) 例2找出曾用井號是非空的井 select fromdaa01wherecyjhisnotnullandkm 采油作業(yè)六區(qū) PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 2 8GROUPBY HAVING及ORDERBY的用法 例1計算中心站的月產(chǎn)量 selectdm sum ycyl fromdba04whereny 200508 andkm 采油作業(yè)六區(qū) groupbydm 例2計算中心站的月產(chǎn)量 平均產(chǎn)量 最大產(chǎn)量和最低產(chǎn)量 selectdm sum ycyl round avg ycyl 0 max ycyl min ycyl fromdba04whereny 200508 andkm 采油作業(yè)六區(qū) groupbydm 每一個單位為一組 返回一個記錄 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例3計算每個中心站中每個計量站各有多少井 selectdm jlzh count fromdaa01wherekm 采油作業(yè)六區(qū) groupbydm jlzh 例4查詢哪些中心站月產(chǎn)量超過6000噸 selectdm sum ycyl fromdba04whereny 200508 andkm 采油作業(yè)六區(qū) groupbydmhavingsum ycyl 6000 要特別注意having子句和where子句的區(qū)別 where子句是用來指定表中元組所應(yīng)滿足的條件 只有那些滿足where條件的元組才能被選擇出來 也才能被排序 orderby 或被分組 groupby 而having子句是用來指定每一分組所應(yīng)滿足的條件 只有滿足having條件的那些組才能在結(jié)果中顯示 因此 having條件必須是描述分組性質(zhì)的屬性 見例5 有時 我們只希望選擇滿足一定條件的分組 這時可以使用having子句來說明 見下面例4 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例5having子句與where子句的混合使用 selectdm qkdy sum ycyl fromdba04whereny 200508 andkm 采油作業(yè)六區(qū) andrcbzisnotnullgroupbydm qkdyhavingqkdy 杜84東 andsum ycyl 6000orderbydm 在這個查詢中 首先where子句說明只有那些能夠獲得產(chǎn)量的井才能作進一步的分組 groupby子句將所有滿足where子句的元組按照dm和qkdy這兩個屬性進行分組 而having子句則指出在這些分組中 我們只關(guān)心那些非 杜84東 的 而且月總產(chǎn)量超過6000噸的組 只有這些分組才是我們最后所要的 將這些分組按dm的值排序就是查詢的結(jié)果 在這里 having子句中出現(xiàn)的都是分組屬性 盡管dm和qkdy都是個體屬性 每口井只有一個值 由于是按dm和qkdy進行的分組 所以qkdy就升級為組的屬性了 在下面的例子中 應(yīng)注意select子句中各項的一致性 在出現(xiàn)groupby子句時必須全部為分組屬性 否則會出現(xiàn)錯誤 見例6和例7 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例6having子句與select子句的混合使用 selectjh sum rcyl fromdba01whereto char rq yyyymm 200509 andjhin selectjhfromdaa01wherekm 采油作業(yè)六區(qū) groupbyjhhavingjhlike 曙 這是正確的分組 例7having子句與select子句的限制 selectrcylfromdba01whereto char rq yyyymm 200509 andjhin selectjhfromdaa01wherekm 采油作業(yè)六區(qū) groupbyjh 這是錯誤的分組 盡管根據(jù)jh分組 每個組都只有一個元組 因此從語義上說 rcyl既能描述分組中的個體 也能描述分組 但從語法上說 rcyl只能描述分組中的個體 只有sum rcyl 才是描述分組性質(zhì)的 所以以下的查詢才是正確的 PowerBuilder中的select語句的使用地質(zhì)研究所開發(fā)信息室 例8查詢每個中心站的月總產(chǎn)量和平均產(chǎn)量 selectsum rcyl fromdba01whereto char rq yyyymm 200509 andjhin selectjhfromdaa01wherekm 采油作業(yè)六區(qū) groupbyjh selectdm sum ycyl
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工會職工技能考試試題及答案
- 2025年環(huán)境保護政策與法規(guī)知識考核試卷及答案
- 2025年金融投資與資本市場考試試卷及答案
- 2025年臨床執(zhí)業(yè)醫(yī)師考試試題及答案
- 2025年護理學(xué)基礎(chǔ)知識知識考核試題及答案
- 2025年企業(yè)管理與運作試卷及答案
- 2025年國際金融與投資專業(yè)考試題及答案
- 2024北京房山區(qū)六年級畢業(yè)考英語試題及答案
- 2025年度房屋抵押貸款合同模板
- 房屋漏水修理協(xié)議書
- 建筑工程質(zhì)量管理試題及答案
- 2025年保密教育線上培訓(xùn)考試試題及答案
- 2025年海南會考試題及答案地理
- JJG 693-2011可燃氣體檢測報警器
- 中外政治思想史-形成性測試三-國開(HB)-參考資料
- 職業(yè)衛(wèi)生評價重要知識點概要
- ISO17025:2017檢測和校準實驗室能力的通用要求( 中英對照版)
- Q∕GDW 12157-2021 應(yīng)急培訓(xùn)演練基地建設(shè)與評價規(guī)范
- 胃鏡操作規(guī)范課件
- 醫(yī)用診斷數(shù)字減影血管造影(DSA)性能檢測操作規(guī)程
- 風(fēng)機基礎(chǔ)降水專項施工
評論
0/150
提交評論