SQL Server數(shù)據(jù)庫及PHP技術第4章 結構化查詢語言_第1頁
SQL Server數(shù)據(jù)庫及PHP技術第4章 結構化查詢語言_第2頁
SQL Server數(shù)據(jù)庫及PHP技術第4章 結構化查詢語言_第3頁
SQL Server數(shù)據(jù)庫及PHP技術第4章 結構化查詢語言_第4頁
SQL Server數(shù)據(jù)庫及PHP技術第4章 結構化查詢語言_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

SQLServer數(shù)據(jù)庫及PHP技術第4章結構化查詢語言24.1SQL概述第3頁SQL(StructureQuerylanguage)是結構化查詢語言的英文縮寫。SQL語言是一種標準的關系數(shù)據(jù)庫查詢語言,充分體現(xiàn)了關系數(shù)據(jù)語言的特點和優(yōu)點。SQL的發(fā)展1974年,SQL語言由IBM公司的Boyce和Chamberlin將關系數(shù)據(jù)庫的12條準則的數(shù)學定義以簡單的關鍵字語法表現(xiàn)出來。1985年:微軟和IBM開始合作。1986年10月,美國國家標準局(AmericanNationalStandardInstitute,簡稱ANSI)

批準了SQL語言的美國標準。1987年國際標準化組織(InternationalOrganizationforStandardization,簡稱ISO)也通過了這一標準。ANSI標準經過不斷修改和完善,分別于1989年公布增強完整性的SQL-89標準,1992年公布了SQL-92標準。1999年ANSI和ISO合作發(fā)布了SQL-99標準。經過不斷的發(fā)展,SQL語言已成為關系數(shù)據(jù)庫的標準語言。第6頁

關系數(shù)據(jù)庫標準語言SQL

SQL命令動詞

SQL功能命令動詞數(shù)據(jù)查詢SELECT

數(shù)據(jù)定義CREATE、DROP、ALTER數(shù)據(jù)操縱INSERT、UPDATE、DELETE數(shù)據(jù)控制 GRANT、REVOKE第7頁4.2運算符第8頁算術運算符說明+加法-減法*乘法/除法%取模,兩個整數(shù)相除后的余數(shù)4.2.1算術運算符除法運算,兩個整數(shù)相除的結果為整數(shù)。第9頁4.2.2位運算符位運算符說明&(與、and)按位邏輯與運算|(或、OR)按位邏輯或運算~(非、NOT)按位邏輯非運算^(異或)按位異或運算第10頁4.2.3關系運算符關系運算符說明>

大于=等于>=大于等于<

小于<=小于等于<>

不等于!=不等于!>不大于!<不小于關系運算符的兩邊可以是數(shù)值型、貨幣型、字符型、日期型、邏輯型的數(shù)據(jù),其運算結果為邏輯型TRUE或FALSE。

第11頁4.2.4邏輯運算符邏輯運算符說明AND對兩個布爾表達式進行邏輯與運算OR對兩個布爾表達式進行邏輯或運算NOT對兩個布爾表達式進行邏輯非運算BETWEEN用于測試某一表達式的值是否在某個指定的范圍內LIKE模式匹配運算符IN列表運算符,測試表達式的值在或不在某些列表值內ALL\SOME\ANY用于判斷表達式和子查詢之間的值的關系邏輯運算符和關系運算符一樣,其運算結果為邏輯型TRUE或FALSE。

第12頁4.2.5字符串連接運算符字符串連接運算符加號

(+)

是字符串連接運算符,用它將字符串連聯(lián)起來。例如:?”That”+”is” &&表達式的值為”Thatis” ?”5”+”8” &&表達式的值為”58”第13頁4.2.6賦值運算符賦值運算符只有"="一個,它用于給變量賦值。第14頁4.2.7運算符的優(yōu)先級優(yōu)先級運算符說明1()小括號2+、-、~正、負、邏輯非3*、/、%乘除取模4+、-、+加、減、連接5=、>、<、>=、<=、<>、!=、!>、!<各種比較運算符6^、&、|位運算符7NOT邏輯非8AND邏輯與9ALL、ANY、BETWEEN、IN、LIKE、OR、SOM邏輯運算符10=賦值運算符當一個復雜的表達式有多個運算符時,運算符優(yōu)先級決定執(zhí)行運算的先后次序。第15頁4.3數(shù)據(jù)定義第16頁4.3.1建立數(shù)據(jù)庫基本語法格式為:CREATEDATABASE<數(shù)據(jù)庫名>第17頁4.3.2建立數(shù)據(jù)表基本語法格式為:CREATETABLE<表名>(<列定義>[{,<列定義>|<表約束>}])命令說明:(1)在創(chuàng)建數(shù)據(jù)表的命令中要定義每個字段的字段名、字段類型、字段寬度。(2)NULL表示字段允許為空值,NOTNULL不允許為空值。(3)CHECK(<字段有效性規(guī)則>)指定該字段取值的約束條件。

(4)DEFAULT<默認值>短語用來指定該字段默認的取值,<默認值>表達式的數(shù)據(jù)類型應與該字段的數(shù)據(jù)類型一致。(5)PRIMARYKEY指定該字段創(chuàng)建主索引,UNIQUE創(chuàng)建候選索引。CREATETABLE

表名(字段名1數(shù)據(jù)類型列的屬性列約束,字段名2數(shù)據(jù)類型列的屬性列約束,字段名3數(shù)據(jù)類型列的屬性列約束,…)列屬性的格式:[NULL|NOTNULL][IDENTITY(標識種子,標識增量)]列約束的格式:[CONSTRAINT約束名]PRIMARYKEY[(列名)][CONSTRAINT約束名]UNIQUE[(列名)][CONSTRAINT約束名][FOREIGENKEY[(外鍵列)]]REFERENCES主表名(引用列)[CONSTRAINT約束名]CHECK(檢查表達式)[CONSTRAINT約束名]DEFAULT默認值第20頁【例4-1】建立學生表,定義學號為主鍵。CREATETABLE學生(學號 CHAR(8)PRIMARYKEY,

姓名 VARCHAR(20),

性別 CHAR(2)DEFAULT'男',

出生日期 DATE,

班級 VARCHAR(20));其中,性別列的缺省值為”男”。第21頁4.3.3建立索引建立索引可提高查詢速度。索引的作用可歸納為:(1)加快查詢速度;(2)保證行的唯一性。第22頁建立索引的語法格式為:CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[次序][{,<列名>}][次序]…)說明:UNIQUE表明建立唯一索引。CLUSTER表示建立聚集索引。第23頁【例4-11】為選課表在學號和課程號上建立唯一索引。USE學生選課CREATEUNIQUEINDEXSCION選課(學號,課程號)執(zhí)行此命令后,為SC表建立一個索引名為SCI的唯一索引第24頁4.4數(shù)據(jù)查詢第25頁SQL語言的核心是查詢。SQL語言中實現(xiàn)查詢的語句是SELECT語句,SELECT語句具有強大的查詢功能,能實現(xiàn)各種查詢,既能對單表查詢,也能對多表查詢,查詢效率高,速度快。第26頁4.3.1SELECT命令的基本格式命令格式:SELECT[ALL|DISTINCT]<查詢項>FROM<數(shù)據(jù)表>[,<數(shù)據(jù)表>]…[WHERE<條件表達式>][GROUPBY<列名1>[HAVING<分組條件>]][ORDERBY<列名2>[ASC|DESC]]第27頁命令中各短語的含義:(1)SELECT<查詢項>:說明在查詢結果中輸出的內容,各查詢項之間用逗號隔開。(2)FROM<數(shù)據(jù)表>:表明查詢的數(shù)據(jù)來自哪些表,表與表之間要用逗號隔開。(3)WHERE<條件表達式>:查詢數(shù)據(jù)表中滿足指定條件的數(shù)據(jù)。(4)GROUPBY<列名1>:對查詢結果按”列名1”進行分組(5)HAVING<分組條件>:用于限定分組必須滿足的條件。(6)ORDERBY<列名2>:對查詢的結果按<列名2>進行排序。第28頁4.3.2簡單查詢1.查詢全部字段例1:查詢學生表的全部字段。SELE*FROM考試2.查詢數(shù)據(jù)表中的部分字段例2.查詢全體學生的學號、姓名。

SELECT學號,姓名FROM學生第29頁3.使用distinct短語使用distinct短語去掉查詢結果中的重復數(shù)據(jù)【例3】查詢學生表中學生的籍貫SELECTdistinct籍貫FROM學生第30頁4.3.3條件查詢使用WHERE子句指定查詢條件。【例4】查詢學生表中來自湖南的學生SELECT學號,姓名,出生年月,籍貫 FROM學生WHERE籍貫='湖南'第31頁4.3.4使用特殊運算符查詢SQL語言中,使用BETWEEN、IN、LIKE特殊運算符進行查詢可以幫助我們實行范圍、是否在某個集合中和部分匹配等查詢需求。第32頁1.IN運算符IN運算意為屬于集合,即等于集合中任一元素。【例5】查詢學生表中來自山東、廣西的學生SELECT學號,姓名,出生年月,籍貫FROM學生WHERE籍貫IN('山東','廣西')2.BETWEEN…AND運算符【例6】查詢學生表中入學成績介入580-600的學生SELECT學號,姓名,性別,入學成績

FROM學生

WHERE入學成績BETWEEN580AND600第33頁3.LIKE運算符LIKE是字符串匹配運算符,用于模糊查詢?!纠?】查詢所有姓李的學生的學號和姓名。SELECT學號,姓名FROM學生WHERE姓名LIKE‘李%’4.NOT運算符NOT運算符即指不滿足后面的條件。

【例8】查詢學生表中來自除山東、廣西以外的學生SELECT學號,姓名,出生年月,籍貫

FROM學生

WHERE籍貫NOTIN('山東','廣西')第34頁4.3.5統(tǒng)計查詢函數(shù)名稱函數(shù)功能COUNT計數(shù)COUNT(DISTINCT<列名>)計數(shù)(去掉重復值)MAX求最大值MIN求最小值SUM求和AVG求平均值在使用SELECT命令進行查詢時,可以使用它內置的函數(shù)進行統(tǒng)計查詢。常用于統(tǒng)計查詢的數(shù)學函數(shù)如下:第35頁【例9】查詢學生表中湖北籍學生的人數(shù)SELECTCOUNT(*)as人數(shù)FROM學生

WHERE籍貫='湖北'【例10】查詢學生表中有多少種籍貫SELECTCOUNT(distinct籍貫)as籍貫種數(shù)FROM學生【例11】查詢學生表中入學成績最高和最低的學生SELECTmax(入學成績)as最高分,min(入學成績)as最低分FROM學生第36頁4.3.6分組查詢在SELECT語言中,利用GROUPBY子句可以進行分組查詢。在分組查詢中使用HAVING短語,從中選出滿足條件的組。第37頁【例12】查詢學生表中每種籍貫的人數(shù)SELECT籍貫,COUNT(*)as人數(shù)FROM學生GROUPBY籍貫【例13】查詢學生表中人數(shù)在3人及以上的省份SELECT籍貫,COUNT(*)as人數(shù)

FROM學生

GROUPBY籍貫

HAVINGCOUNT(*)>=3第38頁4.3.7查詢的排序當需要對查詢結果排序時,應該使用ORDERBY子句。排序可按升序或降序排列,使用ASC短語表示按升序排列,使用DESC短語表示按降序排列;沒有指明,則默認按升序排列。第39頁【例14】對學生表按入學成績排序SELECT學號,姓名,性別,入學成績

FROM學生

ORDERBY入學成績【例15】查詢學生表中入學成績最高的前5名學生信息SELECTtop5學號,姓名,性別,入學成績FROM學生ORDERBY入學成績desc第40頁4.3.8表的連接和連接查詢表的連接方法有兩種:方法1:表之間滿足一定的條件的行進行連接,此時FROM子句中指明進行連接的表名,WHERE子句指明連接的列名及其連接條件。方法2:利用關鍵字JOIN進行連接。第41頁1、利用相同字段進行等值連接【例16】從學生表、課程表和成績表中查詢學生的學號、姓名、所選課程編號、課程名稱和成績信息SELECT學生.學號,姓名,課程.課程編號,課程名稱,成績FROM學生,課程,成績WHERE學生.學號=成績.學號AND課程.課程編號=成績.課程編號ORDERBY學號第42頁2.用關鍵字join進行連接JOIN關鍵字有以下幾種用法:INNERJOIN:顯示符合條件的記錄,此為默認值;這種查詢一般稱內連接。LEFT(OUTER)JOIN:顯示符合條件的數(shù)據(jù)行以及左邊表中不符合條件的數(shù)據(jù)行,此時右邊數(shù)據(jù)行會以NULL來顯示,此稱為左連接。RIGHT(OUTER)JOIN:顯示符合條件的數(shù)據(jù)行以及右邊表中不符合條件的數(shù)據(jù)行,此時左邊數(shù)據(jù)行會以NULL來顯示,此稱為右連接。第43頁命令格式:SELECT<列名>FROM表1INNER|LEFT|RIGHTJOIN表2ON表1.列名=表2.列名[WHERE條件][ORDERBY列名]第44頁【例17】查詢學生所在的班級名稱SELECT學號,姓名,性別,學生.班級編號,班級名稱FROM學生INNERJOIN班級on學生.班級編號=班級.班級編號上述語句等價于:SELECT學號,姓名,性別,學生.班級編號,班級名稱FROM學生,班級WHERE學生.班級編號=班級.班級編號第45頁4.3.9嵌套查詢在SELECT語句中,將一個SELECT…FROM…WHERE語句嵌套在另一個SELECT…FROM…WHERE的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢。處于內層的查詢稱為子查詢,包含子查詢的語句稱為父查詢或外部查詢。第46頁【例18】查詢選修了課程編號為1211課程的學生姓名SELECT姓名FROM學生WHERE學號in(select學號from選課where課程編號='1211')第47頁4.5數(shù)據(jù)操縱第48頁4.5.1插入記錄在SQL語言中,使用INSERTINTO命令向指定的數(shù)據(jù)表中插入記錄。命令格式1:INSERTINTO<表名>[(<字段1>[,<字段2>…])]VALUES(<表達式1>[,<表達式2>…])命令功能:向指定的數(shù)據(jù)表中插入一條記錄。第49頁【例19】在學生表中插入一條記錄INSERTINTO學生VALUES('02020106','張小嚴','男','1996-10-3','團員','寧夏','010102',607)【例20】在學生表中插入一條部分記錄INSERTINTO學生(學號,姓名,性別,出生年月,政治面貌,籍貫,班級編號)VALUES('02020109','黃方','男','1997-1-3','團員','河北','02020202')

第50頁4.5.2更新記錄命令格式:UPDATE<表名>SET<字段1>=<表達式1>[,<字段2>=<表達式1>……][WHERE<條件>]命令功能:在指定的數(shù)據(jù)表中,對滿足給定條件的記錄的數(shù)據(jù)進行更新。第51頁【例21】將成績表中55-59分之間的成績加5分。UPDATE成績SET成績=成績+5WHREE成績between55and59

第52頁4.5.3刪除記錄命令格式:DELETEFROM<表名>[WHERE<條件>]命令功能:在指定的數(shù)據(jù)表中,刪除滿足條件的記錄?!纠?2】刪除學生表中學號為01010110的學生信息DELETEFROM學生WHERE學號='01010110'第53頁4.6視圖第54頁視圖是一個根據(jù)數(shù)據(jù)庫表而定制的虛擬邏輯表,是觀察表中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論