




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第九章結構化查詢語句(SQL)本章要點9.1SQL語言的基本概述9.2數據定義9.3數據操縱9.4數據管理9.5SQL中的數據查詢語句1.綜合統一
SQL語言集數據定義(DDL)、數據操縱(DML)、數據管理(DCL)的功能于一體,語言風格統一,可以獨立完成數據庫的全部操作,包括定義關系模式、錄入數據及建立數據庫、查詢、更新、維護數據、數據庫的重新構造、數據庫安全性等一系列操作的要求,為數據庫應用系統開發者提供了良好的環境。2.高度非過程化
用戶只需提出“做什么”,不必指明“怎么做”3.面向集合的操作方式4.以同一種語法結構提供兩種使用方式:交互式或程序中5.語言簡潔,易學易用9.1.1SQL語言的特點9.1.2SQL語言的基本概念
SQL語言支持關系型數據庫的三級模式結構。其中外模式對應于視圖(View)和部分基本表(BaseTable),模式對應于基本表,內模式對應于存儲文件。基本表是本身獨立存在的表,在SQL語言中一個關系對應一個表。一些基本表對應一個存儲文件,一個表可以帶若干索引,索引存放在存儲文件中。存儲文件的邏輯結構組成了關系型數據庫的內模式。而存儲文件的物理文件結構是任意的。視圖是從基本表或其他視圖中導出的表,它本身不獨立存儲在數據庫中,也就是說數據庫只存放在視圖的定義而不存放視圖對應的數據,這些數據仍存放在導出視圖的基本表中,因此視圖是一個虛表。9.2數據定義數據定義語言DDL用于執行數據定義的操作,如創建或刪除表、索引和視圖之類的對象。由CREATE、DROP、ALTER命令組成,完成數據庫對象的建立(CREATE)、刪除(DROP)和修改(ALTER)。9.2.1定義(創建)表【格式】CREATETABLE[FREE]<表名>(<字段名1><數據類型>[(<寬度>[,<小數位數>])][域完整性約束][NULL|NOTNULL][,<字段名2>…])【功能】定義(也稱創建)一個表。示例【例9-1】創建一個自由表表STUD(學生信息表),它由以下字段組成:學號(C,10),姓名(C,8),性別(C,2)CREATETABLESTUDFREE(學號C(10),姓名C(10),性別C(2)LISTSTRUCTURE【例9-2】創建一個數據庫表SC(課程成績表),它由以下字段組成:學號(C,10);課程號(C,2)。Opendatabase課程成績CREATETABLESC(學號C(10),課程號C(2)NULL)LISTSTRUCTURE9.2.2修改表【格式1】ALTERTABLE<表名>ADD<新字段名><數據類型>[(<寬度>[,<小數位數>])]【格式2】ALTERTABLE<表名>ALTER<字段名><數據類型>[(<寬度>[,<小數位數>])][有效性規則]【格式3】ALTERTABLE<表名>DROP<字段名>【功能】修改表結構。【例9-3】在課程成績表SC中,增加一個成績字段變量(N,3)。ALTERTABLESCADD成績N(3)ALTERTABLESCALTER成績N(4)LISTSTRUCTURE【例9-4】在課程成績表SC中,增加一個成績字段變量(N,3)。OPENDATABASE課程成績ALTERTABLESCALTER成績N(4)CHECK;成績>520ERROR“成績大于520分”LISTSTRUCTUREALTERTABLESCALTER成績DROPCHECKALTERTABLESCALTER成績SETDEFAULT521ALTERTABLESCDROPCOLUMN成績【格式】DROPDATABASE<數據庫名>【功能】刪除指定數據庫的結構和數據。【說明】謹慎使用。9.2.4刪除表【格式】DROPTABLE<表名>【功能】刪除指定表的結構和內容(包括在此表上建立的索引)。【說明】如果只是想刪除一個表中的所有記錄,則應使用DELETE語句。9.2.3刪除數據庫數據操縱語言是完成數據操作的命令,一般分為兩種類型的數據操縱,它們統稱為DML:●數據檢索(常稱為查詢):尋找所需的具體數據。●數據修改:添加、刪除和改變數據。數據操縱語言一般由INSERT(插入)、DELETE(刪除)、UPDATE(更新),SELECT(檢索,又稱查詢)等組成,由于SELECT比較特殊,所以一般又將它以查詢(檢索)語言單獨出現。9.3數據操縱【格式1】INSERTINTO<表名>[(<字段名表>)]VALUES(<表達式表>)【格式2】INSERTINTO<表名>FROMARRAY<數組名>|FROMMEMVAR【功能】在指定的表文件末尾追加一條記錄。格式1用表達式表中的各表達式值賦值給<字段名表>中的相應的各字段。格式2用數組或內存變量的值賦值給表文件中各字段。【說明】如果某些字段名在INTO子句中沒有出現,則新記錄在這些字段名上將取空值(或默認值)。但必須注意的是,在表定義說明了NOTNULL的字段名不能取空值。9.3.1插入記錄<字段名表>:指定表文件中的字段,缺省時,按表文件字段的順序依次賦值。<表達式表>:指定要追加的記錄各個字段的值。【例9-5】在表文件STUD的末尾追加三條記錄。***用表達式方式追加第一條記錄***INSERTINTOSTUD(學號,姓名)VALUES(“011110”,“李建國”)DIMENSIONDATA(8)DATA(1)="011103"DATA(2)="李寧"DATA(3)="女"DATA(4)="電0134"DATA(5)="02"DATA(6)="江西九江"DATA(7)={^1985/06/15}DATA(8)=.F.INSERTINTOSTUDFROMARRAYDATA***用數組方式追加第二條記錄***學號="011202"姓名="趙娜"性別="女"班級名="英0112"系別代號="03"地址="廣西南寧"出生日期={^1984/02/21}是否團員=.F.INSERTINTOSTUDFROMMEMVARLIST***用內存變量方式追加第三條記錄***【格式】UPDATE<表文件名>SET<字段名1>=<表達式>[,<字段名2>=<表達式>…][WHERE<條件>]【功能】更新指定表文件中滿足WHERE條件子句的數據。其中SET子句用于指定列和修改的值,WHERE用于指定更新的行,如果省略WHERE子句,則表示表中所有行。【說明】更新操作又稱為修改操作。【例9-6】將成績表(SC)中,所有課程號為02的成績各加5分。UPDATESCSET成績=成績+5;WHERE課程號="02"9.3.2更新記錄命令9.3.3刪除記錄【格式】DELETEFROM<表名>WHERE<表達式>【功能】從指定的表中刪除滿足WHERE子句條件的所有記錄。如果在DELETE語句中沒有WHERE子句,則該表中的所有記錄都將被刪除。【說明】這里的刪除是邏輯刪除,即在刪除的記錄前加上一個刪除標記“*”。【例9-7】刪除STUD表中所有性別為男的記錄。DELETEFROMSTUDWHERE性別=“男”數據管理(也稱數據控制)語言是用來管理(或控制)用戶的訪問權限的。由GRANT(授權)、REVOTE(回收)命令組成。而VisualFoxPro6沒有這種權限管理。9.4數據管理9.5SQL中的數據查詢語句數據庫中的數據很多時侯是為了查詢的,因此,數據查詢是數據庫的核心操作。而在SQL語言中,查詢語言中有一條查詢命令,即SELECT語句。9.5.1基本查詢語句【格式】SELECT[ALL|DISTINCT]<字段列表>FROM<表>【功能】無條件查詢。【說明】ALL:表示顯示全部查詢記錄,包括重復記錄。DISTINCT:表示顯示無重復結果的記錄。9.5.2帶條件(WHERE)的查詢語句【格式】SELECT[ALL|DISTINCT]<字段列表>FROM<表>[WHERE<條件表達式>]【功能】從一個表中查詢滿足條件的數據。【例1】查詢學生的基本信息。
SELECT*FROM學生【例2】查詢學生的年齡信息。
SELECT學號,姓名,year(date())-year(出生日期)
AS年齡FROM學生【例3】顯示學生表中所有男生記錄的學號,姓名和性別字段值。SELECT學號,姓名,性別FROM學生WHERE性別="男"【例4】顯示學生表中出生日期在85年到86年之間的學生的學號,姓名,出生日期。SELECT學號,姓名,出生日期;FROM學生;WHERE出生日期
BETWEEN{^1985-01-01}AND{^1986-12-31}【例5】顯示STUD表中姓李的學生的學號,姓名,出生日期。SELECT學號,姓名,出生日期;FROM學生;WHERE姓名
LIKE“李%”9.5.3SQL的復雜查詢在一個數據庫中的多個表之間一般都存在著某些聯系,在一個查詢語句中同時涉及到兩個或兩個以上的表時,這種查詢稱之為連接查詢(也稱為多表查詢)。在多表之間查詢必須處理表與表之間的連接關系。
SELECT[ALL|DISTINCT]<字段列表>FROM<表1>[,表2…..]WHERE<條件表達式>1、簡單連接查詢【例1】查詢男學生的成績信息,包括學號,姓名,成績。SELECTa.學號,a.姓名,b.成績;FROM學生a,成績b;WHEREa.學號=b.學號AND
a.性別=“男”【例2】查詢并顯示各個學生所學課程的情況。SELECTa.學號,a.姓名,c.課程名;FROM學生a,成績b,課程c;WHEREa.學號=c.學號.AND.c.課程號=b.課程號2.嵌套查詢在SQL語句中,一個SELECT-FROM-WHERE語句稱為一個查詢塊。將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢或子查詢。【例1】顯示“王波”所在班級的學生名單。SELECT學號,姓名,班級;FROM學生;WHERE班級=(SELECT班級FROMSTUDWHERE姓名=“王波”)【例2】查詢女生成績信息,包括學號,課程號,成績。Sele*from成績where學號in(sele學號;From學生where性別=“女”3.超聯接查詢SELE…….FROMTABLEINNER[LEFT][RIGHT][FULL]JOINTABLEON條件WHERE……...(1)內部聯接:普通聯接,只有滿足條件的記錄出現在結果。(2)左聯接:滿足條件的記錄出現在結果,同時第一個表不滿足條件的記錄也出現。(3)右聯接:滿足條件的記錄出現在結果,同時第二個表不滿足條件的記錄也出現。(4)完全聯接:不管是否滿足聯接條件的記錄全出現在結果SELECTa.學號,b.課程名,b.成績;FROM成績a[INNER][LEFT][RIGHT][FULL]JOIN
;
課程bONa.課程號=b.課程號4、簡單計算查詢主要函數:計數COUNT();求和SUM();平均值AVG();最大值MAX();最小值MIN()。[例如]查詢最高分的學生信息。4.排序與分組查詢【格式】SELECT[ALL|DISTINCT]<字段列表>FROM<表>[WHERE<條件>[GROUPBY<分類字段列表>…][HAVING<過濾條件>][ORDERBY<排序項>[ASC|DESC]【功能】包括有排序、函數運算和謂詞演算【例1】按出生日期降序顯示STUD表中的學號,姓名,出生日期。SELECT學號,姓名,出生日期;FROMSTUD;ORDERBY
出生日期
DESC【例2】按成績升序顯示SC表中的學號,課程號,成績。SELECT學號,課程號,成績;FROMSC;ORDERBY成績【例3】按班級分類顯示學生的姓名,課程名,成績,同一班級按分數排序。SELECTa.姓名,a.班級名,c.課程名,b.成績;FROMSTUDa,SCb,COURSEc;WHEREa.學號=b.學號ANDb.課程號=c.課程號;ORDERBYa.班級名,b.成績;【例4】顯示各班總人數。SELECT班級名,COUNT(*)AS總人數;FROMSTUD;GROUPBY班級名5、集合并運算【例】顯示計算機系的學生及所有男學生。SELECT學號,姓名,系別代號,性別;FROMSTUD;WHERE系別代號="01"UNION;SELECT學號,姓名,系別代號,性別;FROMSTUD;WHERE性別="男"【例1】顯示計算機系男生的名單。SELECT學號,姓名,系別代號,性別;FROMSTUD;WHERE系別代號=“01”AND性別=“男”【例2】顯示既選修了01課程又選修了02課程學生的名單。SELECT學號;FROMSC;WHERE課程號=“01”AND學號IN;(SELECT學號FROMSCWHERE課程號=“02”)【例3】顯示計算機系非男生的名單。SELECT學號,姓名,系別代號,性別;FROMSTUD;WHERE系別代號=“01”AND性別=“女”【例4】顯示選修了01課程而沒有選修02課程學生的名單。SELECT學號;FROMSC;WHERE課程號=“01”AND學號NOTIN;(SELECT學號FROMSCWHERE課程號=“02”)7.查詢去向默認情況下,查詢輸出到一個瀏覽窗口,用戶在“SELECT”語句中可使用[INTO<目標>|TOFILE<文件名>|TOSCREEN|TOPRINTER]子句選擇查詢去向:INTOARRAY數組名:將查詢結果保存到一個數組中。CURSOR<臨時表名>:將查詢結果保存到一個臨時表中。DBF|TABLE<表名>:將查詢結果保存到一個永久表中。TOFILE<文件名>[ADDITIVE]:將查詢結果保存到文本文件中。如果帶“ADDITIVE”關鍵字,查詢結果以追加方式添加到<文件名>指定的文件,否則,以新建或覆蓋方式添加到<文件名>指定的文件。TOSCREEN:將查詢結果保在屏幕上顯示。TOPRINTER:將查詢結果送打
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國基礎護理操作模型行業市場發展監測及投資潛力預測報告
- 2025年 湖北公務員考試行測試題行政執法類附答案
- 2025年 廣西醫科大學第二附屬醫院招聘筆試試題附答案
- 2023-2029年中國特種水產行業市場深度研究及投資戰略咨詢報告
- 2025年 北海市城市開發投資集團有限公司招聘考試筆試試題附答案
- 清潔生產管理清潔生產審核報告染料廠
- 2025年中國家居門簾行業市場發展前景及發展趨勢與投資戰略研究報告
- 2025年水飛薊素項目節能評估報告(節能專)
- 中國云服務行業市場發展現狀及前景趨勢與投資分析研究報告(2024-2030)
- 2025年中國布邊紗夾壓腳行業市場發展前景及發展趨勢與投資戰略研究報告
- 教師成長典型案例教師個人成長案例
- 不斷把人民對美好生活的向往變為現實PPT實現人民對美好生活向往的路徑PPT課件(帶內容)
- GB/T 9286-2021色漆和清漆劃格試驗
- GB/T 33084-2016大型合金結構鋼鍛件技術條件
- GB/T 17587.3-1998滾珠絲杠副第3部分:驗收條件和驗收檢驗
- 五年級語文下冊詞句段運用專項復習教學設計
- 優秀集體評選-會計12級
- 中班科學課件:《各種各樣的鳥》
- 半條被子(紅軍長征時期故事) PPT
- 邀請函單頁模板
- 人工肝治療指南課件
評論
0/150
提交評論