第07章 基本SQL語(yǔ)句課件.ppt
《第07章 基本SQL語(yǔ)句課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《第07章 基本SQL語(yǔ)句課件.ppt(36頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第 7章 基 本 SQL語(yǔ) 句Transact-SQL語(yǔ)言是Microsoft為SQL Server開(kāi)發(fā)的一種標(biāo)準(zhǔn)化SQL語(yǔ)言的實(shí)現(xiàn),也是SQL Server的核心。不過(guò),Transact-SQL并非嚴(yán)格按照標(biāo)準(zhǔn)化SQL語(yǔ)言實(shí)現(xiàn),而是對(duì)標(biāo)準(zhǔn)化SQL語(yǔ)言進(jìn)行了一定程度上的裁剪和拓展。本章主要介紹Transact-SQL語(yǔ)言的基本語(yǔ)句。 7.1 Transact-SQL語(yǔ) 言Transact-SQL語(yǔ)言是對(duì)標(biāo)準(zhǔn)SQL語(yǔ)言的實(shí)現(xiàn)。不過(guò),由于不同的數(shù)據(jù)庫(kù)系統(tǒng),廠商實(shí)現(xiàn)的SQL語(yǔ)言并不相同,這就導(dǎo)致了數(shù)據(jù)庫(kù)的具體SQL語(yǔ)言間存在一定程度上的差異。所以,用戶在使用SQL語(yǔ)言時(shí),一定要明確特定SQL語(yǔ)言的特
2、殊性,而且應(yīng)盡量使用標(biāo)準(zhǔn)化SQL語(yǔ)句,而不要去使用那些特殊性的SQL語(yǔ)句。 7.2 數(shù) 據(jù) 定 義 語(yǔ) 言Transact-SQL語(yǔ)言是一種數(shù)據(jù)定義語(yǔ)言。所謂數(shù)據(jù)定義語(yǔ)言,是指用于定義數(shù)據(jù)格式的語(yǔ)言。這里所說(shuō)的數(shù)據(jù)格式是存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)以及所存儲(chǔ)數(shù)據(jù)項(xiàng)之間的關(guān)系。數(shù)據(jù)格式定義包括創(chuàng)建格式、刪除格式、更改格式,而對(duì)應(yīng)的語(yǔ)句分別為CEATE語(yǔ)句、DROP語(yǔ)句、ALTER語(yǔ)句。REVOKE語(yǔ)句是處理權(quán)限的主要語(yǔ)句。CEATE語(yǔ)句、DROP語(yǔ)句、ALTER語(yǔ)句和REVOKE等語(yǔ)句并不是一個(gè)語(yǔ)句,而是一組語(yǔ)句。 7.2.1 CREATE語(yǔ) 句 : 創(chuàng) 建 數(shù) 據(jù) 庫(kù)CREATE語(yǔ)句主要用于數(shù)據(jù)定義,包括定
3、義數(shù)據(jù)的格式,以及其他屬性。其中,數(shù)據(jù)定義的格式和屬性限制了插入數(shù)據(jù)庫(kù)中的數(shù)據(jù)的格式。所以,在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),數(shù)據(jù)定義階段的工作很重要。為了做好數(shù)據(jù)定義工作,在定義數(shù)據(jù)結(jié)構(gòu)前,用戶需要對(duì)企業(yè)的常用數(shù)據(jù)的格式進(jìn)行分析。 7.2.2 DROP語(yǔ) 句 : 刪 除 數(shù) 據(jù) 庫(kù)在SQL Server里,DROP語(yǔ)句和CREATE語(yǔ)句是對(duì)應(yīng)的,二者甚至在形式和數(shù)目上都很相同。如CREATE DATABASE語(yǔ)句對(duì)應(yīng)于DROP DATABASE語(yǔ)句。不過(guò),DROP語(yǔ)句一般都是較為簡(jiǎn)單的,不像CREATE語(yǔ)句那樣具有復(fù)雜的語(yǔ)法結(jié)構(gòu)。一般情況下,DROP語(yǔ)句的格式如下。DROP 對(duì)象 對(duì)象名 7.2.3 ALTE
4、R語(yǔ) 句 : 修 改 數(shù) 據(jù) 庫(kù)從ALTER語(yǔ)句的含義來(lái)看,ALTER語(yǔ)句是很友好的。因?yàn)锳LTER語(yǔ)句能夠在定義對(duì)象后,對(duì)對(duì)象進(jìn)行修改。不過(guò),實(shí)際的情況卻并不如想象中那么好。在對(duì)象設(shè)計(jì)階段,可以使用ALTER修改,但是在現(xiàn)實(shí)工作中,用戶最好不要使用ALTER語(yǔ)句。該語(yǔ)句可能造成數(shù)據(jù)的丟失或數(shù)據(jù)精度的降低。 7.2.4 REVOKE語(yǔ) 句 : 安 全 性 語(yǔ) 句上面介紹的語(yǔ)句都是關(guān)于數(shù)據(jù)庫(kù)對(duì)象的,這里的REVOKE語(yǔ)句則是關(guān)于安全性的。REVOKE語(yǔ)句、GRANT語(yǔ)句以及DENY等語(yǔ)句定義了對(duì)象的權(quán)限。關(guān)于權(quán)限,將在后文中敘述。這里只是強(qiáng)調(diào)說(shuō)明權(quán)限也是數(shù)據(jù)定義的一部分。 7.3 數(shù) 據(jù) 操 縱
5、 語(yǔ) 言在使用數(shù)據(jù)定義語(yǔ)言(DDL)定義了數(shù)據(jù)存儲(chǔ)的格式和位置后,用戶就可以使用數(shù)據(jù)操縱語(yǔ)言(DML)來(lái)操作定義的對(duì)象。數(shù)據(jù)操縱語(yǔ)言主要包括數(shù)據(jù)查詢與數(shù)據(jù)更新,其中,數(shù)據(jù)查詢主要是SELECT,而數(shù)據(jù)更新則包括插入(INSERT語(yǔ)句)、更新(UPDATE語(yǔ)句)、刪除(DELETE語(yǔ)句)。這四類語(yǔ)句可以簡(jiǎn)稱為“查增改刪”。 7.3.1 SELECT語(yǔ) 句 : 查 詢 數(shù) 據(jù)所有基于數(shù)據(jù)庫(kù)的應(yīng)用系統(tǒng)都會(huì)使用SELECT語(yǔ)句從數(shù)據(jù)庫(kù)中提取數(shù)據(jù),并將獲得的數(shù)據(jù)按用戶的要求輸出給用戶。根據(jù)用戶使用具體SELECT語(yǔ)句的不同,數(shù)據(jù)庫(kù)從不同角度向用戶展示數(shù)據(jù)庫(kù)中的數(shù)據(jù)。SELECT語(yǔ)句執(zhí)行后,將返回一組記錄
6、,而這組記錄就是記錄集(結(jié)果集)。不過(guò),SELECT語(yǔ)句是很復(fù)雜的。 7.3.2 INSERT語(yǔ) 句 : 插 入 數(shù) 據(jù)在SQL Server中,INSERT語(yǔ)句負(fù)責(zé)向數(shù)據(jù)庫(kù)中插入記錄。在獲取一條新的記錄后,就需要使用INSERT語(yǔ)句向數(shù)據(jù)庫(kù)插入一個(gè)新行(記錄)。 7.3.3 UPDATE語(yǔ) 句 : 更 新 數(shù) 據(jù)在使用INSERT語(yǔ)句向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)后,數(shù)據(jù)就保存到了數(shù)據(jù)庫(kù)中。不過(guò),如果外界數(shù)據(jù)發(fā)生變化,就需要對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行更新。在SQL Server中,主要使用UPDATE語(yǔ)句更新數(shù)據(jù)庫(kù)中的數(shù)據(jù),特別是更新部分字段。與INSERT不同,這里并不插入新行(記錄),而是修改原行(記錄)
7、。 7.3.4 Delete語(yǔ) 句 : 刪 除 數(shù) 據(jù)如果表中的數(shù)據(jù)不再使用或已經(jīng)備份完畢,那么為了釋放服務(wù)器的資源,就需要及時(shí)刪除表中的數(shù)據(jù)。 7.4 其 他 常 用 語(yǔ) 句上面介紹了SELECT、INSERT、UPDATE、DELETE等語(yǔ)句的基本形式。下面將介紹一些常用的子句,這些子句在與上述4個(gè)語(yǔ)句配合使用時(shí),可以實(shí)現(xiàn)更加強(qiáng)大的數(shù)據(jù)操作功能。1帶WHERE子句的SELECT語(yǔ)句2帶WHERE子句的UPDATE語(yǔ)句3帶WHERE子句的DELETE語(yǔ)句 7.4.1 WHERE子句:給出條件語(yǔ)句在SQL Server中,WHERE子句可以用于SELECT語(yǔ)句、DELETE語(yǔ)句、UPDATE語(yǔ)
8、句中。1帶WHERE子句的SELECT語(yǔ)句2帶WHERE子句的UPDATE語(yǔ)句3帶WHERE子句的DELETE語(yǔ)句 7.4.2 帶 AND關(guān) 鍵 字 的 WHERE子 句在介紹AND關(guān)鍵字之前,需要介紹一下布爾表達(dá)式。所謂布爾表達(dá)式是指表達(dá)式的各成分由關(guān)系連接符連接,而且表達(dá)式的值為TRUE或FALSE。其中,用于連接布爾表達(dá)式的連接詞有NOT(非)、AND(積)、OR(和)3個(gè)。這里將以AND為例,介紹這3個(gè)連接詞。 7.4.3 GROUP BY子 句 : 分 組 語(yǔ) 句GROUP BY子句具有符合ISO的語(yǔ)法和不符合ISO的語(yǔ)法兩種結(jié)構(gòu)。在一條SELECT語(yǔ)句中只能使用一種語(yǔ)法樣式,在這里
9、,用戶使用符合ISO的語(yǔ)法,因?yàn)椴环螴SO語(yǔ)法的目的是為了實(shí)現(xiàn)向后兼容。這里僅介紹符合ISO的語(yǔ)法,如下。 1不帶WHERE子句僅含GROUP BY子句的SELECT語(yǔ)句 2帶WHERE子句和GROUP BY子句的SELECT語(yǔ)句 7.4.4 HAVING子 句 : 分 組 條 件HAVING子句通常在GROUP BY子句中使用。如果不使用GROUP BY子句,那么HAVING的行為與WHERE子句一樣。不過(guò),這種方式不推薦使用,因?yàn)橛泻芏嘞拗?。HAVING子句的所有列都必須出現(xiàn)在SELECT語(yǔ)句的列表中。具體HAVING子句的用法大致分為以下幾種情況。1帶HAVING子句而不帶WHERE子
10、句的SELECT語(yǔ)句2帶HAVING子句和WHERE子句的SELECT語(yǔ)句 7.4.5 ORDER BY子 句 : 排 序 語(yǔ) 句ORDER BY子句用在指定SELECT語(yǔ)句返回的結(jié)果集后,主要用于對(duì)結(jié)果集進(jìn)行排序。在默認(rèn)情況下,由SELECT語(yǔ)句返回結(jié)果集中的記錄是按照表中記錄的物理順序排列的。 7.4.6 TOP子 句 : 查 看 前 幾 條 記 錄TOP表達(dá)式可用在SELECT、INSERT、UPDATE和DELETE語(yǔ)句中。不過(guò),TOP表達(dá)式主要用于SELECT語(yǔ)句中,其表達(dá)式語(yǔ)法結(jié)構(gòu)如下。TOP (Expression) PERCENT WITH TIES 7.4.7 DISTINC
11、T子 句 : 去 掉 重 復(fù) 記 錄提到關(guān)鍵字DISTINCT,就不得不提到關(guān)鍵字ALL。ALL是指結(jié)果集中可以包含重復(fù)行,而且它是默認(rèn)值。而關(guān)鍵字DISTINCT可從SELECT語(yǔ)句的結(jié)果集中消除重復(fù)的行。不過(guò),如果沒(méi)有指定DISTINCT,將返回所有行(包括重復(fù)的行)。 7.4.8 BETWEEN子 句 : 指 定 范 圍 條 件在SQL Server中,BETWEEN子句是較為重要的字句,用于指定一個(gè)范圍條件,其語(yǔ)法結(jié)構(gòu)如下。test_Expression BETWEEN BEGIN_Expression AND END_Expression其實(shí),該子句相當(dāng)于數(shù)學(xué)中的兩個(gè)不等式:BEGI
12、N_Expression=test_Expression =END_Expression 7.4.9 模 糊 查 詢 LIKE子 句上面介紹WHERE子句時(shí),說(shuō)到了字符串比較的問(wèn)題。不過(guò),那種字符串比較主要是、=等關(guān)系運(yùn)算符連接。在某種程度上,這些運(yùn)算符都可以說(shuō)是字符串的精確比較。在Transact-SQL中,還提供了LIKE子句用于字符串的模糊比較,即模糊匹配。 7.4.10 IN子 句 : 值 包 含 在 列 表 中在SQL Server中,IN語(yǔ)句主要用于確定指定列的值在子查詢或列表中。IN語(yǔ)句的語(yǔ)法結(jié)構(gòu)如下。test_Expression IN ( subquery | Express
13、ion , n ) 7.4.11 NOT IN子 句 : 值 不 包 含 在 列 表 中當(dāng)然,IN語(yǔ)句與LIKE語(yǔ)句一樣,也可以和NOT語(yǔ)句配合使用。NOT語(yǔ)句將IN語(yǔ)句的值取反,即如果IN語(yǔ)句為TRUE,那么NOT IN子句則為FALSE。這里之所以單獨(dú)列出NOT IN,是因?yàn)橛脩艚?jīng)常用到NOT IN,便于用戶查詢本書。 7.4.12 COMPUTE子 句 : 用 于 生 成 統(tǒng) 計(jì) 信 息COMPUTE子句用于生成統(tǒng)計(jì)信息,并將統(tǒng)計(jì)信息顯示在結(jié)果集的后面。COMPUTE子句的語(yǔ)法結(jié)構(gòu)如下。 COMPUTE AVG | COUNT | MAX | MIN | STDEV | STDEVP |
14、 VAR | VARP | SUM ( Expression ) , n BY Expression , n 7.4.13 COMPUTE BY子 句 : 計(jì) 算 統(tǒng) 計(jì) 信 息COMPUTE BY子句與COMPUTE子句類似,也可能在未來(lái)版本中刪除,所以不建議使用。如果使用COMPUTE BY,那么必須使用ORDER BY子句。表達(dá)式的列必須與在ORDER BY中的列相同或是其子集,并且順序相同。例如,如果ORDER BY子句為ORDER BY a,b,c,那么COMPUTE子句的可用形式如下。COMPUTE BY a,b,c。COMPUTE BY a,b。COMPUTE BY a。 7.4
15、.14 列 的 別 名前面的許多示例都用到了列的別名,而且在前面介紹其他類型時(shí),筆者也介紹了列的別名類型。其實(shí),列的別名在SELECT語(yǔ)句中經(jīng)常用到。其中,列的別名類型主要由AS和=來(lái)命名。基于前面的介紹,下面將給出一個(gè)在查詢中使用列別名的示例。如下SQL語(yǔ)句將查詢數(shù)據(jù)庫(kù)database_demo的表,并使用別名顯示查詢到的字段。 7.5 關(guān) 系 連 接在SELECT語(yǔ)句涉及到多個(gè)表時(shí),可以用子查詢解決。SQL Server還提供了一組關(guān)鍵字來(lái)處理多個(gè)表的查詢,這組關(guān)鍵字組成了關(guān)系連接的核心。所謂關(guān)系連接,就是連接查詢這是一種不同于子查詢使用多個(gè)表的查詢方式??梢哉f(shuō),前面介紹的SQL語(yǔ)句都是基
16、礎(chǔ)語(yǔ)句,在工作中較少用到那樣簡(jiǎn)單的語(yǔ)句。連接查詢是最常用、最重要的查詢方式。 7.5.1 連 接 查 詢 介 紹既然兩個(gè)表可以用于連接查詢,那么兩個(gè)表必須要有聯(lián)系兩個(gè)表之間存在相同意義的列。 7.5.2 笛 卡 爾 乘 積上面介紹連接查詢時(shí)提到過(guò),SQL Server將參與連接查詢的表的所有記錄進(jìn)行組合并形成笛卡爾積(交叉連接) 。根據(jù)上面介紹的連接查詢的執(zhí)行步驟,用戶不難了解生成和實(shí)現(xiàn)笛卡爾積的方法:在連接查詢中,將WHERE子句、GROUP BY子句、ORDER BY子句以及SELECT語(yǔ)句中的聚合函數(shù)等都省略,直接使用表中的記錄組合形成笛卡爾積。 7.5.3 內(nèi) 部 連 接內(nèi)部連接( I
17、NNER JOIN)是相對(duì)于外部鏈接而言的,內(nèi)部連接用來(lái)組合兩個(gè)或多個(gè)表的記錄。通常,內(nèi)部連接按照連接條件,從生成的結(jié)果集中刪除在其他表中沒(méi)有被匹配的記錄。根據(jù)內(nèi)部連接使用比較方式的不同,內(nèi)部連接可以分為等值連接、自然連接、不等連接。 7.5.4 使 用 表 別 名表的別名是連接查詢中經(jīng)常用到的處理表的方法。將表名定義為一個(gè)簡(jiǎn)單的別名,解決了編寫SQL語(yǔ)句時(shí)語(yǔ)句過(guò)長(zhǎng)的問(wèn)題。其中,表別名的規(guī)則與前面介紹的列的別名相同。這里僅給出一個(gè)簡(jiǎn)單的SQL示例。USE database_demoGOSELECT tb1.* FROM table_1 AS tb1 7.5.5 外 部 連 接前面介紹的連接查詢
18、都是返回滿足條件的記錄。在工作中,用戶可能遇到這種情況,即顯示某一個(gè)表的全部?jī)?nèi)容(包括不符合連接條件的記錄)。這個(gè)時(shí)候就需要用到外部連接,其可以使不符合條件的記錄也出現(xiàn)在結(jié)果中。 7.5.6 自 連 接這里介紹的自連接是連接查詢的一個(gè)特例。所謂自連接,就是表與自身的連接,是內(nèi)部連接的一種。自連接可以使用戶同時(shí)操作同一個(gè)表的不同行。它使用較少,但是很重要。自連接適用于如下場(chǎng)景:某班級(jí)學(xué)生表student中包含了該班學(xué)生今年選修的課程以及課程分?jǐn)?shù)。現(xiàn)在,需要查看同一個(gè)學(xué)生的不同學(xué)科的成績(jī)。 7.5.7 聯(lián) 合 查 詢 在Transact-SQL中,還有一類查詢,叫聯(lián)合查詢。聯(lián)合查詢是以SELECT語(yǔ)句的結(jié)果集為基礎(chǔ)的。與其說(shuō)聯(lián)合查詢是一個(gè)查詢,不如說(shuō)聯(lián)合查詢是一個(gè)運(yùn)算符。不過(guò),這是一種使用起來(lái)不太靈活的查詢方式。除非用戶想將查詢結(jié)果一次性輸出,這時(shí)可以使用聯(lián)合查詢。許多聯(lián)合查詢都可以用連接查詢替代,不推薦使用聯(lián)合查詢。 7.6 小 結(jié)本章是本書最為關(guān)鍵的一章,SQL語(yǔ)句是在實(shí)際應(yīng)用中使用最多的部分,每一個(gè)DBA都應(yīng)該十分熟練地掌握各種SQL語(yǔ)句。在實(shí)際應(yīng)用中,數(shù)據(jù)操縱語(yǔ)言最為關(guān)鍵,由其是SELECT語(yǔ)句,十分靈活,體現(xiàn)了第四代計(jì)算機(jī)語(yǔ)言的特點(diǎn)。與其配合的各種常見(jiàn)語(yǔ)句,為準(zhǔn)確查詢到可用數(shù)據(jù)提供技術(shù)保障。
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 必修1-分子與細(xì)胞-第2節(jié)-細(xì)胞的分化課件
- 西門子自動(dòng)化簡(jiǎn)述
- 一積貧積弱的北宋
- 移動(dòng)中音數(shù)字音樂(lè)渠道推廣營(yíng)銷方案
- 軟件工程之Visio2003教程
- 【素材】《告別小馬虎》克服小馬虎有辦法(蘇教)
- 人教版化學(xué)《水的凈化》
- 生產(chǎn)計(jì)劃與控制之需求管理教材
- 手術(shù)室的應(yīng)急預(yù)案3
- 六西格瑪講解
- (2016年秋季版)《次北固山下》課件
- 導(dǎo)入_確定位置
- 制定采購(gòu)戰(zhàn)略流程優(yōu)化管理的定義
- 4公關(guān)程序之策劃
- 某傳媒公司非公開(kāi)發(fā)行股票基本情況介紹