




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
了解SQL語言功能理解SQL的表定義功能掌握SQL的基本查詢以及多表聯接查詢和嵌套查詢相關功能3.1SQL概述SQL語言,是用戶操作關系數據庫的通用語言,幾乎所有的關系型數據庫管理系統(tǒng)都支持SQL語言,VisualFoxPro也不例外,SQL已然成為業(yè)界的標準。SQL主要特點:綜合統(tǒng)一、高度非過程化、面向集合的操作方式、同一種語法結構,兩種使用方式、語言簡潔易用SQL主要功能SQL語言主要包括數據定義、數據操作和數據查詢以及數據控制等功能,本章將從數據定義、數據操作和數據查詢三個方面介紹VisualFoxPro所支持的SQL語言。3.1SQL概述3.2數據定義功能3.3數據操作功能3.4數據查詢功能3.5小結3.2數據定義功能
完整的SQL語言數據定義功能包括數據庫定義、表定義、視圖定義、存儲過程定義、觸發(fā)器定義和規(guī)則定義等。本節(jié)主要介紹VisualFoxPro所支持的SQL語言表定義功能:創(chuàng)建表、修改表結構和撤銷表的操作。3.2.1創(chuàng)建表——CREATETABLE命令格式:CREATETABLE|DBF<表名>(<字段名1><類型>[<字段寬度>[,<小數位數>])])[,<字段名2><類型>[(<字段寬度[,<小數位數>])]…)【例3.1】用SQL語句創(chuàng)建學生表“XS.DBF”。CREATETABLEXS(學號C(10),姓名C(8),性別C(2),出生日期D,籍貫C(12),民族C(20);專業(yè)C(20),班級C(20),院系代碼C(10),是否黨員L,個人簡歷M,照片G)【例3.2】用SQL語句創(chuàng)建課程表“KC.DBF”。CREATETABLEKC(課程號C(4),課程名C(20),學時數N(3,0))3.2.2修改表——ALTERTABLE命令格式1:ALTERTABLE<表名>ADD|ALTER[COLUMN]<字段名><類型>[(<寬度>[,<小數位>])]功能:用于添加或修改字段,ADD用于添加,ALTER用于修改字段。【例3.3】用SQL語句向學生表“XS.DBF”中添加家庭住址字段。
ALTERTABLEXSADD家庭住址C(30)命令格式2:
ALTERTABLE<表名>DROP[COLUMN]<字段名>
功能:用于刪除字段。【例3.4】用SQL語句刪除“XS.DBF”家庭住址字段。ALTERTABLEXSDROP家庭住址命令格式3:ALTERTABLE<表名>RENAME[COLUMN]<字段名1>TO<字段名2>功能:用于更改字段名稱。【例3.5】用SQL語句將“XS.DBF”表中的“班級”字段改名為“CLASS”。ALTERTABLEXSRENAME班級TOCLASS3.2.3撤銷表——DROPTABLE命令格式:DROPTABLE<表名>【例3.6】撤銷院系表“YX.DBF”。
DROPTABLEYX3.1SQL概述3.2數據定義功能3.3數據操作功能3.4數據查詢功能3.5小結3.3數據操作功能SQL數據操作功能主要包含表(或視圖)中數據的添加(INSERT)、更新(UPDATE)和刪除(DELETE)功能。3.3.1數據添加——INSERT命令格式1:INSERTINTO<表名>[(<字段名1>[,<字段名2>…])]VALUES(<表達式1>[,<表達式2>…])功能:在指定表的末尾添加一條新記錄。新記錄字段1的值為表達式1,字段2的值為表達式2,…。各表達式的值必須與對應字段的數據類型一致。如果所添加的新記錄全部字段均賦值,則可以省略字段名列表【例3.7】向成績表“CJ.DBF”中添加一條記錄。INSERTINTOCJVALUES("09714046","1006",76)【例3.8】向課程表“KC.DBF”中添加一條記錄。INSERTINTOKC(課程號,課程名)VALUES("1008","匯編語言")3.3.2數據更新——UPDATE命令格式如下:UPDATE<表名>SET<字段名1>=<表達式1>[,<字段名2>=<表達式2>[,…]][WHERE<條件>]功能:更新滿足條件的記錄中指定字段的屬性值。其中,WHERE子句指定要更新的記錄,缺省時表示針對全部記錄。【例3.9】將課程表“KC.DBF”中“匯編語言”課程的課時數修改為81課時。UPDATEKCSET學時數=81WHERE課程名="匯編語言“【例3.10】將學生表“XS.DBF”中牛芳菲的出生日期改為1990年2月3日,專業(yè)改為中醫(yī)。UPDATEXSSET出生日期={^1990-02-03},專業(yè)="中醫(yī)"WHERE姓名="牛芳菲"3.3.3數據刪除——DELETE命令格式如下:DELETEFROM<表名>[WHERE<條件>]功能:對指定表中符合條件的記錄進行邏輯刪除,缺省WHERE子句時,表示刪除所有記錄。【例3.11】邏輯刪除“CJ.DBF”中“1002”號課程的成績記錄。DELETEFROMCJWHERE課程號="1002"【例3.12】邏輯刪除“XS.DBF”中的所有男生記錄。DELETEFROMXSWHERE性別="男"3.1SQL概述3.2數據定義功能3.3數據操作功能3.4數據查詢功能3.5小結3.4數據查詢功能
數據查詢,是數據庫的核心操作。SQL語言具有強大的數據查詢功能,能夠進行單表查詢、多表聯接查詢和嵌套查詢。命令格式:SELECT[ALL│DISTINCT][<表別名>.]<表達式1>[AS<列標題1>][,<表別名>.]<表達式2>[AS<列標題2>...]FROM[<數據庫名1>!]<表名1>|<視圖1>[<本地別名1>][[INNER│LEFT[OUTER]│RIGHT[OUTER]│FULL[OUTER]JOIN[,<數據庫名2>!]<表名2>|<視圖2>[<本地別名2>]ON<聯接條件>…][[INTO<目標>][TOFILE<文件名>[ADDITIVE]│TOPRINTER[PROMPT]│TOSCREEN]][WHERE<條件表達式>][GROUPBY<分組表達式>[,<分組表達式>…]][HAVING<篩選條件>][UNION[ALL]<SELECT命令>][ORDERBY<關鍵字表達式>[ASC│DESC][,<關鍵字表達式>[ASC│DESC]…]][TOP<數值表達式>[PERCENT]]
整個SELECT-SQL語句的含義是,根據WHERE子句的條件表達式,從FROM子句指定的表或視圖中找出滿足條件的元組,再按照SELECT子句中的目標列表達式,選出元組中的對應字段列表,形成輸出結果。整個語句命令格式看起來非常復雜,不容易理解,但只要分解命令格式,理解其中的各個子句的功能和用法,再綜合應用就很容易掌握了。3.4.2簡單查詢1.字段的選取【例3.13】查詢“XS.DBF”中所有學生的學號、姓名、籍貫和專業(yè)。SELECT學號,姓名,籍貫,專業(yè)FROMXS查詢結果如圖所示:【例3.14】查詢“KC.DBF”中所有課程的信息。SELECT課程號,課程名,學時數FROMKC或者SELECT*FROMKC當查詢表中所有字段時,可以用“*”代表全體字段。查詢結果同表“KC.DBF”。2.使用選擇謂詞ALL/DISTINCT設定是否允許記錄重復如果在SELECT中沒有使用任何一個選擇謂詞,或使用了選擇謂詞ALL,查詢將返回符合條件的全部記錄,而且允許在查詢結果中包含重復記錄。而在字段列表使用DISTINCT,查詢結果中若有重復記錄則只保留一條。【例3.15】查詢“CJ.DBF”中成績不低于80分的課程的課程號。SELECTALL課程號FROMCJWHERE成績>=80【例3.16】查詢“CJ.DBF”中成績不低于80分的課程的課程號,并過濾重復記錄。SELECTDISTINCT課程號FROMCJWHERE成績>=803.使用WHERE子句查詢滿足條件的元組【例3.17】查詢“CJ.DBF”中“2001”號課程高于80分的成績記錄。SELECT*FROMCJWHERE課程號=”2001”AND成績>80【例3.18】查詢“CJ.DBF”中“1003”號課程成績在60分到80分范圍內的記錄。SELECT*FROMCJWHERE課程號=”1003”AND成績BETWEEN60AND80【例3.19】查詢”XS.DBF”中籍貫為合肥、南京或南昌的學生的學號、姓名、性別、出生日期、籍貫和專業(yè)。SELECT學號,姓名,性別,出生日期,籍貫,專業(yè)FROMXSWHERE籍貫IN('合肥','南京','南昌')【例3.20】查詢“KC.DBF”中,課程名稱包含“程序設計”的課程的相關記錄。SELECT*FROMKCWHERE課程名LIKE"%程序設計%"4.使用ORDERBY排序【例3.21】查詢“CJ.DBF”中“1002”號課程的考試成績,并按成績降序排列顯示結果。SELECT*FROMCJWHERE課程號="1002"ORDERBY成績DESC【例3.22】查詢“CJ.DBF”中“1002”號課程成績位于前三名的學生成績記錄。SELECT*FROMCJWHERE課程號="1002”;ORDERBY3DESCTOP33.4.3聯接查詢1.內聯接【例3.23】查詢醫(yī)藥貿易專業(yè)學生的選課情況,要求列出學生的學號、姓名、專業(yè)和課程號、成績。SELECTXS.學號,姓名,專業(yè),課程號,成績FROMXSJOINCJONXS.學號=CJ.學號;WHERE專業(yè)=”醫(yī)藥貿易”2.外聯接【例3.24】左聯接,即除滿足聯接條件的記錄出現在查詢結果中外,第一個表中不滿足聯接條件的記錄也出現在查詢結果中。如查詢所有課程的選課情況,包括已被選課程和未被選課程,列出課程的課程號、課程名、學生的學號和成績。SELECTKC.課程號,課程名,學號,成績FROMKCLEFTJOINCJ;ONKC.課程號=CJ.課程號【例3.25】右聯接,即除滿足聯接條件的記錄出現在查詢結果中外,第二個表中不滿足聯接條件的記錄也出現在查詢結果中。如上例查詢所有課程的選課情況。可以由右聯接實現,命令如下:SELECTKC.課程號,課程名,學號,成績FROMCJRIGHTJOINKC;ONCJ.課程號=KC.課程號3.全聯接
【例3.26】對CJ表與KC表進行全聯接查詢。SELECTKC.課程號,課程名,學號,成績FROMCJFULLJOINKCONCJ.課程號=KC.課程號;3.4.4分組與統(tǒng)計查詢SQL提供的聚合函數主要有:COUNT([DISTINCT]*):統(tǒng)計表中元組的個數。COUNT([DISTINCT]<字段名>):統(tǒng)計字段值個數。SUM([DISTINCT]<字段名>):計算字段值總和(必須是數值型字段)。AVG([DISTINCT]<字段名>):計算字段平均值(必須是數值型字段)。MAX([DISTINCT]<字段名>):求字段最大值。MIN([DISTINCT]<字段名>):求字段最小值。1.簡單計算查詢【例3.27】查詢所有學生的學號、姓名與年齡。SELECT學號,姓名,2011-YEAR(出生日期)AS年齡FROMXS2.使用聚合函數查詢【例3.28】統(tǒng)計“XS.DBF”中的學生總人數。SELECTCOUNT(*)FROMXS【例3.29】統(tǒng)計選修了課程的學生人數。SELECTCOUNT(DISTINCT學號)FROMCJ【例3.30】查詢學號為“10811023”的學生考試總成績和平均成績。SELECT學號,SUM(成績),AVG(成績)FROMCJWHERE學號=”10811023”【例3.31】查詢“VFP程序設計”課程的最高分和最低分。SELECT課程名,MAX(成績),MIN(成績)FROMCJJOINKCONCJ.課程號=KC.課程號;WHERE課程名="VFP程序設計"3.分組統(tǒng)計查詢命令格式是:GROUPBY<分組依據列1>[,<分組依據列2>…][HAVING<組提取條件>]【例3.32】查詢每個學生的考試總分和平均分。SELECT學號,SUM(成績),AVG(成績)FROMCJGROUPBY學號【例3.33】統(tǒng)計每門課程的選課人數和平均成績。SELECT課程號,COUNT(學號)AS選課人數,AVG(成績)FROMCJGROUPBY課程號【例3.34】查詢選課人數超過5人的課程的課程號和選課人數。SELECT課程號,COUNT(學號)AS選課人數FROMCJ;GROUPBY課程號HAVINGCOUNT(學號)>53.4.5嵌套查詢
在SQL語言中,一個SELECT-FROM-WHERE語句稱為一個查詢塊。將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件表達式中的查詢稱為嵌套查詢。被包含的查詢塊稱為子查詢或內層查詢,而包含子查詢的語句稱為主查詢或外層查詢,為了與外層查詢有所區(qū)別,總是把子查詢寫在圓括號內。嵌套查詢常見的命令格式是:SELECT<表達式>FROM<表名>WHERE…(<子查詢>)【例3.35】查詢成績高于85分的學生的學號和姓名。SELECT學號,姓名FROMXSWHERE學號IN(SELECT學號FROMCJWHERE成績>85)【例3.36】查詢與王維勝同籍貫的學生的記錄。SELECT學號,姓名,籍貫FROMXSWHERE籍貫=(SELECT籍貫FROMXSWHE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼師體育活動設計教案
- DB43-T 2885-2023 黨政機關會議服務規(guī)范
- 護理壓瘡的教學
- 2025全國腫瘤防治宣傳科普
- 幼兒園小班數學《大大小小》課件
- 國企社招考試題及答案
- 禮來公司內部培訓
- 新媒體試題100道及答案
- 泰安英語試題及答案
- 高一餐飲考試題及答案
- 機械原理課程設計-旋轉型灌裝機
- ktv包房服務員崗位職責8篇
- 西安某大跨度鋼桁架人行天橋結構設計分析
- 初中學段勞動任務清單(七到九年級)
- 色溫-XY-UV色坐標換算公式
- 國企治理三會一層詳解
- YY 0731-2009大型蒸汽滅菌器手動控制型
- 2020重大疾病保險的疾病定義使用規(guī)范修訂解讀及影響課件
- 《建筑工程消防施工質量驗收規(guī)范》
- 計算機網絡課程設計小型公司網絡
- 中考考前注意事項講稿
評論
0/150
提交評論