04第四章關(guān)系數(shù)據(jù)庫語言SQLppt課件_第1頁
04第四章關(guān)系數(shù)據(jù)庫語言SQLppt課件_第2頁
04第四章關(guān)系數(shù)據(jù)庫語言SQLppt課件_第3頁
04第四章關(guān)系數(shù)據(jù)庫語言SQLppt課件_第4頁
04第四章關(guān)系數(shù)據(jù)庫語言SQLppt課件_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第四章 關(guān)系數(shù)據(jù)庫語言SQL第四章 關(guān)系數(shù)據(jù)庫語言SQL4.1SQL簡介簡介4.2查詢語句查詢語句4.3數(shù)據(jù)更新數(shù)據(jù)更新4.4數(shù)據(jù)定義數(shù)據(jù)定義小結(jié)小結(jié)4.1 SQL簡介SQL是結(jié)構(gòu)化查詢語言是結(jié)構(gòu)化查詢語言Structured Query Language的縮寫,的縮寫, 是一種面向關(guān)系數(shù)據(jù)庫的國是一種面向關(guān)系數(shù)據(jù)庫的國際標(biāo)準(zhǔn)語言,在當(dāng)前數(shù)據(jù)庫領(lǐng)域中應(yīng)用最為廣泛和際標(biāo)準(zhǔn)語言,在當(dāng)前數(shù)據(jù)庫領(lǐng)域中應(yīng)用最為廣泛和成功,美國國家標(biāo)準(zhǔn)局成功,美國國家標(biāo)準(zhǔn)局ANSI在在1986年將年將SQL作為作為關(guān)系數(shù)據(jù)庫系統(tǒng)的標(biāo)準(zhǔn)語言,后被國際標(biāo)準(zhǔn)化組織關(guān)系數(shù)據(jù)庫系統(tǒng)的標(biāo)準(zhǔn)語言,后被國際標(biāo)準(zhǔn)化組織ISO采納為國際標(biāo)準(zhǔn)

2、。現(xiàn)在很多大型數(shù)據(jù)庫都采納為國際標(biāo)準(zhǔn)?,F(xiàn)在很多大型數(shù)據(jù)庫都實現(xiàn)了實現(xiàn)了SQL語言。語言。4.1.1 SQL語言的發(fā)展SQL的發(fā)展歷程主要有以下幾個階段:的發(fā)展歷程主要有以下幾個階段:(11974年由年由Boyce和和Chamberlin提出,當(dāng)時稱為提出,當(dāng)時稱為SEQUELStructured English Query Language)。)。(219751979年年IBM公司對公司對SEQUEL進(jìn)行了修改,并由進(jìn)行了修改,并由San Jose Research Laboratory研制了著名的關(guān)系數(shù)據(jù)庫研制了著名的關(guān)系數(shù)據(jù)庫管理系統(tǒng)原型管理系統(tǒng)原型System R,實現(xiàn)了這種語言。,實現(xiàn)

3、了這種語言。(31981年年IBM推出了商用關(guān)系數(shù)據(jù)庫推出了商用關(guān)系數(shù)據(jù)庫SQL/DS,并將其改名,并將其改名為為SQL,由于它功能豐富,語言簡潔,因此倍受用戶及計算,由于它功能豐富,語言簡潔,因此倍受用戶及計算機(jī)工業(yè)界歡迎,被眾多計算機(jī)公司和軟件公司所采用。機(jī)工業(yè)界歡迎,被眾多計算機(jī)公司和軟件公司所采用。(4目前目前SQL語言不僅用于小型數(shù)據(jù)庫如語言不僅用于小型數(shù)據(jù)庫如Foxpro、Access,而且更廣泛用于各種大型數(shù)據(jù)庫,如而且更廣泛用于各種大型數(shù)據(jù)庫,如Sysbase、SQL Server、Oracle、Informix、DB2、Ingres等。等。SQL在發(fā)展中經(jīng)歷了一系列標(biāo)準(zhǔn)化過程

4、:在發(fā)展中經(jīng)歷了一系列標(biāo)準(zhǔn)化過程:(11982年美國國家標(biāo)準(zhǔn)局年美國國家標(biāo)準(zhǔn)局American National Standard Institute,簡稱,簡稱ANSI開開始制訂始制訂SQL標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。(21986年年10月月ANSI的數(shù)據(jù)庫委員會的數(shù)據(jù)庫委員會X3H2批批準(zhǔn)了準(zhǔn)了SQL作為關(guān)系數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn);同年作為關(guān)系數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn);同年ANSI公布公布SQL語言的第一個標(biāo)準(zhǔn)語言的第一個標(biāo)準(zhǔn)SQL-86,并于次,并于次年 由 國 際 標(biāo) 準(zhǔn) 化 組 織 年 由 國 際 標(biāo) 準(zhǔn) 化 組 織 I n t e r n a t i o n a l Standardization Or

5、ganization,簡稱,簡稱ISO通過通過SQL-86標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。(31989年年ISO對對SQL-86進(jìn)行補(bǔ)充,推出進(jìn)行補(bǔ)充,推出SQL-89標(biāo)準(zhǔn),也稱標(biāo)準(zhǔn),也稱SQL1。(41992年年ISO又推出又推出SQL-92標(biāo)準(zhǔn),亦稱標(biāo)準(zhǔn),亦稱SQL2。(52019年起年起ANSI陸續(xù)公布增加了面向?qū)ο蠊﹃懤m(xù)公布增加了面向?qū)ο蠊δ艿男聵?biāo)準(zhǔn)能的新標(biāo)準(zhǔn)SQL-99亦稱亦稱SQL3的的12個標(biāo)準(zhǔn)文個標(biāo)準(zhǔn)文本。本。4.1.2 SQL語言的特點(1非過程化:非過程化:SQL語言是非過程化語言,在語言是非過程化語言,在SQL語言中,只要求用戶提語言中,只要求用戶提出出“做什么做什么”,而無需指出,而無需指

6、出“怎樣做怎樣做”。SQL語句操作的過程由系統(tǒng)自語句操作的過程由系統(tǒng)自動完成。動完成。(2一體化:一體化:SQL可以操作于不同層次模式,集數(shù)據(jù)定義語言可以操作于不同層次模式,集數(shù)據(jù)定義語言DDL)、)、數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言DML)、數(shù)據(jù)控制語言)、數(shù)據(jù)控制語言DCL為一體。用為一體。用SQL語言可語言可實現(xiàn)實現(xiàn)DB生命周期的全部活動,其中包括建立數(shù)據(jù)庫、建立用戶賬號、生命周期的全部活動,其中包括建立數(shù)據(jù)庫、建立用戶賬號、定義關(guān)系模式、查詢及數(shù)據(jù)維護(hù)、數(shù)據(jù)庫安全控制等。定義關(guān)系模式、查詢及數(shù)據(jù)維護(hù)、數(shù)據(jù)庫安全控制等。(3兩種使用方式,統(tǒng)一的語法結(jié)構(gòu):兩種使用方式,統(tǒng)一的語法結(jié)構(gòu):兩種使用方式

7、兩種使用方式:自含式語言與嵌入式語言自含式語言與嵌入式語言自含式方式就是聯(lián)機(jī)交互使用方式自含式方式就是聯(lián)機(jī)交互使用方式;嵌入式方式是指嵌入式方式是指SQL語句嵌入某種高級程序設(shè)計語言的程序中,以實現(xiàn)數(shù)語句嵌入某種高級程序設(shè)計語言的程序中,以實現(xiàn)數(shù)據(jù)庫操作。據(jù)庫操作。盡管這兩種使用方式不同,但盡管這兩種使用方式不同,但SQL語言的語法結(jié)構(gòu)基本是一致的。語言的語法結(jié)構(gòu)基本是一致的。4.1.3 SQL語言的書寫準(zhǔn)則 遵從某種準(zhǔn)則可以提高語句的可讀性,通常遵從某種準(zhǔn)則可以提高語句的可讀性,通常遵循的準(zhǔn)則主要有:遵循的準(zhǔn)則主要有:SQL語句對大小寫不敏感,但關(guān)鍵字常用大寫語句對大小寫不敏感,但關(guān)鍵字常用

8、大寫SQL語句可寫在一行上,但為便于理解,增強(qiáng)語句可寫在一行上,但為便于理解,增強(qiáng)條理性,常習(xí)慣于每個字句占用一行條理性,常習(xí)慣于每個字句占用一行關(guān)鍵字不能在行與行之間分開,很少采用縮寫關(guān)鍵字不能在行與行之間分開,很少采用縮寫形式形式SQL中的數(shù)據(jù)項需同時列出時,分隔符用中的數(shù)據(jù)項需同時列出時,分隔符用“,”;字符或字符串常量的定界符用單引號;字符或字符串常量的定界符用單引號“ ”表示表示4.2 查詢語句4.2.1 基本查詢基本查詢4.2.2 使用列表達(dá)式使用列表達(dá)式4.2.3 WHERE從句的進(jìn)一步使用從句的進(jìn)一步使用4.2.4 數(shù)據(jù)匯總數(shù)據(jù)匯總4.2.5 連接查詢連接查詢4.2.6 嵌套查

9、詢嵌套查詢4.2.7 聯(lián)合查詢聯(lián)合查詢4.2.8 使用系統(tǒng)內(nèi)置函數(shù)的查詢使用系統(tǒng)內(nèi)置函數(shù)的查詢 SQL的核心是數(shù)據(jù)查詢。的核心是數(shù)據(jù)查詢。對于數(shù)據(jù)庫的查詢操作是通過對于數(shù)據(jù)庫的查詢操作是通過 SELECT 查詢命查詢命令實現(xiàn)的,它的基本形式由令實現(xiàn)的,它的基本形式由 SELECTFROMWHERE 查詢塊組成,多個查詢塊可以嵌套執(zhí)行。查詢塊組成,多個查詢塊可以嵌套執(zhí)行。總述SQL查詢語句的完整語法描述如下: SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ; 指定要顯示的屬性列指定要顯示的屬性列指定查詢對

10、象指定查詢對象指定查詢條件指定查詢條件查詢結(jié)果按指查詢結(jié)果按指定列的值分組定列的值分組篩選出只有滿足指篩選出只有滿足指定條件的組定條件的組對查詢結(jié)果表按指列值對查詢結(jié)果表按指列值的升序或降序排序的升序或降序排序 4.2.1 基本查詢最基本的查詢就是從指定的表中找出符最基本的查詢就是從指定的表中找出符合條件的記錄。這樣的查詢由合條件的記錄。這樣的查詢由 SELECT和和 FROM 短語構(gòu)成無條件查詢,或由短語構(gòu)成無條件查詢,或由 SELECT、FROM 和和 WHERE 或其他短或其他短語構(gòu)成條件查詢。語構(gòu)成條件查詢。 (1簡單的無條件查詢簡單的無條件查詢設(shè)某個數(shù)據(jù)庫中有表設(shè)某個數(shù)據(jù)庫中有表st

11、u_info,請把該表中的所,請把該表中的所有記錄的所有屬性查詢出來有記錄的所有屬性查詢出來: SELECT * / *表示所有字段,是通表示所有字段,是通配符配符 FROM stu_info/ 選定數(shù)據(jù)庫中的表選定數(shù)據(jù)庫中的表 (2 2簡單的條件查詢簡單的條件查詢請查找請查找stu_infostu_info表中所有的女生的信息。表中所有的女生的信息。SELECT * FROM stu_info WHERE xbm=女女 /設(shè)定條件設(shè)定條件 在在SELECT子句中可以決定哪些列出現(xiàn)在結(jié)果關(guān)子句中可以決定哪些列出現(xiàn)在結(jié)果關(guān)系中,這相當(dāng)于關(guān)系代數(shù)中的投影運(yùn)算。系中,這相當(dāng)于關(guān)系代數(shù)中的投影運(yùn)算。

12、具體辦法:在具體辦法:在SELECT子句之后不是寫子句之后不是寫“*”,而是根據(jù)需要列出在而是根據(jù)需要列出在FROM子句中聲明的諸關(guān)系的屬子句中聲明的諸關(guān)系的屬性。例:性。例:SELECT xh,xm /選定字段選定字段FROM stu_info /選定數(shù)據(jù)庫中的表選定數(shù)據(jù)庫中的表WHERE xbm=女女 /設(shè)定條件設(shè)定條件 (3 3查詢語句中的投影操作查詢語句中的投影操作使用使用 SQL 的的SELECT 可以將查詢結(jié)果排序,排可以將查詢結(jié)果排序,排序的短語是序的短語是 ORDER BY,具體格式如下:,具體格式如下: SELECT 列名列名1,列名,列名2, FROM 表名表名 WHERE

13、 條件表達(dá)式條件表達(dá)式 ORDER BY 列名列名1 ASC | DESC ,列名,列名2ASC | DESC按升序按升序ASC或降序或降序DESC排序,允許按一列排序,允許按一列或多列排序。或多列排序。(4 4設(shè)定排序條件設(shè)定排序條件下面是使查詢結(jié)果排序的例子下面是使查詢結(jié)果排序的例子:SELECT * /“*”表示所有字段表示所有字段 FROM stu_info /選定數(shù)據(jù)庫中的表選定數(shù)據(jù)庫中的表 WHERE xbm=女女 /設(shè)定條件設(shè)定條件 ORDER BY xh /設(shè)定排序字段設(shè)定排序字段 在查詢過程中經(jīng)常會出現(xiàn)一些重復(fù)記錄,例如在查詢過程中經(jīng)常會出現(xiàn)一些重復(fù)記錄,例如“SELECT

14、bh FROM stu_info”。其查詢結(jié)果將會。其查詢結(jié)果將會有多個重復(fù)的班級名,顯然這種結(jié)果不能令人滿意。有多個重復(fù)的班級名,顯然這種結(jié)果不能令人滿意。因此需要去掉重復(fù)值,此時需要指定因此需要去掉重復(fù)值,此時需要指定 DISTINCT 短語:短語: SELECT DISTINCT bh FROM stu_info 這里短語這里短語DISTINCT 的作用是去掉查詢結(jié)果中的重復(fù)的作用是去掉查詢結(jié)果中的重復(fù)值。執(zhí)行結(jié)果中班級名都不重復(fù)。值。執(zhí)行結(jié)果中班級名都不重復(fù)。 (5 5限定重復(fù)記錄限定重復(fù)記錄4.2.2 使用列表達(dá)式在在 SQL SQL中,指定列的方法我們學(xué)習(xí)了以下兩種:中,指定列的方

15、法我們學(xué)習(xí)了以下兩種: (1 1指定列指定列 (2 2使用通配符使用通配符* * 第第(3)(3)種是:可用列表達(dá)式,來獲取經(jīng)過計算的種是:可用列表達(dá)式,來獲取經(jīng)過計算的查詢結(jié)果。查詢結(jié)果。列表達(dá)式不僅可以是算術(shù)表達(dá)式,還可以是字符列表達(dá)式不僅可以是算術(shù)表達(dá)式,還可以是字符串常量、函數(shù)等。串常量、函數(shù)等。(6) (6) 計算列值計算列值SELECT 學(xué)號,xh,年齡, YEAR(GETDATE( )-YEAR(CSRQ),bhFROM stu_info(7) (7) 修改查詢結(jié)果的列標(biāo)題修改查詢結(jié)果的列標(biāo)題(1) SELECT YEAR(GETDATE( )-YEAR(CSRQ) AS 年齡,

16、 nl FROM stu_info(2) SELECT 學(xué)號=xh, nl FROM stu_info(3) SELECT xh 學(xué)號, nl FROM stu_info查詢工作的關(guān)鍵就在通過分析怎樣把實際問查詢工作的關(guān)鍵就在通過分析怎樣把實際問題中的自然語言描述轉(zhuǎn)化為題中的自然語言描述轉(zhuǎn)化為1 1從哪個表中查詢。即:從哪個表中查詢。即:fromfrom子句子句2 2要查詢哪些列。要查詢哪些列。 即:即:selectselect子句子句3) 3) 要查詢的條件。要查詢的條件。 即:即:wherewhere子句子句完成查詢工作的三個關(guān)鍵步驟完成查詢工作的三個關(guān)鍵步驟其中第其中第3 3步最復(fù)雜步最

17、復(fù)雜4.1.3 WHERE從句的進(jìn)一步使用常用的查詢條件常用的查詢條件查詢條件查詢條件謂詞謂詞比較比較= = = != ! !20 WHERE nl20(9 9確定范圍確定范圍between andbetween and和和 not between and not between and如如: :查詢考試成績在查詢考試成績在60-7060-70之間的學(xué)號、課程號、考試之間的學(xué)號、課程號、考試成績:成績:SELECT xh, kch, kscjSELECT xh, kch, kscjFROM xkFROM xkWHERE kscj BETWEEN 60 AND 70WHERE kscj BETW

18、EEN 60 AND 70(10 10確定集合確定集合 IN IN 和和 NOT IN NOT IN例:查詢復(fù)材例:查詢復(fù)材0108 0108 、復(fù)材、復(fù)材01090109班的學(xué)生班的學(xué)生的信息的信息SELECT xh,xm,xbm,bhSELECT xh,xm,xbm,bhFROM stu_infoFROM stu_infoWHERE bh IN( WHERE bh IN( 復(fù)材復(fù)材0108, 0108, 復(fù)材復(fù)材0109)0109)(11 11字符匹配字符匹配NOT LIKE 和和 LIKE 與與 % 和和 _ 搭配。搭配。%代表任意長度的字符串代表任意長度的字符串.如如 a%b: acb

19、, addgb 等都滿足匹配等都滿足匹配_(下橫線下橫線)代表任意單個字符。代表任意單個字符。例:查詢班級名中第例:查詢班級名中第1個字為個字為“計計字的學(xué)生信息:字的學(xué)生信息: SELECT * FROM stu_info WHERE bh like 計計%例:查詢名字中第例:查詢名字中第2個字為個字為“寧寧字的學(xué)生信息:字的學(xué)生信息: SELECT * FROM stu_info WHERE xm like _寧寧%例:查詢例:查詢DB_Design課程的課程號和學(xué)分。課程的課程號和學(xué)分。 SELECT ckh,kcxf FROM GCourse WHERE km LIKE DB_Desi

20、gn ESCAPE 例:查詢以例:查詢以DB_開頭,且倒數(shù)第開頭,且倒數(shù)第3個字符為個字符為 i的課程的詳細(xì)情的課程的詳細(xì)情況。況。 SELECT * FROM GCourse WHERE km LIKE DB_%i_ _ ESCAPE 當(dāng)用戶要查詢的字符串本身就含有當(dāng)用戶要查詢的字符串本身就含有 % % 或或 _ _ 時,要使用時,要使用 ESCAPE ESCAPE 換碼字符換碼字符 短語對通配符進(jìn)行轉(zhuǎn)義。短語對通配符進(jìn)行轉(zhuǎn)義。(12) (12) 涉及空值的查詢涉及空值的查詢SELECT * FROM stu_info WHERE bh IS NULL(13) (13) 多重條件查詢多重條件

21、查詢 用邏輯運(yùn)算符用邏輯運(yùn)算符andand和和oror連接,連接,andand的優(yōu)先級的優(yōu)先級高于高于oror。如:查詢應(yīng)什么班,姓劉的學(xué)生。如:查詢應(yīng)什么班,姓劉的學(xué)生。SELECT SELECT * * FROM stu_info FROM stu_info WHERE bh like WHERE bh like 應(yīng)應(yīng)% and % and 姓名姓名 like like 劉劉%4.2.4 數(shù)據(jù)匯總(14 14聚合函數(shù)聚合函數(shù)count (*)統(tǒng)計元組(記錄)個數(shù)統(tǒng)計元組(記錄)個數(shù)count(distinct | all) 統(tǒng)計一列中值的個數(shù)統(tǒng)計一列中值的個數(shù)sum(distinct |

22、all)求一列值的總和求一列值的總和(數(shù)值型)數(shù)值型)avg(distinct | all)求一列值的平均數(shù)求一列值的平均數(shù)max(distinct | all)求一列值中的最大值求一列值中的最大值min(distinct | all)求一列值中的最小值求一列值中的最小值聚合函數(shù)一覽表聚合函數(shù)一覽表例:查詢學(xué)生總數(shù)例:查詢學(xué)生總數(shù)SELECT count(*) FROM stu_info例:已知數(shù)據(jù)庫表例:已知數(shù)據(jù)庫表XK中高等數(shù)學(xué)課程的代碼為中高等數(shù)學(xué)課程的代碼為090101,查詢學(xué)生選修高等數(shù)學(xué)的平均成績:,查詢學(xué)生選修高等數(shù)學(xué)的平均成績:SELECT avg(KSCJ) AS 高等數(shù)學(xué)高

23、等數(shù)學(xué) FROM XK WHERE KCH=090101(15 15GROUP BYGROUP BY子句子句 Group by 子句將查詢結(jié)果表按某一列或多列值分組,值相子句將查詢結(jié)果表按某一列或多列值分組,值相等的分為一組。等的分為一組。如:在表如:在表xk中查詢各課程編號及相應(yīng)的選課人數(shù)中查詢各課程編號及相應(yīng)的選課人數(shù)注:注:GROUP BYGROUP BY子句中不能使用子句中不能使用聚合函數(shù),并且必須在聚合函數(shù),并且必須在GROUP GROUP BYBY子句中列出子句中列出SELECTSELECT列表中所列表中所有的非聚合項。有的非聚合項。例:在表例:在表stu_info中查詢每個專業(yè)的

24、男生、女生人數(shù)中查詢每個專業(yè)的男生、女生人數(shù)在在group by子句后面加子句后面加WITH ROLLUP或或WITH CUBE如果還要顯示每個專如果還要顯示每個專業(yè)的總?cè)藬?shù)及全體學(xué)業(yè)的總?cè)藬?shù)及全體學(xué)生總?cè)藬?shù),如何實現(xiàn)?生總?cè)藬?shù),如何實現(xiàn)? SELECT kch,count(xh) FROM xk GROUP BY kch SELECT zyh, xbm, count(*) as 人數(shù)人數(shù) FROM stu_info GROUP BY zyh, xbm例:查詢選修了例:查詢選修了3 3門以上課程的學(xué)生及選課數(shù):門以上課程的學(xué)生及選課數(shù):SELECT XH, COUNT(SELECT XH, C

25、OUNT(* *) )FROM XKFROM XKGROUP BY XHGROUP BY XHHAVING (COUNT(HAVING (COUNT(* *) 3) 3) HAVING HAVING短語指定分組或聚合的條件。只有滿足條件的分組短語指定分組或聚合的條件。只有滿足條件的分組才被選出來,才被選出來,HAVINGHAVING一般與一般與GROUP BYGROUP BY子句一起使用。子句一起使用。(16 16HAVING HAVING 短語短語SELECT XH, COUNT(*)FROM XKWHERE (XH LIKE 2019%)GROUP BY XHHAVING (COUNT(*

26、) 3)例:查詢學(xué)號前四位是例:查詢學(xué)號前四位是20192019的學(xué)生的學(xué)號及選課數(shù):的學(xué)生的學(xué)號及選課數(shù):having having 短語指定選擇組的條件,只有滿足短語指定選擇組的條件,只有滿足條件的組才被選出來。一般和條件的組才被選出來。一般和group bygroup by子子句一起使用句一起使用wherewhere子句從基本表中選擇滿足條件的元組,子句從基本表中選擇滿足條件的元組,而不是指定滿足條件的分組,這是二者的而不是指定滿足條件的分組,這是二者的根本區(qū)別。根本區(qū)別。若一個查詢同時涉及兩個以上的表,稱為連接若一個查詢同時涉及兩個以上的表,稱為連接查詢。查詢。連接查詢是關(guān)系數(shù)據(jù)庫中最

27、主要的查詢,按連連接查詢是關(guān)系數(shù)據(jù)庫中最主要的查詢,按連接類型可分為:內(nèi)連接、外連接和交叉連接。其中接類型可分為:內(nèi)連接、外連接和交叉連接。其中內(nèi)連接又分:等值連接、非等值連接和自然連接;內(nèi)連接又分:等值連接、非等值連接和自然連接;外連接又分:左外連接、右外連接和全外連接等。外連接又分:左外連接、右外連接和全外連接等。4.2.5 連 接 查 詢 連接查詢中用來連接兩個關(guān)系的條件稱為連接查詢中用來連接兩個關(guān)系的條件稱為連接條件或連接謂詞,格式:連接條件或連接謂詞,格式: 表名表名1.1.列名列名 比較運(yùn)算符比較運(yùn)算符 表名表名2.2.列名列名其中比較運(yùn)算符主要有:其中比較運(yùn)算符主要有:= =、

28、、 =、=、!=!=當(dāng)連接運(yùn)算符為當(dāng)連接運(yùn)算符為= =時,叫等值連接。時,叫等值連接。使用其它運(yùn)算符稱為非等值連接。使用其它運(yùn)算符稱為非等值連接。連接謂詞中的列名稱為連接字段。連接謂詞中的列名稱為連接字段。 例:查詢每個學(xué)生及其選課情況例:查詢每個學(xué)生及其選課情況SELECT *FROM stu_info,xkWHERE stu_info.xh=xk.xh例:查詢應(yīng)化例:查詢應(yīng)化041041班每個學(xué)生及其選修課程的情況班每個學(xué)生及其選修課程的情況SELECT stu_info.xh, stu_info.xm, stu_info.bh, stu_info.xbm, xk.kch, xk.kscj

29、FROM stu_info,xkWHERE stu_info.xh = xk.xh and stu_info.bh=應(yīng)化應(yīng)化041 /復(fù)合條件連接復(fù)合條件連接多表查詢:涉及兩個表以上的查詢多表查詢:涉及兩個表以上的查詢SELECT xm FROM stu_info, xk, gcourseWHERE gcourse.km=數(shù)據(jù)庫原理數(shù)據(jù)庫原理 and gcourse.kch=xk.kch and xk.xh=stu_info.xh為了簡化,表名可以取為了簡化,表名可以取別名,且別名只在本次別名,且別名只在本次查詢有效查詢有效增加表別名后的結(jié)果:增加表別名后的結(jié)果:SELECT xm FROM

30、stu_info a, xk b, gcourse cWHERE c.km=數(shù)據(jù)庫原理數(shù)據(jù)庫原理 and c.kch=b.kch and b.xh=a.xh例如:查詢選修了有機(jī)化學(xué)這門課程的學(xué)生的姓名例如:查詢選修了有機(jī)化學(xué)這門課程的學(xué)生的姓名下面討論另一類基于多個關(guān)系的查詢,這類查下面討論另一類基于多個關(guān)系的查詢,這類查詢所要求的結(jié)果出自一個關(guān)系,但相關(guān)的條件卻涉詢所要求的結(jié)果出自一個關(guān)系,但相關(guān)的條件卻涉及多個關(guān)系。在前面的例子中,及多個關(guān)系。在前面的例子中,WHERE 之后是一之后是一個相對獨立的條件,這個條件或者為真、或者為假。個相對獨立的條件,這個條件或者為真、或者為假。但是,有時需

31、要用另外的方式來表達(dá)檢索要求。比但是,有時需要用另外的方式來表達(dá)檢索要求。比如,當(dāng)檢索關(guān)系如,當(dāng)檢索關(guān)系X中的記錄時,它的條件依賴于相關(guān)中的記錄時,它的條件依賴于相關(guān)的關(guān)系的關(guān)系Y中的記錄屬性值,這時使用中的記錄屬性值,這時使用SQL的嵌套查的嵌套查詢功能將非常方便。詢功能將非常方便。 4.2.6 嵌 套 查 詢 在在SQLSQL語言中,一個語言中,一個select-from-whereselect-from-where語句稱為一個語句稱為一個查詢塊,將一個查詢塊嵌套在另一個查詢塊的查詢塊,將一個查詢塊嵌套在另一個查詢塊的wherewhere子句或子句或havinghaving短語的條件中的查

32、詢稱為嵌套查詢。短語的條件中的查詢稱為嵌套查詢。等價形式:等價形式:SELECT xm FROM stu_info,xk WHERE stu_info.xh=xk.xh and kch=05SELECT xmFROM stu_info例:在例:在stu_infostu_info表中查詢選修了表中查詢選修了0505號課程的學(xué)生姓名號課程的學(xué)生姓名WHERE xh IN ( SELECT xh FROM xk WHERE kch =05 )例:查詢與劉玉濤在同一例:查詢與劉玉濤在同一個班學(xué)習(xí)的學(xué)生的學(xué)號、個班學(xué)習(xí)的學(xué)生的學(xué)號、姓名、班級。姓名、班級。SELECT xh, xm, bhFROM st

33、u_infoWHERE bh IN(17)(17)帶有帶有in in謂詞的子查詢謂詞的子查詢(18)(18)帶有比較運(yùn)算符的子查詢帶有比較運(yùn)算符的子查詢例:查詢與學(xué)號是例:查詢與學(xué)號是2019900120199001的的學(xué)生在同一個班學(xué)習(xí)的學(xué)生,學(xué)生在同一個班學(xué)習(xí)的學(xué)生,按學(xué)號排序。按學(xué)號排序。SELECT xh, xm, bhFROM stu_infoWHERE bh ORDER BY xh ( SELECT bh FROM stu_info WHERE xm =劉玉濤劉玉濤 ) = ( SELECT bh FROM stu_info WHERE xh =20199001 )(19)(19)

34、帶有帶有anyany或或allall謂詞的子查詢謂詞的子查詢比較子查詢通常用到操作符比較子查詢通常用到操作符ALL、ANY。其通用格式為:其通用格式為: ALL|ANY例:查詢其他班級中比應(yīng)化例:查詢其他班級中比應(yīng)化041班某個學(xué)生年齡小班某個學(xué)生年齡小的那些學(xué)生的姓名和年齡。的那些學(xué)生的姓名和年齡。SELECT xm,nl FROM stu_info WHERE bh應(yīng)化應(yīng)化041 and nl any( select nl from stu_info where bh=應(yīng)化應(yīng)化041)(20)(20)帶有帶有existsexists謂詞的子查詢謂詞的子查詢EXISTS是測試子查詢是否有數(shù)據(jù)

35、行返回,有則返回是測試子查詢是否有數(shù)據(jù)行返回,有則返回TRUE,否則返回否則返回FALSE。例:查詢選修了高等數(shù)學(xué)例:查詢選修了高等數(shù)學(xué)(090101)的學(xué)生姓名、性別和班級。的學(xué)生姓名、性別和班級。SELECT xm,xbm,bh FROM stu_infoWHERE exists ( select * from xk where xh=stu_info.xh and kch=090101)例:查詢沒有選修高等數(shù)學(xué)例:查詢沒有選修高等數(shù)學(xué)(090101)的學(xué)生姓名、性別和班級。的學(xué)生姓名、性別和班級。SELECT xm,xbm,bh FROM stu_infoWHERE not exists

36、(select * from xk where xh=stu_info.xh and kch=090101)4.2.7 結(jié)合(集合)查詢 select語句的查詢結(jié)果是元組的集合,所以多個語句的查詢結(jié)果是元組的集合,所以多個select語句的結(jié)果可進(jìn)行集合操作。語句的結(jié)果可進(jìn)行集合操作。集合操作主要包括:集合操作主要包括:并操作并操作UNION、交操作、交操作INTERSECT、差操作、差操作MINUS標(biāo)準(zhǔn)標(biāo)準(zhǔn)SQL只提供只提供UNION,其語法格式如下:,其語法格式如下: SELECT_1 UNION ALL SELECT_2 如果要將查詢的結(jié)果保存在當(dāng)前數(shù)據(jù)庫新建的表如果要將查詢的結(jié)果保存在

37、當(dāng)前數(shù)據(jù)庫新建的表NEWSTU中,可以使用中,可以使用INTO子句:子句:SELECT * INTO NEWSTU FROM aUNION ALLSELECT * FROM b例:查詢編號為例:查詢編號為01的學(xué)院的學(xué)生及所有學(xué)院的本科生的學(xué)院的學(xué)生及所有學(xué)院的本科生SELECT * FROM stu_info WHERE xsh=01 UNIONSELECT * FROM stu_info WHERE pyccm=本科本科 4.2.8 使用系統(tǒng)內(nèi)置函數(shù)的查詢(21) (21) 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) ABS( ABS(數(shù)字型表達(dá)式數(shù)字型表達(dá)式) )、RAND(RAND(整型表達(dá)式整型表達(dá)式) )(

38、22) (22) 字符串處理函數(shù)字符串處理函數(shù) ASCII( ASCII(字符型字符型) ):返回表達(dá)式最左端字符的:返回表達(dá)式最左端字符的ASCIIASCII值值 CHAR(0-255 CHAR(0-255之間的整數(shù)之間的整數(shù)) ):將:將ASCIIASCII轉(zhuǎn)換為字符轉(zhuǎn)換為字符 LEFT( LEFT(字符型,整型字符型,整型) ):返回從字符串左邊開始指定個:返回從字符串左邊開始指定個數(shù)的字符數(shù)的字符 LTRIM( LTRIM(字符型字符型) ):刪除字符串最左邊的空格,并返回:刪除字符串最左邊的空格,并返回字符串字符串 REPLACE( REPLACE(字符型字符型1 1,字符型,字符型

39、2 2,字符型,字符型3)3):用:用3 3替換替換1 1中中包含的包含的2 2,并返回替換后的表達(dá)式,并返回替換后的表達(dá)式 SUBSTRING(express,start,length) SUBSTRING(express,start,length):返回:返回expressexpress中指定的部中指定的部分?jǐn)?shù)據(jù)分?jǐn)?shù)據(jù) STR(float_exp ,length ,decimal) STR(float_exp ,length ,decimal):將數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換為字:將數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)符數(shù)據(jù)(23) (23) 系統(tǒng)函數(shù)系統(tǒng)函數(shù)getdate( ):getdate( ):返回當(dāng)前的系統(tǒng)日

40、期和時間返回當(dāng)前的系統(tǒng)日期和時間year( )year( )、month( )month( )、day( ):day( ):分別返回指定日期的年、月、分別返回指定日期的年、月、日日 cast(cast(表達(dá)式表達(dá)式 AS AS 數(shù)據(jù)類型數(shù)據(jù)類型) ):將表達(dá)式的值轉(zhuǎn)換為數(shù)據(jù):將表達(dá)式的值轉(zhuǎn)換為數(shù)據(jù)類型參數(shù)所指定的類型。類型參數(shù)所指定的類型。casecase函數(shù):一種是簡單的函數(shù):一種是簡單的CASECASE函數(shù),另一種是搜索型函數(shù),另一種是搜索型的的CASECASE函數(shù)。函數(shù)。簡單簡單CASECASE語法格式:語法格式:CASE CASE 輸入表達(dá)式輸入表達(dá)式 WHEN WHEN 比較表達(dá)式比

41、較表達(dá)式 THEN THEN 結(jié)果表達(dá)式結(jié)果表達(dá)式 ELSE ELSE 表達(dá)式表達(dá)式ENDEND搜索搜索CASECASE語法格式:語法格式:CASECASE WHEN WHEN 條件條件1 THEN 1 THEN 表達(dá)式表達(dá)式1 1 WHEN WHEN 條件條件2 THEN 2 THEN 表達(dá)式表達(dá)式2 2 ELSE ELSE 表達(dá)式表達(dá)式ENDEND例:在例:在STU_INFOSTU_INFO中查詢中查詢0303學(xué)院學(xué)生的學(xué)號、姓名、性別,并將性別分別轉(zhuǎn)換成學(xué)院學(xué)生的學(xué)號、姓名、性別,并將性別分別轉(zhuǎn)換成“男男生生”、“女生女生”。SELECT XH,XM,XBM,XBM=SELECT XH,

42、XM,XBM,XBM= CASE CASE 男男 WHEN XBM THEN WHEN XBM THEN 男生男生 ELSE ELSE 女生女生 ENDENDFROM STU_INFOFROM STU_INFOWHERE XSH=03WHERE XSH=03例:查詢成績表例:查詢成績表CSCS中選修了中選修了“數(shù)據(jù)庫技術(shù)及應(yīng)用數(shù)據(jù)庫技術(shù)及應(yīng)用課程的學(xué)生的學(xué)號、姓名、課程的學(xué)生的學(xué)號、姓名、5 5分制成分制成績績SELECT SELECT 學(xué)號學(xué)號, ,姓名姓名, ,5 5分制成績分制成績= = CASECASE WHEN WHEN 成果成果60 THEN =60 AND=60 AND成績成績7

43、0 THEN =70 AND=70 AND成績成績80 THEN =80 AND=80 AND成績成績90 THEN =90 THEN =90 THEN 優(yōu)秀優(yōu)秀 ENDENDFROM CS FROM CS 4.3 數(shù)據(jù)更新4.3.1 插入數(shù)據(jù)插入數(shù)據(jù)4.3.2 修改數(shù)據(jù)修改數(shù)據(jù)4.3.3 刪除數(shù)據(jù)刪除數(shù)據(jù)4.2.1 插入數(shù)據(jù)n語句格式語句格式nINSERTnINTO (, )nVALUES ( , )n功能功能 將新元組插入指定表中。將新元組插入指定表中。(1) (1) 插入單個元組插入單個元組例:例:INSERT INTO stu_info (xh,xm,xbm) VALUES (2019

44、090209, 王東方王東方, 男男)如果基本表只有上述三個屬性,則該句等價于:如果基本表只有上述三個屬性,則該句等價于: INSERT INTO stu_info VALUES (2019090209, 王東方王東方, 男男)(2) (2) 插入子查詢結(jié)果插入子查詢結(jié)果例:在例:在STU_INFO表中查詢出應(yīng)化表中查詢出應(yīng)化041班的學(xué)生情況并存放在班的學(xué)生情況并存放在YINGHUA表中。表中。 INSERT INTO yinghua SELECT xh,xm,xbm,csrq FROM stu_info WHERE bh=應(yīng)化應(yīng)化041 n語句格式語句格式n INSERT n INTO (

45、 , )n 子查詢子查詢n功能功能: 將子查詢結(jié)果插入指定表中,用以插入批量記錄將子查詢結(jié)果插入指定表中,用以插入批量記錄4.3.2 修改數(shù)據(jù) 語句格式語句格式UPDATE SET =,=,WHERE 功能功能修改指定表中滿足修改指定表中滿足WHERE子句條件的元組子句條件的元組(3) (3) 修改一個元組的值修改一個元組的值 UPDATE stu_info UPDATE stu_info SET bh= SET bh=材材0169 0169 WHERE xh=2019090209 WHERE xh=2019090209注意:對批量數(shù)據(jù)的修改,注意:對批量數(shù)據(jù)的修改,一定把將要修改的記錄先查一

46、定把將要修改的記錄先查詢出來,確認(rèn)無誤后再修改。詢出來,確認(rèn)無誤后再修改。(4) (4) 修改多個元組的值修改多個元組的值 UPDATE gcourse UPDATE gcourse SET kcxf=2 SET kcxf=2 (5) (5) 帶子查詢的修改語句帶子查詢的修改語句 將選修了高數(shù)的學(xué)生的成績加將選修了高數(shù)的學(xué)生的成績加1010分分 UPDATE xk UPDATE xk SET kscj=kscj+10 SET kscj=kscj+10 WHERE kch=(select kch from gcourse where WHERE kch=(select kch from gcou

47、rse where km=km=高等數(shù)學(xué)高等數(shù)學(xué))4.3.3 刪除數(shù)據(jù)語法格式語法格式 DELETE FROM WHERE 功能功能刪除指定表中滿足刪除指定表中滿足WHERE子句條件的元組子句條件的元組WHERE子句子句指定要刪除的元組指定要刪除的元組缺省表示要刪除表中的所有元組缺省表示要刪除表中的所有元組(6) (6) 刪除一個元組的值刪除一個元組的值 DELETE FROM stu_info DELETE FROM stu_info WHERE xh=2019050010 WHERE xh=2019050010(7) (7) 刪除多個元組的值刪除多個元組的值 DELETE FROM stu

48、_info DELETE FROM stu_info WHERE bh= WHERE bh=應(yīng)應(yīng)02030203 刪除表中所有數(shù)據(jù)刪除表中所有數(shù)據(jù) DELETE FROM stu_info DELETE FROM stu_info (8) 帶子查詢的刪除語句帶子查詢的刪除語句 將信息學(xué)院學(xué)生的成績?nèi)縿h除將信息學(xué)院學(xué)生的成績?nèi)縿h除DELETE FROM xk WHERE 12= ( SELECT xsh FROM stu_info WHERE stu_info.xh=xk.xh )注意:在日常工作中,操作刪除語句,一定要先查詢要刪除的注意:在日常工作中,操作刪除語句,一定要先查詢要刪除的數(shù)據(jù)

49、,確認(rèn)無誤后再刪除。數(shù)據(jù),確認(rèn)無誤后再刪除。SELECT * FROM xk WHERE 12= ( select xsh from stu_info where stu_info.xh=xk.xh )4.4 數(shù)據(jù)定義4.4.1 定義基本表定義基本表4.4.2 修改基本表修改基本表4.4.3 刪除基本表刪除基本表4.4.4 視圖視圖4.4.5 索引索引4.4 數(shù)據(jù)定義 SQL的數(shù)據(jù)定義語句的數(shù)據(jù)定義語句操作對象操作對象操作方式操作方式創(chuàng)建創(chuàng)建刪除刪除修改修改表表視圖視圖索引索引4.4.1 定義基本表語句格式:語句格式: CREATE TABLE ( , , ) :所要定義的基本表的名字:所要定

50、義的基本表的名字 :組成該表的各個屬性列):組成該表的各個屬性列) :涉及相應(yīng)屬性列的完整:涉及相應(yīng)屬性列的完整性約束條件性約束條件 :涉及一個或多個屬性列:涉及一個或多個屬性列的完整性約束條件的完整性約束條件 例:建立一個學(xué)生表例:建立一個學(xué)生表Student,它由學(xué)號,它由學(xué)號Sno、姓名、姓名Sname、性別、性別Ssex、年齡年齡Sage、所在系、所在系Sdept五個屬性組成。其中學(xué)號不能為空,值是唯一的,五個屬性組成。其中學(xué)號不能為空,值是唯一的,并且姓名取值也唯一。并且姓名取值也唯一。 CREATE TABLE Student ( Sno VARCHAR(5) NOT NULL U

51、NIQUE, Sname VARCHAR(20) UNIQUE, Ssex VARCHAR(1) , Sage INT, Sdept VARCHAR(15)SnoSnameSsex SageSdept字符型字符型長度為長度為5不能為不能為空值取值唯一空值取值唯一字符型字符型長度為長度為20字符型字符型長度為長度為1整數(shù)整數(shù)字符型字符型長度為長度為15常用完整性約束常用完整性約束主碼約束:主碼約束: PRIMARY KEY唯一性約束:唯一性約束:UNIQUE非空值約束:非空值約束:NOT NULL默認(rèn)值約束:默認(rèn)值約束:DEFAULT檢查約束:檢查約束:CHECK參照完整性約束:參照完整性約束:

52、FOREIGN KEYREFERENCE例:建立一個例:建立一個“學(xué)生選課學(xué)生選課表表SC,它由學(xué)號,它由學(xué)號Sno、課程號、課程號Cno,修課成績,修課成績Grade組成,其中組成,其中(Sno, Cno)為主碼。為主碼。CREATE TABLE SC( Sno VARCHAR(5) , Cno VARCHAR(3) , Grade int, Primary key (Sno, Cno) )例:創(chuàng)建表例:創(chuàng)建表n_jobsCREATE TABLE n_jobs( job_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, job_desc var

53、char(50) NOT NULL DEFAULT (新部門新部門), min_lvl tinyint NOT NULL CHECK (min_lvl = 12), max_lvl tinyint NOT NULL CHECK (max_lvl = 250)例:使用表達(dá)式例:使用表達(dá)式(最低分最低分+最高分最高分)/2)生成中等分計算列。生成中等分計算列。CREATE TABLE 得分得分 ( 最低分最低分 int, 最高分最高分 int, 中等分中等分 AS (最低分最低分+最高分最高分)/2)4.4.2 修改基本表語法格式:語法格式:ALTER TABLE ALTER COLUMN ADD

54、 完整性約束完整性約束 DROP :要修改的基本表:要修改的基本表ALTER COLUMN 子句:要更改的列,要更改子句:要更改的列,要更改的列不能是數(shù)據(jù)類型為的列不能是數(shù)據(jù)類型為text,image,ntext或或timestamp等列等列ADD子句:增加新列和新的完整性約束條件子句:增加新列和新的完整性約束條件DROP子句:刪除指定的完整性約束條件或列子句:刪除指定的完整性約束條件或列名名1、添加列、添加列例:向?qū)W生表中添加入學(xué)時間列,其數(shù)據(jù)類型為日例:向?qū)W生表中添加入學(xué)時間列,其數(shù)據(jù)類型為日期型期型 ALTER TABLE stu_info ADD rxsj DATETIME可能破壞可能

55、破壞已有數(shù)據(jù)已有數(shù)據(jù)2、修改列、修改列例:將教師表的例:將教師表的xb列改為列改為smallint數(shù)據(jù)類型數(shù)據(jù)類型 ALTER TABLE gtech ALTER COLUMN xb smallint3、刪除列或約束、刪除列或約束例:將數(shù)據(jù)庫表例:將數(shù)據(jù)庫表gtech中的中的xb列刪除列刪除 ALTER TABLE gtech DROP COLUMN xb例:刪除學(xué)生姓名必須取唯一值的約束例:刪除學(xué)生姓名必須取唯一值的約束 ALTER TABLE stu_info DROP UNIQUE(xm)4.4.3 刪除基本表語法格式:語法格式: DROP TABLE 基本表定義一旦刪除,表中的數(shù)據(jù)、表

56、上的索引基本表定義一旦刪除,表中的數(shù)據(jù)、表上的索引和視圖都將自動被刪除和視圖都將自動被刪除刪除基本表時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)該刪除基本表時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)該基本表及其索引的描述。基本表及其索引的描述。 例:刪除例:刪除EDU_D庫中的表庫中的表stu_info DROP TABLEstu_info4.4.4 視圖視圖是關(guān)系數(shù)據(jù)庫系統(tǒng)提供給用戶以多種角度觀察數(shù)據(jù)庫中視圖是關(guān)系數(shù)據(jù)庫系統(tǒng)提供給用戶以多種角度觀察數(shù)據(jù)庫中數(shù)據(jù)的重要機(jī)制。數(shù)據(jù)的重要機(jī)制。視圖是從一個或多個基本表或視圖導(dǎo)出的表,是個虛表。視圖是從一個或多個基本表或視圖導(dǎo)出的表,是個虛表。數(shù)據(jù)庫只存放視圖的定義,不存放視

57、圖對應(yīng)的數(shù)據(jù),這些數(shù)數(shù)據(jù)庫只存放視圖的定義,不存放視圖對應(yīng)的數(shù)據(jù),這些數(shù)據(jù)仍存放在原來的基本表中。所以,視圖的數(shù)據(jù)跟隨基本表據(jù)仍存放在原來的基本表中。所以,視圖的數(shù)據(jù)跟隨基本表的數(shù)據(jù)而變化。的數(shù)據(jù)而變化。視圖一旦被定義,就可以被查詢、刪除,修改及再定義一個視圖一旦被定義,就可以被查詢、刪除,修改及再定義一個新的視圖等。新的視圖等。視圖包含一系列帶有名稱的列和行數(shù)據(jù)。這些數(shù)據(jù)來自定義視圖包含一系列帶有名稱的列和行數(shù)據(jù)。這些數(shù)據(jù)來自定義視圖的查詢所引用的基表中,并且在引用視圖時動態(tài)生成。視圖的查詢所引用的基表中,并且在引用視圖時動態(tài)生成。1、定義視圖、定義視圖(1) 用企業(yè)管理器建立視圖用企業(yè)管理

58、器建立視圖 請同學(xué)們上機(jī)自己學(xué)習(xí)建立視圖的方法。請同學(xué)們上機(jī)自己學(xué)習(xí)建立視圖的方法。(2) 用用SQL語句建立視圖語句建立視圖 CREATE VIEW 視圖名視圖名 AS WITH CHECK OPTION其中其中WITH CHECK OPTION表示對視圖進(jìn)行表示對視圖進(jìn)行UPDATE、INSERT和和DELETE操作時要保證更新、操作時要保證更新、插入或刪除的行滿足視圖定義中的條件表達(dá)式插入或刪除的行滿足視圖定義中的條件表達(dá)式A、選擇列定義視圖、選擇列定義視圖 可定義一個視圖,該視圖由表的部分列組成。下可定義一個視圖,該視圖由表的部分列組成。下例中,視圖例中,視圖MyView1包含了包含了

59、employees表中的三個列。表中的三個列。 CREATE VIEW MyView1 AS SELECT lname, fname FROM employee定義了視圖后,可以和表一樣,使用定義了視圖后,可以和表一樣,使用SELECT語句訪語句訪問它。問它。例如:例如: SELECT * FROM MyView1B、基于列的表達(dá)式定義視圖、基于列的表達(dá)式定義視圖 在定義視圖時,除了使用基礎(chǔ)表的列外,還可使在定義視圖時,除了使用基礎(chǔ)表的列外,還可使用基本表的列的表達(dá)式,生成自己的列。用基本表的列的表達(dá)式,生成自己的列。 下例中,視圖下例中,視圖MyView2的第四列即由表達(dá)式計算的第四列即由表

60、達(dá)式計算而來。而來。 CREATE VIEW MyView2(xh, xm, xbm, nl) AS SELECT xh,xm,xbm,year(getdate()-year(csrq) FROM stu_infoC、選擇行定義視圖、選擇行定義視圖 可定義一個視圖,該視圖由表的部分行組成??啥x一個視圖,該視圖由表的部分行組成。下例中,視圖下例中,視圖MyView3只包含只包含employee表中姓名包表中姓名包含含sh的行。的行。 CREATE VIEW MyView3 AS SELECT * FROM employee WHERE fname LIKE %sh%D、選擇行和列、選擇行和列

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論