![第7章 查詢和視圖_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/f025aef7-5148-4447-a2b0-4a347cb2e871/f025aef7-5148-4447-a2b0-4a347cb2e8711.gif)
![第7章 查詢和視圖_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/f025aef7-5148-4447-a2b0-4a347cb2e871/f025aef7-5148-4447-a2b0-4a347cb2e8712.gif)
![第7章 查詢和視圖_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/f025aef7-5148-4447-a2b0-4a347cb2e871/f025aef7-5148-4447-a2b0-4a347cb2e8713.gif)
![第7章 查詢和視圖_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/f025aef7-5148-4447-a2b0-4a347cb2e871/f025aef7-5148-4447-a2b0-4a347cb2e8714.gif)
![第7章 查詢和視圖_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/f025aef7-5148-4447-a2b0-4a347cb2e871/f025aef7-5148-4447-a2b0-4a347cb2e8715.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第 7 章章查詢和視圖查詢和視圖本章學(xué)習(xí)目標(biāo):本章學(xué)習(xí)目標(biāo):q掌握掌握T-SQL作為數(shù)據(jù)定義語言的語法與應(yīng)用作為數(shù)據(jù)定義語言的語法與應(yīng)用q掌握掌握WHERE、ORDER BY、GROUP BY、HAVING子句的使用子句的使用q掌握基本的多表查詢掌握基本的多表查詢q掌握內(nèi)連接、外連接、交叉連接和聯(lián)合查詢的掌握內(nèi)連接、外連接、交叉連接和聯(lián)合查詢的使用使用q掌握多行和單值子查詢的使用掌握多行和單值子查詢的使用q掌握嵌套子查詢的使用掌握嵌套子查詢的使用q了解表的視圖了解表的視圖7.1 連接、選擇和投影連接、選擇和投影nSQL Server 2008是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng)是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),
2、在關(guān)系數(shù)據(jù)庫中,必須提供一種對二維表進(jìn),在關(guān)系數(shù)據(jù)庫中,必須提供一種對二維表進(jìn)行運(yùn)算的機(jī)制。這種機(jī)制除了包括傳統(tǒng)的集合行運(yùn)算的機(jī)制。這種機(jī)制除了包括傳統(tǒng)的集合運(yùn)算中的并、交、差、廣義笛卡爾積以外,還運(yùn)算中的并、交、差、廣義笛卡爾積以外,還包括專門的關(guān)系運(yùn)算中的選擇、投影和連接。包括專門的關(guān)系運(yùn)算中的選擇、投影和連接。7.1.1 選擇(Selection)n選擇是單目運(yùn)算,它是按照一定的條件,從關(guān)系R中選擇出滿足條件的行為作為結(jié)果返回。選擇運(yùn)算的操作對象是一張二維表,其運(yùn)算結(jié)果也是一張二維表。7.1.2 投影(Projection)n投影也是單目運(yùn)算,該運(yùn)算從表中選出指定的屬性值組成一個新表,7
3、.1.3 連接(JOIN)n把兩個表中的行按著給定的條件拼接而形成的新表。n連接也稱為連接n連接運(yùn)算的含義:從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組nA和B:分別為R和S上度數(shù)相等且可比的屬性組7.2 數(shù)據(jù)查詢語句數(shù)據(jù)查詢語句(SELECT語句語句)n查詢功能是查詢功能是T-SQL的核心,通過的核心,通過T-SQL的查詢的查詢可以從表或視圖中迅速、方便地檢索數(shù)據(jù)。可以從表或視圖中迅速、方便地檢索數(shù)據(jù)。nT-SQL的查詢最基本的方式是的查詢最基本的方式是SELECT語句,語句,其功能十分強(qiáng)大。它能夠以任意順序、從任意其功能十分強(qiáng)大。它能夠以任意順序、從任意數(shù)目的列中查詢數(shù)據(jù),并在查詢過
4、程中進(jìn)行計(jì)數(shù)目的列中查詢數(shù)據(jù),并在查詢過程中進(jìn)行計(jì)算,甚至能包含來自其他表的數(shù)據(jù)。算,甚至能包含來自其他表的數(shù)據(jù)。n我們選取我們選取studentinfo數(shù)據(jù)庫作為示例數(shù)據(jù)庫,數(shù)據(jù)庫作為示例數(shù)據(jù)庫,以下例句均省略打開數(shù)據(jù)庫的以下例句均省略打開數(shù)據(jù)庫的USE studentinfo.nstudentinfo數(shù)據(jù)庫有三張數(shù)據(jù)表:數(shù)據(jù)庫有三張數(shù)據(jù)表:student、course和和sc。 nSELECT語句的完整語法格式為:語句的完整語法格式為:SELECT FROM |WHERE |GROUP BY HAVING ORDER BY ASC|DESCn其中的其中的SELECT和和FROM語句為必選子
5、句,而語句為必選子句,而WHERE、ORDER BY和和GROUP BY子句為可選子句為可選子句,要根據(jù)查詢的需要去選用。子句,要根據(jù)查詢的需要去選用。nSELECT語法中各參數(shù)進(jìn)行說明:語法中各參數(shù)進(jìn)行說明:qSELECT子句:用來指定由查詢返回的列,并子句:用來指定由查詢返回的列,并且各列在且各列在SELECT子句中的順序決定了它們在子句中的順序決定了它們在結(jié)果表中的順序;結(jié)果表中的順序;qFROM子句:用來指定數(shù)據(jù)來源的表;子句:用來指定數(shù)據(jù)來源的表;qWHERE子句:用來限定返回行的搜索條件;子句:用來限定返回行的搜索條件;qGROUP BY子句:用來指定查詢結(jié)果的分組條子句:用來指定
6、查詢結(jié)果的分組條件;件;qORDER BY子句:用來指定結(jié)果的排序方式。子句:用來指定結(jié)果的排序方式。nSELECT語句可以寫在一行中。但對于復(fù)雜的查語句可以寫在一行中。但對于復(fù)雜的查詢,詢,SELECT語句隨著查詢子句的增加不斷增長,語句隨著查詢子句的增加不斷增長,一行很難寫下,此時(shí)可以采用分行的寫法,即每一行很難寫下,此時(shí)可以采用分行的寫法,即每個子句分別在不同的行中。需要注意,子句與子個子句分別在不同的行中。需要注意,子句與子句之間不能使用符號分隔。句之間不能使用符號分隔。7.2.1 SELECT語句對列的查詢語句對列的查詢n對列的查詢實(shí)質(zhì)上是對關(guān)系的對列的查詢實(shí)質(zhì)上是對關(guān)系的“投影投影
7、”操作。操作。在很多情況下,用戶只對表中的一部分列感興在很多情況下,用戶只對表中的一部分列感興趣,可以使用趣,可以使用SELECT子句來指明要查詢的列,子句來指明要查詢的列,并可根據(jù)需要改變輸出列顯示的先后順序。并可根據(jù)需要改變輸出列顯示的先后順序。nT-SQL中對列的查詢是通過對中對列的查詢是通過對SELECT子句中子句中的列名選項(xiàng)進(jìn)行設(shè)置完成的,具體格式為:的列名選項(xiàng)進(jìn)行設(shè)置完成的,具體格式為:SELECT ALL|DISTINCT TOP n PERCENT *|表的名稱表的名稱.*|視圖名稱視圖名稱.* /*選擇表或視圖中的全部列選擇表或視圖中的全部列*/| 列的名稱列的名稱|列的表達(dá)
8、式列的表達(dá)式 AS 列的別名列的別名 /*選擇指定的列選擇指定的列*/,n1. 查詢一個表中的全部列查詢一個表中的全部列n選擇表的全部列時(shí),可以使用星號選擇表的全部列時(shí),可以使用星號“*”來表示所有來表示所有的列。的列?!纠?-9】檢索檢索students表、表、course表和表和sc表中的所有表中的所有紀(jì)錄。紀(jì)錄。nT-SQL語句為:語句為:USE StuInfoSELECT * FROM studentSELECT * FROM courseSELECT * FROM scn也可以將三個表的操作合并為一條語句,使結(jié)果在一也可以將三個表的操作合并為一條語句,使結(jié)果在一個表中顯示:個表中顯
9、示:SELECT student.*, course.*, sc.* FROM student, course, sc 2. 查詢一個表中部分列查詢一個表中部分列n若查詢數(shù)據(jù)時(shí)要選擇一個表中的部分列信息,若查詢數(shù)據(jù)時(shí)要選擇一個表中的部分列信息,則在則在SELECT后給出需要的列即可,各列名之后給出需要的列即可,各列名之間逗號分隔。間逗號分隔?!纠?-10】檢索檢索student表中學(xué)生的部分信息,表中學(xué)生的部分信息,包括學(xué)號、學(xué)生姓名和所屬院系。包括學(xué)號、學(xué)生姓名和所屬院系。nT-SQL語句為:語句為:SELECT sno, sname, sdept FROM student3. 為列設(shè)置別
10、名為列設(shè)置別名n通常情況下,當(dāng)從一個表中取出列值時(shí),該值與列的名稱通常情況下,當(dāng)從一個表中取出列值時(shí),該值與列的名稱是聯(lián)系在一起的。如上例中從是聯(lián)系在一起的。如上例中從student表中取出學(xué)號與學(xué)表中取出學(xué)號與學(xué)生姓名,取出的值就與生姓名,取出的值就與sno和和sname有聯(lián)系。當(dāng)希望查詢有聯(lián)系。當(dāng)希望查詢結(jié)果中的列使用新的名字來取代原來的列名稱時(shí),可以使結(jié)果中的列使用新的名字來取代原來的列名稱時(shí),可以使用以下方法:用以下方法:q列名之后使用列名之后使用AS關(guān)鍵字來更改查詢結(jié)果中的列標(biāo)題名。關(guān)鍵字來更改查詢結(jié)果中的列標(biāo)題名。如如sno AS 學(xué)號;學(xué)號;q直接在列名后使用列的別名,列的別名可
11、帶雙引號、單直接在列名后使用列的別名,列的別名可帶雙引號、單引號或不帶引號。引號或不帶引號?!纠?-11】檢索檢索student表中學(xué)生的表中學(xué)生的Sno、Sname、Sage和和Sdept,結(jié)果中各列的標(biāo)題分別指定為學(xué)號、學(xué)生姓名、,結(jié)果中各列的標(biāo)題分別指定為學(xué)號、學(xué)生姓名、年齡和所屬院系。年齡和所屬院系。nT-SQL語句為:語句為:SELECT sno as 學(xué)生學(xué)號學(xué)生學(xué)號, sname 學(xué)生姓名學(xué)生姓名, sage 年年齡齡 ,sdept 所屬院系所屬院系 FROM student4. 計(jì)算列值計(jì)算列值n使用使用SELECT語句對列進(jìn)行查詢時(shí),語句對列進(jìn)行查詢時(shí),SELECT后可以跟
12、列的表達(dá)式。也就是說,使用后可以跟列的表達(dá)式。也就是說,使用SELECT語句不僅可以查詢原來表中已有的列,語句不僅可以查詢原來表中已有的列,還可以通過計(jì)算得到新的列。還可以通過計(jì)算得到新的列?!纠?-12】查詢查詢sc表中的學(xué)生成績,并且顯示表中的學(xué)生成績,并且顯示折算后的分?jǐn)?shù)。(折算方法:原始分?jǐn)?shù)折算后的分?jǐn)?shù)。(折算方法:原始分?jǐn)?shù)*1.2)n T-SQL語句為:語句為:SELECT sno,score AS 原始分?jǐn)?shù)原始分?jǐn)?shù), score*1.2 AS 折算后分?jǐn)?shù)折算后分?jǐn)?shù) FROM sc5. 消除結(jié)果中的重復(fù)項(xiàng)消除結(jié)果中的重復(fù)項(xiàng)n在一張完整的關(guān)系數(shù)據(jù)庫表中不可能出現(xiàn)兩個完在一張完整的關(guān)系
13、數(shù)據(jù)庫表中不可能出現(xiàn)兩個完全相同的紀(jì)錄,但由于我們在查詢時(shí)經(jīng)常只涉及全相同的紀(jì)錄,但由于我們在查詢時(shí)經(jīng)常只涉及表的部分字段,這樣,就有可能出現(xiàn)重復(fù)行,可表的部分字段,這樣,就有可能出現(xiàn)重復(fù)行,可以使用以使用DISTINCT短語可以避免這種情況。短語可以避免這種情況。n關(guān)鍵字關(guān)鍵字DISTINCT的含義是對結(jié)果中的重復(fù)行只的含義是對結(jié)果中的重復(fù)行只選擇一個,以保證行的唯一性。選擇一個,以保證行的唯一性。【例例7-13】從從student表中查詢所有的院系信息,表中查詢所有的院系信息,并去掉重復(fù)信息。并去掉重復(fù)信息。n T-SQL語句為:語句為:SELECT DISTINCT sdept FROM
14、 studentn可以看到,可以看到,student表一共只有表一共只有4個專業(yè)。個專業(yè)。n與與DISTINCT相反,當(dāng)使用關(guān)鍵字相反,當(dāng)使用關(guān)鍵字ALL時(shí),將保留時(shí),將保留結(jié)果中的所有行。在省略結(jié)果中的所有行。在省略DISTINCT和和ALL的情況的情況下,下,SELECT語句默認(rèn)為語句默認(rèn)為ALL。6. 限制結(jié)果返回的行數(shù)限制結(jié)果返回的行數(shù)n若若SELECT語句返回的結(jié)果行數(shù)非常多,而用戶只需語句返回的結(jié)果行數(shù)非常多,而用戶只需要返回滿足條件的前幾條紀(jì)錄,可以使用要返回滿足條件的前幾條紀(jì)錄,可以使用TOP n PERCENT可選子句。其中可選子句。其中n是一個正整數(shù),表示返是一個正整數(shù),表
15、示返回查詢結(jié)果的前回查詢結(jié)果的前n行。若使用行。若使用PERCENT關(guān)鍵字,則關(guān)鍵字,則表示返回結(jié)果的前表示返回結(jié)果的前n%行。行?!纠?-14】查詢查詢student表中前表中前10個學(xué)號。個學(xué)號。nT-SQL語句為:語句為:SELECT TOP 10 * FROM student執(zhí)行結(jié)果如圖執(zhí)行結(jié)果如圖7-8所示,只返回了所示,只返回了10個學(xué)生的學(xué)號。個學(xué)生的學(xué)號。 查詢前查詢前10%個學(xué)生的記錄:個學(xué)生的記錄: select top 10 percent * from student7.2.2 SELECT語句中的條件查詢語句中的條件查詢n條件查詢是用的最多的一種查詢方式,通過在條件
16、查詢是用的最多的一種查詢方式,通過在WHERE子句中設(shè)置查詢條件可以挑選符合需子句中設(shè)置查詢條件可以挑選符合需要的數(shù)據(jù)、修改某一記錄、刪除某一記錄。條要的數(shù)據(jù)、修改某一記錄、刪除某一記錄。條件查詢本質(zhì)是對表中的數(shù)據(jù)進(jìn)行篩選,即關(guān)系件查詢本質(zhì)是對表中的數(shù)據(jù)進(jìn)行篩選,即關(guān)系運(yùn)算中的運(yùn)算中的“選擇選擇”操作。操作。n在在SELECT語句中,語句中,WHERE子句必須緊跟在子句必須緊跟在FROM子句后,其基本格式為:子句后,其基本格式為:qWHERE 1. 使用比較運(yùn)算符使用比較運(yùn)算符n我們使用上一章介紹的比較運(yùn)算符來比較表達(dá)式值的我們使用上一章介紹的比較運(yùn)算符來比較表達(dá)式值的大小,包括:大小,包括:
17、=(等于等于)、(大于大于)、=(大于大于等于等于)、=(小于等于小于等于)、!=(不等于不等于)、(不等不等于于)、!(不大于不大于)。運(yùn)算結(jié)果為。運(yùn)算結(jié)果為TRUE或者或者FALSE【例例7-15】在在student表中查詢信息系(表中查詢信息系(IM)的學(xué)生。)的學(xué)生。nT-SQL語句為:語句為:SELECT * FROM student WHERE sdept=IMn顯示的全為信息系的同學(xué)。顯示的全為信息系的同學(xué)。2. 使用邏輯運(yùn)算符使用邏輯運(yùn)算符n邏輯運(yùn)算符包括邏輯運(yùn)算符包括AND、OR和和NOT,用于連接,用于連接WHERE子句中的多個查詢條件。當(dāng)一條語句中同時(shí)含有多個邏子句中的多
18、個查詢條件。當(dāng)一條語句中同時(shí)含有多個邏輯運(yùn)算符時(shí),取值的優(yōu)先順序?yàn)椋狠嬤\(yùn)算符時(shí),取值的優(yōu)先順序?yàn)椋篘OT、AND和和OR?!纠?-16】在在student表中查詢年齡在小于表中查詢年齡在小于18或者大于或者大于22,并且籍貫是河南的學(xué)生信息。并且籍貫是河南的學(xué)生信息。nT-SQL語句為:語句為:SELECT * FROM student WHERE (sage22) and snativeplace=河南河南n顯示的滿足條件的有三名同學(xué)。顯示的滿足條件的有三名同學(xué)。3. 使用使用LIKE模式匹配模式匹配n在查找記錄時(shí),若不是很適合使用算術(shù)運(yùn)算符和在查找記錄時(shí),若不是很適合使用算術(shù)運(yùn)算符和邏輯
19、運(yùn)算符,則可能要用到更高級的技術(shù)。邏輯運(yùn)算符,則可能要用到更高級的技術(shù)。nLIKE是模式匹配運(yùn)算符,用于指出一個字符串是是模式匹配運(yùn)算符,用于指出一個字符串是否與指定的字符串相匹配。使用否與指定的字符串相匹配。使用LIKE進(jìn)行匹配時(shí),進(jìn)行匹配時(shí),可以使用通配符,即可以使用模糊查詢??梢允褂猛ㄅ浞?,即可以使用模糊查詢。nT-SQL中使用的通配符有中使用的通配符有“%”、“_”、“ ”和和“”。通配符用在要查找的字符串的旁邊。它。通配符用在要查找的字符串的旁邊。它們可以一起使用,使用其中的一種并不排斥使用們可以一起使用,使用其中的一種并不排斥使用其他的通配符。其他的通配符。q“%”用于字符串的末尾
20、或開始處,代表用于字符串的末尾或開始處,代表0個或個或任意多個字符。如要查找姓名中有任意多個字符。如要查找姓名中有“a”的教師,的教師,可以使用可以使用“%a%”,這樣會查找出姓名中任何,這樣會查找出姓名中任何位置包含字母位置包含字母“a”的記錄;的記錄;q“_”代表單個字符。使用代表單個字符。使用“_a”,將返回任何,將返回任何名字為兩個字符且第二個字符是名字為兩個字符且第二個字符是“a”的姓名記的姓名記錄;錄;q“ ”允許在指定值的集合或范圍中查找單個字允許在指定值的集合或范圍中查找單個字符。如要搜索名字中包含介于符。如要搜索名字中包含介于a-f之間的單個字之間的單個字符的記錄,可以使用符
21、的記錄,可以使用LIKE “%a-f%”;q“”與與“”相反,用于指定不屬于范圍內(nèi)的相反,用于指定不屬于范圍內(nèi)的字符。如字符。如abcdef表示不屬于表示不屬于abcdef集合中集合中的字符。的字符。n【例例7-17】在在students表中查詢姓表中查詢姓“趙趙”的的學(xué)生信息。學(xué)生信息。nT-SQL語句為:語句為:nSELECT * FROM student WHERE sname like 趙趙%4. 確定范圍確定范圍nT-SQL中與范圍有關(guān)的關(guān)鍵字有兩個:中與范圍有關(guān)的關(guān)鍵字有兩個:BETWEEN和和IN。n當(dāng)要查詢的條件是某個值的范圍時(shí),使用當(dāng)要查詢的條件是某個值的范圍時(shí),使用BETW
22、EENAND來指出查詢范圍。其中,來指出查詢范圍。其中,AND的左的左端給出查詢范圍的下限,端給出查詢范圍的下限,AND的右端給出查詢范圍的上限。的右端給出查詢范圍的上限?!纠?-18】在在sc表中,查詢成績在表中,查詢成績在60到到80分的學(xué)生情況分的學(xué)生情況nT-SQL語句為:語句為:nSELECT * FROM sc WHERE grade between 60 and 80n關(guān)鍵字關(guān)鍵字IN用來表示查詢范圍屬于指定的集合。集合中列出用來表示查詢范圍屬于指定的集合。集合中列出所有可能的值,當(dāng)表中的值與集合中的任意一個值匹配時(shí),所有可能的值,當(dāng)表中的值與集合中的任意一個值匹配時(shí),即滿足條
23、件。即滿足條件?!纠?-19】在在student表中查詢表中查詢IM系和系和CAST系同學(xué)的情況。系同學(xué)的情況。nT-SQL語句為:語句為:nSELECT * FROM student WHERE sdept IN(CSAT,IM) n該語句等價(jià)于語句:該語句等價(jià)于語句:nSELECT * FROM student WHERE Sdept=CSAT or Sdept=NIMn執(zhí)行結(jié)果如圖執(zhí)行結(jié)果如圖7-13所示所示5. 涉及空值涉及空值NULL的查詢的查詢n值為值為“空空”并非沒有值,而是一個特殊的符號并非沒有值,而是一個特殊的符號“NULL”。一個字段是否允許為空,需要在。一個字段是否允許
24、為空,需要在建立表的結(jié)構(gòu)時(shí)設(shè)置。當(dāng)要判斷一個表達(dá)式的建立表的結(jié)構(gòu)時(shí)設(shè)置。當(dāng)要判斷一個表達(dá)式的值是否為空值時(shí),使用值是否為空值時(shí),使用IS NULL關(guān)鍵字關(guān)鍵字【例例7-20】查詢?nèi)鄙賳慰瞥煽兊膶W(xué)生的信息。查詢?nèi)鄙賳慰瞥煽兊膶W(xué)生的信息。nT-SQL語句為:語句為:SELECT * FROM sc WHERE grade IS NULL7.2.3 ORDER BY子句的使用子句的使用n利用利用ORDER BY子句可以對查詢的結(jié)果按照指定字段進(jìn)子句可以對查詢的結(jié)果按照指定字段進(jìn)行排序。行排序。nORDER BY子句格式為:子句格式為:ORDER BY 排序表達(dá)式排序表達(dá)式 ASC|DESCn其中其中
25、ASC代表升序,代表升序,DESC表示降序,默認(rèn)時(shí)為升序排列。表示降序,默認(rèn)時(shí)為升序排列。對數(shù)據(jù)類型為對數(shù)據(jù)類型為TEXT、NTEXT和和IMAGE的字段不能使用的字段不能使用ORDER BY進(jìn)行排序。進(jìn)行排序?!纠?-21】查詢查詢student表中全體女學(xué)生的情況,要求結(jié)果表中全體女學(xué)生的情況,要求結(jié)果按照年齡降序排列。按照年齡降序排列。nT-SQL語句為:語句為:SELECT * FROM student WHERE ssex=N女女 ORDER BY sage DESC7.2.4 GROUP BY子句的使用子句的使用n在在T-SQL中經(jīng)常使用聚合函數(shù)和中經(jīng)常使用聚合函數(shù)和GROUP
26、BY子句來實(shí)現(xiàn)統(tǒng)計(jì)計(jì)算。子句來實(shí)現(xiàn)統(tǒng)計(jì)計(jì)算。n1. 聚合函數(shù)聚合函數(shù)n聚合函數(shù)用于處理單個列中所選的全部值,并生成一個結(jié)果值。聚合函數(shù)用于處理單個列中所選的全部值,并生成一個結(jié)果值。n常用的聚合函數(shù)有:常用的聚合函數(shù)有:【例例7-22】 統(tǒng)計(jì)查詢統(tǒng)計(jì)查詢student表中學(xué)生的總?cè)藬?shù)。表中學(xué)生的總?cè)藬?shù)。nT-SQL語句為:語句為:SELECT COUNT(*) FROM student 【例例7-23】查詢選修查詢選修01課程學(xué)生的最高分,最課程學(xué)生的最高分,最低分和平均分低分和平均分nT-SQL語句為:語句為:SELECT MAX(grade) as 01課程最高分課程最高分,MIN(gra
27、de) as 01課程最低分課程最低分, AVG(grade) as 01課程平均分課程平均分FROM sc WHERE cno=012. GROUP BY子句子句nGROUP BY子句用于對表或視圖中的數(shù)據(jù)按字段分組,子句用于對表或視圖中的數(shù)據(jù)按字段分組,還可以利用還可以利用HAVING短語按照一定的條件對分組后的數(shù)據(jù)短語按照一定的條件對分組后的數(shù)據(jù)進(jìn)行篩選。進(jìn)行篩選。nGROUP BY子句格式為:子句格式為:GROUP BY ALL 分組表達(dá)式分組表達(dá)式 HAVING 查詢條件查詢條件n需要注意的是,當(dāng)使用需要注意的是,當(dāng)使用HAVING短語指定篩選條件時(shí),短語指定篩選條件時(shí),HAVING
28、短語必須與短語必須與GROUP BY配合使用。配合使用?!纠?-24】求求student表中各個專業(yè)的學(xué)生人數(shù)。表中各個專業(yè)的學(xué)生人數(shù)。nT-SQL語句為:語句為:SELECT sdept,COUNT(*) as 學(xué)生人數(shù)學(xué)生人數(shù) FROM studentGROUP BY sdept【例例7-25】查詢查詢sc表中選修了兩門課并且成績均不及格的學(xué)表中選修了兩門課并且成績均不及格的學(xué)生的學(xué)號生的學(xué)號n分析:我們將分析:我們將SC表中的成績不及格的學(xué)生按照學(xué)號分組,表中的成績不及格的學(xué)生按照學(xué)號分組,對各個分組進(jìn)行篩選,找出紀(jì)錄數(shù)大于對各個分組進(jìn)行篩選,找出紀(jì)錄數(shù)大于2的學(xué)生學(xué)號,進(jìn)的學(xué)生學(xué)號,
29、進(jìn)行結(jié)果輸出。行結(jié)果輸出。nT-SQL語句為:語句為:SELECT sno FROM sc WHERE score27.2.4 表的連接表的連接(JOIN)n以上我們介紹的都是單表查詢,在實(shí)際應(yīng)用中,以上我們介紹的都是單表查詢,在實(shí)際應(yīng)用中,經(jīng)常需要把兩個或者多個表按照給定的條件進(jìn)經(jīng)常需要把兩個或者多個表按照給定的條件進(jìn)行連接而形成新的表。行連接而形成新的表。n多表連接使用多表連接使用FROM子句指定多個表,連接條子句指定多個表,連接條件指定各列之間(每個表至少一列)進(jìn)行連接件指定各列之間(每個表至少一列)進(jìn)行連接的關(guān)系。連接條件中的列必須具有一致的數(shù)據(jù)的關(guān)系。連接條件中的列必須具有一致的數(shù)據(jù)
30、類型。類型。n在在T-SQL中,連接查詢有兩大類實(shí)現(xiàn)形式,一中,連接查詢有兩大類實(shí)現(xiàn)形式,一類是使用等值連接形式,另一類是使用關(guān)鍵字類是使用等值連接形式,另一類是使用關(guān)鍵字JOIN連接形式。連接形式。1. 等值連接等值連接n等值連接的連接條件是在等值連接的連接條件是在WHERE子句中給出的,子句中給出的,只有滿足連接條件的行才會出現(xiàn)在查詢結(jié)果中。只有滿足連接條件的行才會出現(xiàn)在查詢結(jié)果中。這種形式也被稱為連接謂詞表示形式,是這種形式也被稱為連接謂詞表示形式,是SQL語語言早期的連接形式。言早期的連接形式。n等值連接的連接條件格式:等值連接的連接條件格式:表名表名1.字段名字段名1=表名表名2.字
31、段名字段名2【例例7-26】從從student表和表和sc表中,查詢所有不及表中,查詢所有不及格的學(xué)生的學(xué)號、學(xué)生姓名、所屬院系、所選的格的學(xué)生的學(xué)號、學(xué)生姓名、所屬院系、所選的課程號和成績。課程號和成績。nT-SQL語句為:語句為:SELECT student.sno,sname,sdept,cno,grade FROM student,sc WHERE student.sno=sc.sno and grade60說明:說明:n本例中,本例中,WHERE子句既有查詢條件(子句既有查詢條件(Grade60),),又有連接條件(又有連接條件(student.Sno=sc.Sno););n連接條件
32、中的兩個字段稱為連接字段,它們必須是具連接條件中的兩個字段稱為連接字段,它們必須是具有一致的數(shù)據(jù)類型。如本例中連接字段分別為有一致的數(shù)據(jù)類型。如本例中連接字段分別為student表的表的sno字段和字段和sc表中的表中的sno字段;字段;n在單表查詢中,所有的字段都來自于同一張表,故在在單表查詢中,所有的字段都來自于同一張表,故在SELECT語句中不需要特別說明。但是在多表查詢中,語句中不需要特別說明。但是在多表查詢中,有的字段(如有的字段(如sno字段)在幾個表中都出現(xiàn)了,引用字段)在幾個表中都出現(xiàn)了,引用時(shí)就必須說明其來自那個表,否則就可能引起混亂,時(shí)就必須說明其來自那個表,否則就可能引起
33、混亂,造成語法錯誤;造成語法錯誤;n連接條件中使用的比較符可以是連接條件中使用的比較符可以是、=、!=、!。當(dāng)比較符為。當(dāng)比較符為“=”時(shí),就是等值時(shí),就是等值連接。連接。2. JOIN關(guān)鍵字連接多個表關(guān)鍵字連接多個表nT-SQL擴(kuò)展了連接的形式,引入了擴(kuò)展了連接的形式,引入了JOINON關(guān)鍵字關(guān)鍵字連接形式,從而使表的連接運(yùn)算能力得到了增強(qiáng)。連接形式,從而使表的連接運(yùn)算能力得到了增強(qiáng)。nJOINON關(guān)鍵字放在關(guān)鍵字放在FROM子句中,命令格式如下:子句中,命令格式如下:FROM INNER|LEFT|RIGHT|FULL OUTER JOIN ON n這種連接形式通過這種連接形式通過FROM
34、給出連接類型,用給出連接類型,用JOIN表表示連接,用示連接,用ON短語給出連接條件。短語給出連接條件。nJOIN提供了多種類型的連接方法:內(nèi)連接、外連接提供了多種類型的連接方法:內(nèi)連接、外連接和交叉連接。它們之間的區(qū)別在于:從相互關(guān)聯(lián)的不和交叉連接。它們之間的區(qū)別在于:從相互關(guān)聯(lián)的不同表中選擇用于連接的行時(shí)所采用的方法不同。同表中選擇用于連接的行時(shí)所采用的方法不同。 內(nèi)連接內(nèi)連接INNER查詢查詢n內(nèi)連接是最常見的一種連接,也被稱為普通連接或自內(nèi)連接是最常見的一種連接,也被稱為普通連接或自然連接,它是系統(tǒng)默認(rèn)形式,在實(shí)際使用中可以省略然連接,它是系統(tǒng)默認(rèn)形式,在實(shí)際使用中可以省略INNER關(guān)
35、鍵字。關(guān)鍵字。n例例7-26也可以改寫成如下形式實(shí)現(xiàn):也可以改寫成如下形式實(shí)現(xiàn):SELECT student.sno,sname,sdept,cno,grade FROM student JOIN sc ON student.sno=sc.sno WHERE grade60n使用使用JOINON連接詞替換了上例中的連接詞替換了上例中的WHERE子句子句的連接條件。內(nèi)連接與等值連接效果相同相同,僅當(dāng)?shù)倪B接條件。內(nèi)連接與等值連接效果相同相同,僅當(dāng)兩個表中都至少有一行符合連接條件時(shí),內(nèi)連接才返兩個表中都至少有一行符合連接條件時(shí),內(nèi)連接才返回行。回行。外連接外連接OUTER查詢查詢n外連接是指連接關(guān)鍵
36、字外連接是指連接關(guān)鍵字JOIN后面表中指定列連接在前一后面表中指定列連接在前一表中指定列的左邊或者右邊,如果兩表中指定列沒有匹配表中指定列的左邊或者右邊,如果兩表中指定列沒有匹配行,則返回空值。行,則返回空值。n外連接的結(jié)果不但包含滿足連接條件的行,還包含相應(yīng)表外連接的結(jié)果不但包含滿足連接條件的行,還包含相應(yīng)表中的所有行。外連接有三種形式,其中的中的所有行。外連接有三種形式,其中的OUTER可以省可以省略:略:(1)左外連接()左外連接(LEFT OUTER JOIN或或LEFT JOIN):):包含左邊表的全部行(不管右邊的表中是否存在與它們匹包含左邊表的全部行(不管右邊的表中是否存在與它們
37、匹配的行),以及右邊表中全部滿足條件的行。配的行),以及右邊表中全部滿足條件的行。(2)右外連接()右外連接(RIGHT OUTER JOIN或或RIGHT JOIN):):包含右邊表的全部行(不管左邊的表中是否存在與它們匹包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行),以及左邊表中全部滿足條件的行。配的行),以及左邊表中全部滿足條件的行。(3)全外連接()全外連接(FULL OUTER JOIN或或FULL JOIN):):包含左、右兩個表的全部行,不管另外一邊的表中是否存包含左、右兩個表的全部行,不管另外一邊的表中是否存在與它們匹配的行,其實(shí)全外連接將返回兩個表的所有行。在與它
38、們匹配的行,其實(shí)全外連接將返回兩個表的所有行。n在現(xiàn)實(shí)生活中,參照完整性約束可以減少對于全外連接的在現(xiàn)實(shí)生活中,參照完整性約束可以減少對于全外連接的使用,一般情況下左外連接就足夠了。但當(dāng)在數(shù)據(jù)庫中沒使用,一般情況下左外連接就足夠了。但當(dāng)在數(shù)據(jù)庫中沒有利用清晰、規(guī)范的約束來防范錯誤數(shù)據(jù)情況下,全外連有利用清晰、規(guī)范的約束來防范錯誤數(shù)據(jù)情況下,全外連接就變得非常有用了,你可以使用它來清理數(shù)據(jù)庫中的數(shù)接就變得非常有用了,你可以使用它來清理數(shù)據(jù)庫中的數(shù)據(jù)。據(jù)。 【例例7-27】分別用左外連接和右外連接查詢分別用左外連接和右外連接查詢student表表和和sc表中的學(xué)生的表中的學(xué)生的Sno、Cno、Sn
39、ame和和Grade。比。比較查詢結(jié)果的區(qū)別并分析。較查詢結(jié)果的區(qū)別并分析。n左外連接左外連接T-SQL語句為:語句為:SELECT student.sno,cno,sname,gradeFROM student LEFT JOIN sc ON sc.sno=student.snon右外連接右外連接T-SQL語句為:語句為:SELECT student.sno,cno,sname,gradeFROM student RIGHT JOIN sc ON sc.sno=student.sno交叉連接交叉連接(CROSS JOIN)n交叉連接即兩個表的笛卡爾積,返回結(jié)果是由第一個表的交叉連接即兩個表的
40、笛卡爾積,返回結(jié)果是由第一個表的每行與第二個表的所有行組合后形成的表,因此,數(shù)據(jù)行每行與第二個表的所有行組合后形成的表,因此,數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。交叉連接關(guān)鍵字中符合查詢條件的數(shù)據(jù)行數(shù)。交叉連接關(guān)鍵字CROSS JOIN后不跟后不跟ON短語引出的連接條件。短語引出的連接條件?!纠?-28】交叉連接交叉連接student和和sc兩表,查看新表的行數(shù)。兩表,查看新表的行數(shù)。nT-SQL語句為:語句為:SELECT * FROM studentSELECT * FROM scSELECT
41、 student.*,sc.* FROM student CROSS JOIN scn執(zhí)行結(jié)果如圖執(zhí)行結(jié)果如圖7-20所示,可以看到,所示,可以看到,student表有表有239行,行,sc表有表有929行,因此,兩表相乘有行,因此,兩表相乘有222031行。行。7.2.5 子查詢子查詢n在在SELECT查詢語句中,子查詢也稱為嵌套查詢,是查詢語句中,子查詢也稱為嵌套查詢,是一個嵌套在一個嵌套在 SELECT中的查詢語句。處于內(nèi)層的查中的查詢語句。處于內(nèi)層的查詢稱為子查詢,處于外層的查詢稱為父查詢。任何允詢稱為子查詢,處于外層的查詢稱為父查詢。任何允許使用表達(dá)式的地方都可以使用子查詢。許使用表
42、達(dá)式的地方都可以使用子查詢。T-SQL語句語句支持子查詢,正是支持子查詢,正是SQL結(jié)構(gòu)化的具體體現(xiàn)。結(jié)構(gòu)化的具體體現(xiàn)。n子查詢子查詢SELECT語句必須放在括號中,子查詢只返回語句必須放在括號中,子查詢只返回一行數(shù)據(jù),并且返回的數(shù)據(jù)常常也只有一列??梢杂靡恍袛?shù)據(jù),并且返回的數(shù)據(jù)常常也只有一列??梢杂米硬樵儊頇z查或者設(shè)置變量和列的值,或者用子查詢子查詢來檢查或者設(shè)置變量和列的值,或者用子查詢來測試數(shù)據(jù)行是否存在于來測試數(shù)據(jù)行是否存在于WHERE子句中。需要注意子句中。需要注意的是的是ORDER BY子句只能對最終查詢結(jié)果排序,即子句只能對最終查詢結(jié)果排序,即在子查詢中的在子查詢中的SELECT
43、語句中不能使用語句中不能使用ORDER BY子子句。句。1. 使用使用IN關(guān)鍵字的子查詢關(guān)鍵字的子查詢n由于子查詢的結(jié)果是記錄的集合,故常使用謂詞由于子查詢的結(jié)果是記錄的集合,故常使用謂詞IN來實(shí)現(xiàn)。來實(shí)現(xiàn)。nIN謂詞用于判斷一個給定值是否在子查詢結(jié)果集謂詞用于判斷一個給定值是否在子查詢結(jié)果集中。當(dāng)父查詢表達(dá)式與子查詢的結(jié)果集中的某個中。當(dāng)父查詢表達(dá)式與子查詢的結(jié)果集中的某個值相等時(shí),返回值相等時(shí),返回TURE,否則返回,否則返回FALSE。同時(shí),。同時(shí),可以在可以在IN關(guān)鍵字之前使用關(guān)鍵字之前使用NOT,表示表達(dá)式的值,表示表達(dá)式的值不在查詢結(jié)果集中。不在查詢結(jié)果集中?!纠?-29】查詢至
44、少有一門課程不及格的學(xué)生的信息。查詢至少有一門課程不及格的學(xué)生的信息。nT-SQL語句為:語句為:SELECT * FROM student WHERE sno IN(SELECT sno FROM sc WHERE scoreALL(SELECT grade FROM sc WHERE sno=(SELECT sno FROM student WHERE sname=N王小華王小華)SELECT * FROM sc WHERE grade ANY(SELECT grade FROM sc WHERE sno=(SELECT sno FROM student WHERE sname=N王小華王
45、小華)4. 使用使用EXISTS 的子查詢的子查詢nEXISTS稱為存在量詞,稱為存在量詞,WHERE子句中使用子句中使用EXISTS表示表示當(dāng)子查詢的結(jié)果非空時(shí),條件為當(dāng)子查詢的結(jié)果非空時(shí),條件為TRUE,反之則為,反之則為FALSE。EXISTS前面也可以加前面也可以加NOT,表示檢測條件為,表示檢測條件為“不存在不存在”。nEXISTS語句與語句與IN非常類似,它們都根據(jù)來自子查詢的數(shù)非常類似,它們都根據(jù)來自子查詢的數(shù)據(jù)子集測試列的值。不同之處在于,據(jù)子集測試列的值。不同之處在于,EXISTS使用聯(lián)接將使用聯(lián)接將列的值與子查詢中的列聯(lián)接起來,而列的值與子查詢中的列聯(lián)接起來,而IN不需要聯(lián)
46、接,它直不需要聯(lián)接,它直接根據(jù)一組以逗號分隔的值進(jìn)行比較。接根據(jù)一組以逗號分隔的值進(jìn)行比較?!纠?-32】查詢沒有選修查詢沒有選修01課程的學(xué)生的信息課程的學(xué)生的信息nT-SQL語句為:語句為:SELECT * FROM student WHERE NOT EXISTS(SELECT * FROM sc WHERE sno=student.sno AND cno=01)7.2.6 SELECT語句的其他子句語句的其他子句n除了上面介紹的除了上面介紹的SELECT語句的主要子句外,語句的主要子句外,SELECT還有還有2個常用子句:個常用子句:qINTO子句子句qUNION子句子句使用它們可以
47、實(shí)現(xiàn)更為完備的功能。使用它們可以實(shí)現(xiàn)更為完備的功能。1. INTO子句子句nSELECT語句使用語句使用INTO子句來表明查詢結(jié)果的去向。子句來表明查詢結(jié)果的去向。我們?nèi)绻枰獙⒉樵兊玫降慕Y(jié)果存入新的數(shù)據(jù)表中,我們?nèi)绻枰獙⒉樵兊玫降慕Y(jié)果存入新的數(shù)據(jù)表中,這時(shí)就需要使用語句:這時(shí)就需要使用語句:INTO ,來創(chuàng)建新表,來創(chuàng)建新表,存儲紀(jì)錄。存儲紀(jì)錄。【例例7-33】將將student表中所有年齡為表中所有年齡為19歲的學(xué)生信息歲的學(xué)生信息存入新表存入新表age19中。中。nT-SQL語句為:語句為:SELECT * INTO age19 FROM student WHERE sage=19GO
48、SELECT * FROM age192. UNION子句子句nT-SQL支持集合的并(支持集合的并(UNION)運(yùn)算,執(zhí)行聯(lián)合查詢。需)運(yùn)算,執(zhí)行聯(lián)合查詢。需要注意的是,參與并運(yùn)算操作的兩個查詢語句,其結(jié)果應(yīng)要注意的是,參與并運(yùn)算操作的兩個查詢語句,其結(jié)果應(yīng)具有相同的字段個數(shù),以及相同的對應(yīng)字段的數(shù)據(jù)類型。具有相同的字段個數(shù),以及相同的對應(yīng)字段的數(shù)據(jù)類型。n默認(rèn)情況下,默認(rèn)情況下,UNION將從結(jié)果集中刪除重復(fù)的行。如果將從結(jié)果集中刪除重復(fù)的行。如果使用使用 ALL 關(guān)鍵字,那么結(jié)果中將包含所有行而不刪除重關(guān)鍵字,那么結(jié)果中將包含所有行而不刪除重復(fù)的行。復(fù)的行?!纠?-34】查詢查詢CSA
49、T專業(yè)的女學(xué)生和專業(yè)的女學(xué)生和IM專業(yè)的男學(xué)生信息專業(yè)的男學(xué)生信息nT-SQL語句為:語句為:SELECT * FROM student where sdept=CSAT and ssex=女女UNIONSELECT * FROM student where sdept=IM and ssex=男男7.3 視視 圖圖n7.3.1 視圖概述視圖概述q視圖是一種數(shù)據(jù)庫對象,它是從一個或多個表或視視圖是一種數(shù)據(jù)庫對象,它是從一個或多個表或視圖中導(dǎo)出的虛表,即它可以從一個或多個表中的一圖中導(dǎo)出的虛表,即它可以從一個或多個表中的一個或多個列中提取數(shù)據(jù),并按照表的組成行和列來個或多個列中提取數(shù)據(jù),并按照表
50、的組成行和列來顯示這些信息。顯示這些信息。q視圖與真實(shí)的表也有很多類似的地方。例如,視圖視圖與真實(shí)的表也有很多類似的地方。例如,視圖也是由若干個字段也是由若干個字段(列列)和一些記錄組成的,在某些和一些記錄組成的,在某些條件滿足時(shí),還可以通過視圖來插入、更改和刪除條件滿足時(shí),還可以通過視圖來插入、更改和刪除數(shù)據(jù)。數(shù)據(jù)。n使用視圖有很多優(yōu)點(diǎn),這些優(yōu)點(diǎn)主要如下:使用視圖有很多優(yōu)點(diǎn),這些優(yōu)點(diǎn)主要如下: n(1) 視圖是作為一個數(shù)據(jù)庫對象存在數(shù)據(jù)庫中的,便于管視圖是作為一個數(shù)據(jù)庫對象存在數(shù)據(jù)庫中的,便于管理和維護(hù),而且視圖象表一樣還可以用在查詢語句中,從理和維護(hù),而且視圖象表一樣還可以用在查詢語句中,
51、從而簡化了檢索數(shù)據(jù)的操作。而簡化了檢索數(shù)據(jù)的操作。n(2) 可以定制允許用戶查看哪些數(shù)據(jù),讓用戶通過視圖來可以定制允許用戶查看哪些數(shù)據(jù),讓用戶通過視圖來訪問表中的特定字段和記錄,而不對用戶授予直接訪問數(shù)訪問表中的特定字段和記錄,而不對用戶授予直接訪問數(shù)據(jù)庫表的權(quán)限。據(jù)庫表的權(quán)限。n(3) 可以針對不同的用戶定義不同的視圖,在用戶視圖上可以針對不同的用戶定義不同的視圖,在用戶視圖上不包括機(jī)密數(shù)據(jù)字段,從而自動提供對機(jī)密數(shù)據(jù)的保護(hù)。不包括機(jī)密數(shù)據(jù)字段,從而自動提供對機(jī)密數(shù)據(jù)的保護(hù)。n(4) 可以使用視圖將數(shù)據(jù)導(dǎo)出到其他的應(yīng)用程序??梢允褂靡晥D將數(shù)據(jù)導(dǎo)出到其他的應(yīng)用程序。n(5) 允許用戶以不同的方
52、式查看數(shù)據(jù),即使在用戶同時(shí)使允許用戶以不同的方式查看數(shù)據(jù),即使在用戶同時(shí)使用相同的數(shù)據(jù)也可如此。用相同的數(shù)據(jù)也可如此。7.3.2 視圖的創(chuàng)建視圖的創(chuàng)建n1. 使用使用SQL Server Management Studio創(chuàng)建視圖創(chuàng)建視圖n2. 使用使用Transact-SQL語句中的語句中的CREATE VIEW命令創(chuàng)建視圖命令創(chuàng)建視圖q使用使用CREATE VIEW語句創(chuàng)建視圖的基本語法形式語句創(chuàng)建視圖的基本語法形式如下:如下:qCREATE VIEW schema_name. view_name (column , ,n ) qWITH ENCRYPTION SCHEMABINDING
53、VIEW_METADATA qAS select_statement ; q WITH CHECK OPTION n例【例【7-30】:選擇表】:選擇表s和和sc中的部分字段和中的部分字段和(name,age,sex,cno,score)記錄來創(chuàng)建一個視圖,限記錄來創(chuàng)建一個視圖,限制表制表s中的記錄是計(jì)算機(jī)系的記錄集合,視圖定義為中的記錄是計(jì)算機(jī)系的記錄集合,視圖定義為view_s。nT-SQL語句如下:語句如下:nCREATE VIEW view_snAS nSELECT student.sname,student.sage,student.ssex,o,sc.score nFROM stu
54、dent,scnWHERE student.sno=sc.sno AND student.sdept=計(jì)算機(jī)計(jì)算機(jī);7.3.3 視圖的修改、查看和重命名視圖的修改、查看和重命名1. 視圖的修改視圖的修改(1) 使用使用SSMS圖形化界面修改視圖圖形化界面修改視圖在在SSMS圖形化界面中,右擊要修改的視圖,從彈出圖形化界面中,右擊要修改的視圖,從彈出的快捷菜單中選擇的快捷菜單中選擇“修改修改”命令,出現(xiàn)原視圖。該命令,出現(xiàn)原視圖。該視圖與創(chuàng)建視圖時(shí)相同,可以按照創(chuàng)建視圖的方法視圖與創(chuàng)建視圖時(shí)相同,可以按照創(chuàng)建視圖的方法修改視圖。修改視圖。(2) 使用使用T-SQL語句修改視圖語句修改視圖首先必須
55、擁有使用視圖的權(quán)限,然后才能使用首先必須擁有使用視圖的權(quán)限,然后才能使用 ALTER VIEW 語句語句n例【例【7-31】:修改視圖】:修改視圖V_employees(number,name,age),在該視,在該視圖中增加一個新的字段圖中增加一個新的字段employees.salary ,并且定義一個新的字段名稱并且定義一個新的字段名稱 e_salary。nT-SQL語句如下:語句如下:nALTER VIEW studentscore(sno,sname,sage,cno,score)nASnSELECT student.sno,student.sname,student.sage,o,s
56、c.scorenFROM student,sc where student.sno=sc.sno;2. 查看視圖信息查看視圖信息n(1) 使用使用SSMS圖形化界面查看視圖圖形化界面查看視圖q在在SSMS中,右擊某個視圖的名稱,從彈出的快捷中,右擊某個視圖的名稱,從彈出的快捷菜單中選擇菜單中選擇“選擇前選擇前1000行行”或或“編輯前編輯前200行行”命令,在命令,在SQL Server圖形化界面中就會顯示該視圖形化界面中就會顯示該視圖輸出的相應(yīng)數(shù)據(jù)圖輸出的相應(yīng)數(shù)據(jù)n(2) 捕獲視圖信息捕獲視圖信息n在在sys.Views視圖中,每個視圖的對象在該視圖中,每個視圖的對象在該sys.Views中對應(yīng)一行數(shù)據(jù)。可以使用中對應(yīng)一行數(shù)據(jù)。可以使用sys.Views查查看當(dāng)前數(shù)據(jù)庫中的所有視圖信息;還可以通過看當(dāng)前數(shù)據(jù)庫中的所有視圖信息;還可以通過sys.all_sql_modules查看
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通事故和解合同范本
- 產(chǎn)品采購合同范本
- 中小企業(yè)合同法務(wù)服務(wù)發(fā)展規(guī)劃定
- 個人商用房抵押貸款合同模板
- 產(chǎn)品銷售獨(dú)家代理合同模板
- 個人向單位租車合同及條款
- 個人向個人創(chuàng)業(yè)借款合同范本
- 臨時(shí)工勞動合同范本(合同僅限勞務(wù)派遣使用)
- 個人住宅抵押借款合同簡例范本
- 兼職人員勞務(wù)合同協(xié)議
- 魏寧海超買超賣指標(biāo)公式
- (正式版)FZ∕T 80014-2024 潔凈室服裝 通 用技術(shù)規(guī)范
- 新起點(diǎn)英語二年級下冊全冊教案
- 【幼兒園戶外體育活動材料投放的現(xiàn)狀調(diào)查報(bào)告(定量論文)8700字】
- 剪映專業(yè)版:PC端短視頻制作(全彩慕課版) 課件 第3章 短視頻剪輯快速入門
- 湖南省長沙市開福區(qū)青竹湖湘一外國語學(xué)校2023-2024學(xué)年九年級下學(xué)期一模歷史試題
- 漢密爾頓抑郁和焦慮量表
- 風(fēng)電場事故案例分析
- 人教版八年級數(shù)學(xué)初中數(shù)學(xué)《平行四邊形》單元教材教學(xué)分析
- 八年級上冊-2024年中考?xì)v史總復(fù)習(xí)核心考點(diǎn)與重難點(diǎn)(部編版)
- 醫(yī)院科室人才建設(shè)規(guī)劃方案
評論
0/150
提交評論