資源描述:
《VF關(guān)系數(shù)據(jù)庫標準語言SQL.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、注:本課件授課內(nèi)容中標注的頁碼與《教程》一致?!傲?xí)題”來自《教程》,“練習(xí)”來自《一本通》第5章結(jié)構(gòu)化查詢語言(SQL)SQL概述P86同學(xué)們:SQL的內(nèi)容在筆試和上機考試中均占到大約30%的比例,此外它還是查詢和視圖的基礎(chǔ),因此是學(xué)習(xí)的重點也是難點。在講解本部分內(nèi)容時,以《VFP程序設(shè)計教程》第5章為主,要求大家課后一定要結(jié)合例題解析進行復(fù)習(xí)。雖然SQL對大家來說有一定的難度,但是熟能生巧,大家把書中所涉及的題目和課件中的例題都理解并且操作了,相信SQL這個難關(guān)一定能攻克。SQL是結(jié)構(gòu)化查詢語言StructureQueryLang
2、uage的縮寫。SQL包含了查詢功能、數(shù)據(jù)定義、數(shù)據(jù)操縱和數(shù)據(jù)控制功能,在VFP中沒有提供數(shù)據(jù)控制功能。SQL主要特點:P861.SQL是一種一體化語言。2.SQL是一種高度非過程化的語言。3.SQL語言非常簡潔。4.SQL語言可直接以命令方式交互使用,也可嵌入到程序設(shè)計語言中以程序方式使用。第四節(jié)數(shù)據(jù)查詢功能P94SELECT命令的特點:P941.可以自動打開數(shù)據(jù)庫、表文件加以查詢,而不需要事先用OPENDATABASE或USE命令打開。2.可以直接選取數(shù)據(jù)表中的數(shù)據(jù),而不需要事先用SETRELATION命令建立關(guān)聯(lián)。3.當需要的
3、索引文件不存在時,會自動建立暫存索引文件,以支持快速搜索技術(shù)(Rushmore)來查詢。4.其查詢結(jié)果可輸出到文件、表、屏幕或報表上,還可以轉(zhuǎn)換成統(tǒng)計圖表。命令格式:SELECT——FROM——WHEREP94可與LISTFIELDS——FOR——對照學(xué)習(xí)。關(guān)系操作:投影,選擇,聯(lián)接。說明:功能強大,語法靈活;要處理的數(shù)據(jù)表無須事先打開,通過FROM子句指明并打開。1.SELECT短語:說明要查詢的數(shù)據(jù);對應(yīng)的關(guān)系操作為投影,類似于FIELDS子句。2.FROM短語:說明要查詢的數(shù)據(jù)來自哪個或哪些表,可對單個表或多個表進行查詢;3.
4、WHERE短語:說明查詢條件;對應(yīng)的關(guān)系操作為選擇,類似于FOR子句。如是多表查詢還可能過該子句指明聯(lián)接條件,進行聯(lián)接。1.GROUPBY短語:用于對查詢結(jié)果進行分組,可利用它進行分組匯總;類似于TOTAL命令。2.HAVING短語:跟隨GROUPBY使用,它用來限定分組必須滿足的條件;3.ORDERBY短語:用于對查詢的結(jié)果進行排序;類似于SORT命令。示例數(shù)據(jù)庫:學(xué)生管理,包括三個表:學(xué)生,課程,選課(通過該表反映“學(xué)生”與“課程”之間“多對多”的聯(lián)系。)問題:請同學(xué)們分別指出三個表的主關(guān)鍵字。一、簡單查詢P95簡單查詢基于單個
5、表。例:基本查詢:1、列出學(xué)生信息SELE*FROM學(xué)生&&“*”號代表所有列。類似于:USE學(xué)生LIST2、列出學(xué)生的學(xué)號,姓名條件查詢:㈠常用運算符P951、列出男生學(xué)生的學(xué)號、姓名及生日SELE學(xué)號,姓名,生日FROM學(xué)生WHERE性別=”男”類似于USE學(xué)生LIST學(xué)號,姓名,生日FOR性別=”男”2、列出學(xué)分大于5的課程的信息SELE*FROM課程WHERE學(xué)分>5類似于USE學(xué)生LISTFOR學(xué)分>5習(xí)題:P95例5-11,5-12練習(xí):P9211、13㈡特殊運算符P951.BETWEEN…AND…意為“…和…之間”例:
6、查詢成績在80分到90分之間的選課信息。SELE*FROM選課WHERE成績BETWEEN80AND90等價于:SELE*FROM選課WHERE成績>=80AND成績<=90例:查詢成績不在80分到90分之間的選課信息。SELE*FROM選課WHERE成績NOTBETWEEN80AND901.LIKE是字符串匹配運算符,通配符“%”表示0個或多個字符,“_”表示一個字符。注意:不是“*”和“?”,不正確!例:從學(xué)生關(guān)系中查詢姓“黃”的學(xué)生信息。SELE*FROM學(xué)生WHERE姓名LIKE“黃%”不能寫成:SELE*FROM學(xué)生WHE
7、RE姓名="黃%"例:從學(xué)生關(guān)系中查詢不姓“黃”的學(xué)生信息。SELE*FROM學(xué)生WHERE姓名NOTLIKE“黃%”例:SELE*FROM學(xué)生WHERE姓名LIKE"黃_"SELE*FROM學(xué)生WHERE姓名LIKE"黃__"3、IN:相當于集合運算符∈。例:列出湖南和湖北的學(xué)生SELE*FROM學(xué)生WHERE籍貫IN(“湖南”,”湖北”)練習(xí):P929、10㈢使用空值進行查詢空值的概念:空值就是缺值或還沒有確定值,不能把它理解為任何意義的數(shù)據(jù)。比如表示價格的一個字段值,空值表示沒有定價,而數(shù)值0可能表示免費。空值與空(或空白)字
8、符串、數(shù)值0等具有不同的含義。例:假設(shè)在選課中有些學(xué)生某門課程還沒有考試,則成績?yōu)榭?。試找出尚未考試的選課信息。SELE*FROM選課WHERE成績ISNULL注:不能寫成“=NULL”例:試找出成績不為空的選課信息。SELE*FRO