版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、. 第二十二章 SELECT語(yǔ)句回顧本章假設(shè)你已有SQL SELECT語(yǔ)句的知識(shí),將通過(guò)舉例說(shuō)明怎樣在INFORMIX-4GL中使用SELECT語(yǔ)句。SELECT語(yǔ)句用于從數(shù)據(jù)庫(kù)表中檢索信息。SELECT語(yǔ)句有七個(gè)子句,它們必須按順序出現(xiàn):l l SELECT最小化語(yǔ)法:用于列出你想從表中檢索的字段。帶select_list的SELECT回答了“你想看哪些字段”的問(wèn)題。l l FROM最小化語(yǔ)法:FROM用于指示從哪兒找SELECT請(qǐng)求的字段,F(xiàn)ROM語(yǔ)句回答了“哪個(gè)表中存在這些字段”的問(wèn)題。l l WHERE:W
2、HERE限制了返回的行數(shù)。你可以描述一個(gè)查找條件,返回滿(mǎn)足條件的數(shù)據(jù)。WHERE回答了“你想看哪些行“的問(wèn)題。l l 請(qǐng)求連接的WHERE:WHERE也可用于表的連接。當(dāng)SELECT包括多表中的字段時(shí),必須進(jìn)行連接。l l GROUP BY:它把返回的行進(jìn)行組織,分成邏輯組。例如按order_num對(duì)所有數(shù)據(jù)分組。l l HAVING:它是比GROUP BY更嚴(yán)格的分組。例如,在進(jìn)行了GROUP BY order_num,但只想看total_price大于1000.00的組時(shí)用。l l ORDER BY:ORDER BY 把返回的行排序。排序是按列在ORDER BY子句后面的字段進(jìn)行的。l l
3、 INTO TEMP:它把返回的行放在臨時(shí)表中。這個(gè)表可以和別的表進(jìn)行連接。單表選擇在上圖中有幾個(gè)單表SELECT語(yǔ)句的例子。l l 例子A:從Customer表SELECT 三個(gè)字段。由于沒(méi)有WHERE,所以返回所有的數(shù)據(jù)行。這個(gè)SELECT是最小化語(yǔ)法,只有SELECT和FROM子句。l l 例子B:用了“*”表示取出所有字段,F(xiàn)ROM表示從哪個(gè)表檢索。l l 例子C:它帶有一個(gè)ORDER BY選項(xiàng),它從Stock表檢索所有數(shù)據(jù)行,顯示時(shí)按description排序,若兩行或以上有相同的description,這些行將按unit_price排序。l l 例子D:一般用ORDER BY排序是
4、按升序進(jìn)行的,即字符AZ,數(shù)字由低到高。但若使用了DESC保留字就變成了降序排。對(duì)要按降序排的每個(gè)字段都要用一次DESC保留字。帶WHERE子句的SELECTWHERE子句用于限制返回的行數(shù)。上圖例子中即為帶WHERE子句的SELECT語(yǔ)句。l l 例子A:SELECT說(shuō)明返回哪些字段,F(xiàn)ROM說(shuō)明從哪個(gè)表取數(shù),WHERE子句限制返回的只是State不等于“CA”的行。l l 例子B:其中的BETWEEN保留字描述了一個(gè)范圍。它表示大于或等于小值,小于或等于大值的條件。l l 例子C:保留字IN用于列出字段的有效值。在例子中,選出行的state值必須為“CA”、“NV”、“OR”之一。IN可替
5、換多個(gè)OR語(yǔ)句,它相當(dāng)于state = “CA” OR state = "NV” OR state=“OR”。l l 例子D:用了IS NULL來(lái)選擇字段中存在空值的行。 這些例子中的保留字可通過(guò)加上NOT保留字而轉(zhuǎn)變意義。如:NOT INNOT BETWEENIS NOT NULL用通配符查找字符MATCHES保留字可用于字符域的通配查找。它用在SELECT語(yǔ)句的WHERE子句。上圖例子中就用到了MATCHES。l l 例子A:* 用于通配零或多個(gè)字符。例子中表示取出description滿(mǎn)足包含小寫(xiě)tennis及后跟任意數(shù)字、字符的行。l l 例子B:?是單字符通配符。
6、例子表示找出manu_code字段含三個(gè)字符的行,第一、三個(gè)字符可以是任意字符,但第二個(gè)字符必須是大寫(xiě)R。l l 例子C:符用于列出對(duì)字符串中某位置可能的值。例子查找manu_name為任意長(zhǎng)度的數(shù)據(jù)行,但第一位必須是A到N的字符,其后可以跟任意字符。l l 例D:此例用多個(gè)了表示多個(gè)獨(dú)立的字符,它找出company為任意長(zhǎng)度的數(shù)據(jù)行,但必須含有sport這個(gè)詞,只是不區(qū)別大小寫(xiě)。 MATCHES 可通過(guò)NOT MATCHES改為反意,對(duì)于可通過(guò)在第一個(gè)位置加表示NOT,例如“HA*”表示第一個(gè)字符是非H或A的其它任意字符。從多表SELECT的連接規(guī)則為了從多表取值,必須對(duì)表進(jìn)行連接
7、。即包含的表要滿(mǎn)足連接條件,這些要求列在上圖中。主鍵(Primary key)主鍵(PK):是表中的唯一標(biāo)識(shí)行的字段,每個(gè)表必須有主鍵。外鍵(Foreign key)外鍵(FK):是在別的表中為主鍵的字段,它用于連接。兩表SELECT當(dāng)從兩表取值時(shí),在WHERE中要對(duì)兩表連接。連接一般在Primary鍵和foreign鍵之間建立。如上圖例子中SELECT語(yǔ)句中含有兩個(gè)表。l l 例子A:SECECT語(yǔ)句從manufact和stock表取值。這兩表就要滿(mǎn)足連接條件,WHERE用于為兩表建連接。若兩表中某行的manu_code相同,即可取出此行中的值。l l 例子B:SELECT語(yǔ)句用custom
8、er*表示取出customor表中的所有字段值,另外再?gòu)膐rder表取兩個(gè)字段值的同時(shí),WHERE子句用于把兩表按customer_num連接起來(lái),若想加上其它的查找條件,只用加上AND保留字,再加上描述條件。多表SELECT從多表取值與從兩表取值基本相同,只要把各個(gè)表連接起來(lái)即可。上例的信息即從customer、orders和item表取數(shù)據(jù),WHERE用于把customer和orders表,orders和item表連接起來(lái)。注意:customer_num和order_num必須加上表名前綴。帶聚合函數(shù)的SELECT帶聚合函數(shù)的SELECT與其它的SELECT語(yǔ)句不同。在SELECT語(yǔ)句中用
9、了聚合函數(shù),就不再關(guān)心返回的某一行的信息了。l l COUNT(*):返回有多少滿(mǎn)足條件的行。l l MAX(字段名):返回給定字段的最大值l l MIN(字段名):返回給定字段的最小值l l SUM(字段名):返回給定字段的所有值的和l l AVG(字段名):返回給定字段的平均值在INFORMIX-4GL程序中,SELECT語(yǔ)句返回的值必須放在程序變量中,所以必須加上INTO子句。上圖例子說(shuō)明了從customer表取出所有字段的值,并把結(jié)果存放在變量gr_customer.*中。WHERE 子句用于限制只返回一行數(shù)據(jù)。若返回多行,必須增加代碼來(lái)處理,以后再講這種情況的處理辦法。SQLCA.S
10、QLCODE可用于判斷是否找到滿(mǎn)足條件的數(shù)據(jù)。當(dāng)執(zhí)行完SELECT語(yǔ)句,SQLCA.SQLCODE為0,表示找到了數(shù)據(jù);若沒(méi)找到,SQLCA.SQLCODE值為100。WHENEVER語(yǔ)句的反映對(duì)于WHENEVER語(yǔ)句可不用檢測(cè)SELECT的SQLCA.SQLCODE。只是SQLCA.SQLCODE的值為負(fù)數(shù)時(shí)會(huì)發(fā)生錯(cuò)誤而中斷。對(duì)于SELECT語(yǔ)句的SQLCA. SQLCODE變量被設(shè)置為0或100,并不是錯(cuò)誤。SELECT語(yǔ)句執(zhí)行時(shí),若要取的數(shù)據(jù)被別人鎖住,SQLCA。SQLCODE會(huì)被設(shè)置為負(fù)值。在以后章節(jié)會(huì)講到這種情況的處理方法。程序?qū)嵗?#160;database stores
11、60;maindefine lr_customer record like customer.*定義局部變量用于保存從客戶(hù)表取出的一行數(shù)據(jù)。open form cust_form from "customer"display form cust_form 設(shè)置循環(huán)提示用戶(hù)輸入一個(gè)有效的客戶(hù)號(hào)。while trueprompt "Enter a customer number: " for lr_customer.customer_num 下面的SELECT語(yǔ)句只返回一行數(shù)據(jù)。若返回多行則要編寫(xiě)別的代碼處理。select * into lr_customer.* from customerwhere customer_num = lr_customer.customer_num下面的語(yǔ)句用于判斷是否取到了數(shù)據(jù),若取到則退出循環(huán),顯示給用戶(hù);否則提
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流行業(yè)工作計(jì)劃范文
- 低??乒ぷ饔?jì)劃
- 酒店銷(xiāo)售部工作總結(jié)及計(jì)劃范文
- 2025年部門(mén)銷(xiāo)售主管工作計(jì)劃范文
- 醫(yī)院信息中心工作計(jì)劃范文
- 政研室工作計(jì)劃
- 《E芯片試產(chǎn)報(bào)告》課件
- 《大學(xué)有機(jī)化學(xué)》課件
- 合同 條款 內(nèi)部邏輯
- 投標(biāo)合同條款
- 安徽省合肥市包河區(qū)2023-2024學(xué)年三年級(jí)上學(xué)期語(yǔ)文期末試卷
- 【MOOC】新媒體文化十二講-暨南大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 2024-2025學(xué)年二年級(jí)數(shù)學(xué)上冊(cè)期末樂(lè)考非紙筆測(cè)試題(二 )(蘇教版)
- 2024年度智能制造生產(chǎn)線(xiàn)改造項(xiàng)目合同
- 2024年度食堂檔口承包合同(含菜品研發(fā))3篇
- DB32T 4578.2-2023 丙型病毒性肝炎防治技術(shù)指南 第2部分:患者管理
- 護(hù)理輪科心得
- 英語(yǔ)期末復(fù)習(xí)講座模板
- 北京市西城區(qū)2023-2024學(xué)年六年級(jí)上學(xué)期語(yǔ)文期末試卷
- 2025年蛇年年會(huì)匯報(bào)年終總結(jié)大會(huì)模板
- 九年級(jí)學(xué)業(yè)水平-信息技術(shù)考試試題題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論