SQL基本語句課件_第1頁
SQL基本語句課件_第2頁
SQL基本語句課件_第3頁
SQL基本語句課件_第4頁
SQL基本語句課件_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第7章基本SQL語句Transact-SQL語言是Microsoft為SQLServer開發(fā)的一種標準化SQL語言的實現(xiàn),也是SQLServer的核心。不過,Transact-SQL語言并非嚴格按照標準化SQL語言實現(xiàn)的,而是對標準化SQL語言進行了一定程度上的裁剪和拓展。本章主要介紹Transact-SQL語言的基本語句。7.1Transact-SQL語言Transact-SQL語言是對標準SQL語言的實現(xiàn)。不過,由于不同的數(shù)據(jù)庫系統(tǒng),廠商實現(xiàn)的SQL語言并不相同,這就導致了數(shù)據(jù)庫的具體SQL語言間存在一定程度上的差異。所以,用戶在使用SQL語言時,一定要明確特定SQL語言的特殊性,而且應盡量使用標準化SQL語句,而不要去使用那些特殊性的SQL語句。7.2數(shù)據(jù)定義語言Transact-SQL語言是一種數(shù)據(jù)定義語言。所謂數(shù)據(jù)定義語言,是指用于定義數(shù)據(jù)格式的語言。這里所說的數(shù)據(jù)格式是存儲數(shù)據(jù)的結(jié)構(gòu)以及所存儲數(shù)據(jù)項之間的關(guān)系。數(shù)據(jù)格式定義包括創(chuàng)建格式、刪除格式、更改格式,而對應的語句分別為CREATE語句、DROP語句和ALTER語句。REVOKE語句是處理權(quán)限的主要語句。CREATE語句、DROP語句、ALTER語句和REVOKE等語句一般以一組語句的形式使用。7.2.2DROP語句:刪除數(shù)據(jù)庫在SQLServer中,DROP語句和CREATE語句是對應的,兩者甚至在形式和數(shù)目上都很相同,如CREATEDATABASE語句對應于DROPDATABASE語句。不過,DROP語句一般都是較為簡單的,不像CREATE語句那樣具有復雜的語法結(jié)構(gòu)。一般情況下,DROP語句的格式如下。DROP對象對象名前面提到過,刪除數(shù)據(jù)庫對象database_demo的DROP語句如下。DROPDatabasedatabase_demo7.2.3ALTER語句:修改數(shù)據(jù)庫ALTER語句的操作和CREATE語句類似,如創(chuàng)建表的CREATETABLE語句中定義了列后,可以用ALTERTABLE語句來修改列,而這兩者列的定義是類似的:“列名數(shù)據(jù)類型約束”。由于前面沒有介紹CREATE語句,所以這里也不便詳細介紹ALTER語句。與CREATE語句一樣,將在使用時介紹。其實,ALTER語句相當于DROP語句+CREATE語句。也就是說,一個ALTER操作相當于執(zhí)行一次DROP操作和一次CREATE操作,有些類似于刪除重建的概念。所謂刪除重建包括兩層意思,一是刪除重建結(jié)構(gòu),這一點是可以理解的,也較容易實現(xiàn);二是刪除重建數(shù)據(jù),這一點就較為復雜了。7.2.4REVOKE語句:安全性語句上面介紹的語句都是關(guān)于數(shù)據(jù)庫對象的,這里的REVOKE語句則是關(guān)于安全性的。REVOKE語句、GRANT語句以及DENY等語句定義了對象的權(quán)限。關(guān)于權(quán)限,將在后文中敘述,這里只是強調(diào)說明權(quán)限也是數(shù)據(jù)定義的一部分。7.3數(shù)據(jù)操縱語言在使用數(shù)據(jù)定義語言(DDL)定義了數(shù)據(jù)存儲的格式和位置后,用戶就可以使用數(shù)據(jù)操縱語言(DML)來操作定義的對象。數(shù)據(jù)操縱語言主要包括數(shù)據(jù)查詢與數(shù)據(jù)更新。其中,數(shù)據(jù)查詢主要是SELECT語句,而數(shù)據(jù)更新則包括插入(INSERT語句)、更新(UPDATE語句)和刪除(DELETE語句)。這4類語句可以簡稱為“查增改刪”。7.3.2INSERT語句:插入數(shù)據(jù)在SQLServer中,INSERT語句負責向數(shù)據(jù)庫中插入記錄。在獲取一條新的記錄后,就需要使用INSERT語句向數(shù)據(jù)庫插入一個新行(記錄)。7.3.4Delete語句:刪除數(shù)據(jù)如果表中的數(shù)據(jù)不再使用或已經(jīng)備份完畢,那么為了釋放服務(wù)器的資源,就需要及時刪除表中的數(shù)據(jù)。在SQLServer中,主要使用如下Delete語句刪除表中的記錄。7.4.1WHERE子句:給出條件語句在SQLServer中,WHERE子句可以用于SELECT語句、DELETE語句及UPDATE語句中。7.4.2帶AND關(guān)鍵字的WHERE子句在介紹AND關(guān)鍵字之前,需要介紹一下布爾表達式。所謂布爾表達式是指表達式的各成分由關(guān)系連接符連接,而且表達式的值為TRUE或FALSE。其中,用于連接布爾表達式的連接詞有NOT(非)、AND(積)和OR(和)3個。7.4.3GROUPBY子句:分組語句GROUPBY子句具有符合ISO的語法和不符合ISO的語法兩種結(jié)構(gòu)。在一條SELECT語句中只能使用一種語法樣式,在這里,用戶使用符合ISO的語法,因為不符合ISO語法的目的是為了實現(xiàn)向后兼容。7.4.4HAVING子句:分組條件HAVING子句通常在GROUPBY子句中使用。如果不使用GROUPBY子句,那么HAVING的行為與WHERE子句一樣。不過,這種方式不推薦使用,因為有很多限制。HAVING子句的所有列都必須出現(xiàn)在SELECT語句的列表中。具體HAVING子句的用法大致分為以下幾種情況。1.帶HAVING子句而不帶WHERE子句的SELECT語句2.帶HAVING子句和WHERE子句的SELECT語句7.4.5ORDERBY子句:排序語句ORDERBY子句用在指定SELECT語句返回的結(jié)果集后,主要用于對結(jié)果集進行排序。在默認情況下,由SELECT語句返回結(jié)果集中的記錄是按照表中記錄的物理順序排列的。7.4.7DISTINCT子句:去掉重復記錄提到關(guān)鍵字DISTINCT,就不得不提到關(guān)鍵字ALL。ALL是指結(jié)果集中可以包含重復行,而且它是默認值。而關(guān)鍵字DISTINCT可從SELECT語句的結(jié)果集中消除重復的行。不過,如果沒有指定DISTINCT,將返回所有行(包括重復的行)。對于關(guān)鍵字DISTINCT來說,空值被認為是相互重復的內(nèi)容。當SELECT語句中包括DISTINCT時,不論遇到多少個空值,結(jié)果中只返回一個NULL。用戶不要誤會,DISTINCT關(guān)鍵字中所謂重復的行,并不是表中的記錄完全重復,而是記錄中關(guān)鍵字DISTINCT指定的各列重復。如果記錄都相同,那么也就不能滿足前面介紹的關(guān)系數(shù)據(jù)庫的數(shù)據(jù)完整性的要求了。7.4.8BETWEEN子句:指定范圍條件在SQLServer中,BETWEEN子句是較為重要的子句,用于指定一個范圍條件,其語法結(jié)構(gòu)如下。test_ExpressionBETWEENBEGIN_ExpressionANDEND_Expression其實,該子句相當于數(shù)學中的兩個不等式,如下。BEGIN_Expression=<test_Expression<=END_Expression7.4.10IN子句:值包含在列表中在SQLServer中,IN子句主要用于確定指定列的值在子查詢或列表中。IN子句的語法結(jié)構(gòu)如下。test_ExpressionIN(subquery|Expression[,n])其中,test_Expression、subquery、Expression的類型必須相同。如果test_Expression的值與subquery所返回的任何值相等或與逗號分隔列表中的任何Expression相等,那么比較的結(jié)果值為TRUE,否則,結(jié)果值為FALSE。7.4.11NOTIN子句:值不包含在列表中當然,IN子句與LIKE子句一樣,也可以和NOT語句配合使用。NOT關(guān)鍵字將IN子句的值取反,即如果IN語句為TRUE,那么NOTIN子句則為FALSE。這里之所以單獨列出NOTIN,是因為用戶經(jīng)常用到NOTIN,便于用戶查詢本書。7.4.13COMPUTEBY子句:計算統(tǒng)計信息COMPUTEBY子句與COMPUTE子句類似,也可能在后續(xù)版本中刪除,所以不建議使用。如果使用COMPUTEBY子句,那么必須使用ORDERBY子句。表達式的列必須與在ORDERBY中的列相同或是其子集,并且順序相同。例如,如果ORDERBY子句為ORDERBYa,b,c,那么COMPUTE子句的可用形式如下。COMPUTEBYa,b,c。COMPUTEBYa,b。COMPUTEBYa。7.4.14列的別名前面的許多示例都用到了列的別名,而且在前面介紹其他類型時,筆者也介紹了列的別名類型。其實,列的別名在SELECT語句中經(jīng)常用到。其中,列的別名類型主要由AS和=來命名?;谇懊娴慕榻B,下面將給出一個在查詢中使用列別名的示例。7.5關(guān)系連接在SELECT語句涉及多個表時,可以用子查詢解決。SQLServer還提供了一組關(guān)鍵字來處理多個表的查詢,這組關(guān)鍵字組成了關(guān)系連接的核心。所謂關(guān)系連接,就是連接查詢,是一種不同于子查詢使用多個表的查詢方式??梢哉f,前面介紹的SQL語句都是基礎(chǔ)語句,在工作中較少用到那樣簡單的語句。連接查詢是最常用、最重要的查詢方式。7.5.2笛卡爾積在介紹連接查詢時提到過,SQLServer將參與連接查詢的表的所有記錄進行組合并形成笛卡爾積(交叉連接)。根據(jù)上面介紹的連接查詢的執(zhí)行步驟,用戶不難了解生成和實現(xiàn)笛卡爾積的方法:在連接查詢中,將WHERE子句、GROUPBY子句、ORDERBY子句以及SELECT語句中的聚合函數(shù)等都省略,直接使用表中的記錄組合形成笛卡爾積。7.5.3內(nèi)部連接內(nèi)部連接(INNERJOIN)是相對于外部連接而言的,內(nèi)部連接用來組合兩個或多個表的記錄。通常內(nèi)部連接按照連接條件,從生成的結(jié)果集中刪除在其他表中沒有被匹配的記錄。根據(jù)內(nèi)部連接比較方式的不同,可以分為等值連接、自然連接和不等連接。7.5.4使用表別名表的別名是連接查詢中經(jīng)常用到的處理表的方法。將表名定義為一個簡單的別名,解決了編寫SQL語句時語句過長的問題。其中,表別名的規(guī)則與前面介紹的列的別名相同。這里僅給出一個簡單的SQL示例。USEdatabase_demoGOSELECTtb1.*FROMtable_1AStb17.5.5外部連接用戶可能不理解,查詢就是為了尋找符合條件的記錄,那為什么還需要外部連接。舉一個簡單的應用實例:假設(shè)某班級的學生信息存儲在student表中。最近,學校評定了獎學金,獲獎的學生信息存儲在prize表中?,F(xiàn)在需要查詢該班學生獲取了獎學金和沒獲獎學金的信息。要實現(xiàn)這個目標,需要進行如下工作。1.獲得數(shù)據(jù)2.普通SELECT語句3.外部連接7.5.6自連接這里介紹的自連接是連接查詢的一個特例。所謂自連接,就是表與自身的連接,是內(nèi)部連接的一種。自連接可以使用戶同時操作同一個表的不同行,其使用較少,但是很重要。自連接適用于如下情況:某班級學生表student中包含了該班學生今年選修的課程以及課程分數(shù)?,F(xiàn)在,需要查看同一個學生的不同學科的成績。實現(xiàn)該示例的具體操作步驟如下。(1)表Student的結(jié)構(gòu)和記錄由如下SQL語句生成。(2)執(zhí)行如下SQL語句,查看同一個學生的不同學科的成績。7.5.7聯(lián)合查詢聯(lián)合查詢也存在左查詢與右查詢的概念,并且這兩個概念與左表右表類似。聯(lián)合查詢的運算分為并(UNION)、交(INTERSECT

溫馨提示

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

評論

0/150

提交評論