




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、管理學(xué)院 信息管理系 肖 潔,數(shù)據(jù)庫原理及應(yīng)用,第3章 關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言SQL,本章要點(diǎn),SQL語言的相關(guān)數(shù)據(jù)類型、表達(dá)式與運(yùn)算符的 定義及其使用方法; 使用SQL語言創(chuàng)建、撤銷數(shù)據(jù)庫及其數(shù)據(jù)庫對(duì) 象的方法及技能; 使用SQL語言查詢數(shù)據(jù)的基本技能及使用連 接、嵌套查詢等復(fù)雜技術(shù); SQL語言的數(shù)據(jù)更新技術(shù); SQL語言的數(shù)據(jù)控制技術(shù),一、SQL 概述,一)SQL的發(fā)展歷程 1974年由Boyce和Chamherlin提出 1986年批準(zhǔn)為美國標(biāo)準(zhǔn) 1987年規(guī)定為國際標(biāo)準(zhǔn),“SQL86” 本章介紹“SQL92(SQL2)”標(biāo)準(zhǔn),二)SQL的組成與功能 1、數(shù)據(jù)定義語言(SQL DDL)
2、基本表、視圖以及索引文件的定義、修改和刪除。 2、數(shù)據(jù)操縱語言(SQL DML) 數(shù)據(jù)查詢:數(shù)據(jù)的查詢、統(tǒng)計(jì)、分組和排序。 數(shù)據(jù)更新:數(shù)據(jù)的插入、刪除和修改。 3、數(shù)據(jù)控制語言(SQL DCL) 對(duì)基本表和視圖的授權(quán)、完整性規(guī)則的描述和事務(wù) 控制語句。 4、嵌入式SQL,三)SQL語言的特點(diǎn) 1、有自含式和嵌入式兩種形式 2、語言簡(jiǎn)潔、易學(xué)易用 9個(gè)動(dòng)詞:CREATE,DROP,ALTER SELECT,INSERT,UPDATE,DELETE GRANT,REVOKE 3、高度非過程化 4、支持關(guān)系數(shù)據(jù)庫三級(jí)模式結(jié)構(gòu) 全體基本表構(gòu)成了數(shù)據(jù)庫的概念模式。 視圖和部分基本表構(gòu)成了數(shù)據(jù)庫的外模式。
3、 數(shù)據(jù)庫的存儲(chǔ)文件和索引文件構(gòu)成了內(nèi)模式,四)SQL基本知識(shí) 1、數(shù)據(jù)類型 (1)數(shù)值型 INT:(INTEGER)長(zhǎng)整數(shù) SMALLINT:短整數(shù) REAL:浮點(diǎn)數(shù) DOUBLE PRECISION:雙精度浮點(diǎn)數(shù) FLOAT(n):浮點(diǎn)數(shù),精度至少為n位數(shù)字 NUMBERIC(p,q):定點(diǎn)數(shù),DECIMAL(p,q) (2)字符型 CHAR(n):長(zhǎng)度為n的定長(zhǎng)字符串 VARCHAR(n):最大長(zhǎng)度為n的變長(zhǎng)字符串,3)位串型 BIT(n):長(zhǎng)度為n的二進(jìn)制位串 BIT VARYING(n):最大長(zhǎng)度為n的變長(zhǎng)二進(jìn)制位串 (4)日期型 DATE:日期,YYYY-MM-DD TIME:時(shí)間,
4、HH:MM:SS (5)貨幣型、文本型、圖像型等,表3-1 SQL Server 2008提供的數(shù)據(jù)類型,2、表達(dá)式與運(yùn)算符 (1)比較運(yùn)算符 =, !=, , , = (2)邏輯運(yùn)算符 NOT:意義反轉(zhuǎn) AND:表示所有的查詢條件都成立。 OR:表示至少有一個(gè)查詢條件成立。 (3)算術(shù)運(yùn)算符 , , *,,4)謂詞 IS NULL 和 IS NOT NULL:用于判斷字符串的值是否是空值。 BETWEENAND和 NOT BETWEENAND.:用于判斷值是否在給定的兩個(gè)值之間(包括邊界值)。 IN:用于判斷值是否屬于指定的集合。 LIKE:用來進(jìn)行字符串的匹配。 格式:NOT LIKE E
5、SCAPE,可使用通配符(任意長(zhǎng)度的字符串)和_(任意單個(gè)字符,例: LIKE COM_cn_ ESCAPE,通配符,下劃線,(通配符 要匹配的字符) 示例:使用 運(yùn)算符查找其地址中有四位郵政編碼的所有 Adventure Works 雇員的 ID 和姓名。 SELECT e.EmployeeID, c.FirstName, c.LastName, a.PostalCode FROM HumanResources.Employee AS e INNER JOIN Person.Contact AS c ON e.ContactID = c.ContactID INNER JOIN HumanR
6、esources.EmployeeAddress AS ea ON e.EmployeeID = ea.EmployeeID INNER JOIN Person.Address AS a ON a.AddressID = ea.AddressID WHERE a.PostalCode LIKE 0-90-90-90-9,通配符 - 無需匹配的字符) 示例:使用 運(yùn)算符在 Contact 表中查找所有名字以 Al 開頭且第三個(gè)字母不是字母 a 的人 。 SELECT FirstName, LastName FROM Person.Contact WHERE FirstName LIKE Ala%
7、 ORDER BY FirstName,EXISTS 和 NOT EXISTS:用于判斷在指定的表中是否存在一行符合某種條件的數(shù)據(jù)。 格式: EXISTS(子查詢) 當(dāng)子查詢結(jié)果為非空,返回True;否則,返回False。 UNIQUE:用于在指定的表中判斷每一行是否是惟一的。 ALL和ANY:用于將某個(gè)值同另一數(shù)據(jù)集中的每個(gè)值相比較,3、函數(shù) (1)單行函數(shù) 對(duì)查詢的表或視圖的每一行返回一個(gè)結(jié)果行。 數(shù)值函數(shù):接受數(shù)值,返回?cái)?shù)值。 字符函數(shù):接受字符,返回字符值或數(shù)值。 日期函數(shù):返回DATE類型的值。 轉(zhuǎn)換函數(shù): 一種類型另一種類型 (2)統(tǒng)計(jì)函數(shù) COUNT, SUM, MAX, MIN
8、, AVG等,4、語法規(guī)定與約定 (1)語句格式約定符號(hào) :其中內(nèi)容為必選項(xiàng),不能為空; :其中內(nèi)容為任選項(xiàng); 或 |:必選其中之一項(xiàng); ,n:表示前面的項(xiàng)可以重復(fù)多次。 (2)語法規(guī)定 SQL中數(shù)據(jù)項(xiàng)(列項(xiàng)、表和視圖)的分割符為“,”; 字符串常數(shù)的定界符用單引號(hào)表示; SQL的關(guān)鍵字一般使用大寫字母表示; SQL語句的結(jié)束符為“;” ; SQL采用格式化書寫方式,二、數(shù)據(jù)定義語言,DDL的功能:數(shù)據(jù)庫、基本表、索引、視圖及存儲(chǔ)過程的 定義、修改和刪除。 (一)數(shù)據(jù)庫 1、創(chuàng)建數(shù)據(jù)庫 語句格式: CREATE DATABASE ; 功能:定義數(shù)據(jù)庫名和數(shù)據(jù)庫的存儲(chǔ)空間。 說明: (1)使用該
9、語句的用戶必須具有DBA的權(quán)限; (2)數(shù)據(jù)庫的創(chuàng)建者被默認(rèn)為該數(shù)據(jù)庫的所有者; (3)要指定數(shù)據(jù)庫名稱、所占的存儲(chǔ)空間和存放文件的位置,分號(hào)可有可無,CREATE DATABASE database_name ON ,.n , ,.n LOG ON ,.n COLLATE collation_name FOR LOAD | FOR ATTACH := PRIMARY ( NAME = logical_file_name , FILENAME = os_file_name , SIZE = size , MAXSIZE = max_size | UNLIMITED , FILEGROWTH =
10、 growth_increment ) ,.n := FILEGROUP filegroup_name ,.n,CREATE DATABASE 語句的基本語法格式,例: CREATE DATABASE Sales ON ( NAME=Sales_data, FILENAME=c:program filesmicrosoft sql server mssql10.mssqlservermssqldatasales_data.mdf, SIZE=10, MAXSIZE=50, FILEGROWTH=5 ) LOG ON ( NAME=Sales_log, FILENAME=c:program fi
11、lesmicrosoft sql server mssql10.mssqlservermssqldatasales_log.ldf, SIZE=5MB, MAXSIZE=25MB, FILEGROWTH=5MB,CREATE DATABASE TEST ON (NAME= TEST_data, FILENAME=C:Program FilesMicrosoft SQL Server MSSQL10.MSSQLSERVERMSSQLDATATEST_data.mdf, SIZE=5MB, MAXSIZE=20MB, FILEGROWTH=10% ) LOG ON (NAME=TEST_log,
12、FILENAME=C:Program FilesMicrosoft SQL Server MSSQL10.MSSQLSERVERMSSQLDATATEST_log.ldf, SIZE=2MB, MAXSIZE=5MB, FILEGROWTH=1MB,2、修改數(shù)據(jù)庫 語句格式: ALTER DATABASE ; 功能: 增加或刪除數(shù)據(jù)文件; 改變數(shù)據(jù)文件的大小和增長(zhǎng)方式; 改變?nèi)罩疚募拇笮『驮鲩L(zhǎng)方式; 增加或刪除日志文件; 增加或刪除文件組。 說明: (1)該語句只有DBA或具有創(chuàng)建數(shù)據(jù)庫權(quán)限的數(shù)據(jù) 庫擁有者才有權(quán)使用; (2)該語句可以增加或刪除數(shù)據(jù)庫中的文件,也可 以修改數(shù)據(jù)庫文件的屬性,
13、ALTER DATABASE database_name ADD FILE ,n TO FILEGROUP filegroup_name /*在文件組中增加數(shù)據(jù)文件*/ | ADD LOG FILE ,n /*增加日志文件*/ | REMOVE FILE logical_file_name /*刪除數(shù)據(jù)文件*/ | ADD FILEGROUP filegroup_name /*增加文件組*/ | REMOVE FILEGROUP filegroup_name /*刪除文件組*/ | MODIFY FILE /*更改文件屬性*/ | MODIFY NAME = new_dbname /*數(shù)據(jù)庫更
14、名*/ | MODIFY FILEGROUP filegroup_name READONLY | READWRITE | READ_ONLY | READ_WRITE | DEFAULT | NAME = new_filegroup_name /*更改文件組屬性*/ | SET ,.n WITH /*設(shè)置數(shù)據(jù)庫屬性*/ | COLLATE collation_name /*指定數(shù)據(jù)庫排序規(guī)則*/,ALTER DATABASE 語句的基本語法格式,例1】 假設(shè)已經(jīng)創(chuàng)建了數(shù)據(jù)庫TEST,它只有一個(gè)主數(shù)據(jù)文件,其邏輯文件名為TEST_data。要求:修改數(shù)據(jù)庫TEST現(xiàn)有數(shù)據(jù)文件TEST_data的
15、屬性,將主數(shù)據(jù)文件的最大大小改為100MB,增長(zhǎng)方式改為按每次5MB增長(zhǎng)。 在“查詢分析器”窗口中輸入如下Transact-SQL語句: ALTER DATABASE TEST MODIFY FILE ( NAME = TEST_data, MAXSIZE =100MB, /*將主數(shù)據(jù)文件的最大大小改為100MB*/ FILEGROWTH = 5MB /*將主數(shù)據(jù)文件的增長(zhǎng)方式改為按5MB增長(zhǎng)*/,例2】 先為數(shù)據(jù)庫TEST增加數(shù)據(jù)文件TESTBAK。然后刪除該數(shù)據(jù)文件。 ALTER DATABASE TEST ADD FILE ( NAME = TESTBAK, FILENAME = C:P
16、rogram FilesMicrosoft SQL Server MSSQL10.MSSQLSERVERMSSQLDATATESTBAK.ndf, SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 5,通過查看數(shù)據(jù)庫屬性對(duì)話框中的文件屬性來觀察數(shù)據(jù)庫“TEST”是否增加數(shù)據(jù)文件TESTBAK。 刪除數(shù)據(jù)文件TESTBAK的命令如下: ALTER DATABASE TEST REMOVE FILE TESTBAK,例3】 為數(shù)據(jù)庫TEST添加一個(gè)日志文件。 ALTER DATABASE TEST ADD LOG FILE ( NAME = TEST_LOG2,
17、FILENAME = C:Program FilesMicrosoft SQL Server MSSQL10.MSSQLSERVERMSSQLDATATEST_Log2.ldf, SIZE = 5MB, MAXSIZE =10 MB, FILEGROWTH = 1MB,例4】 從數(shù)據(jù)庫TEST中刪除一個(gè)日志文件,將日志文件TEST_LOG2刪除。注意不能刪除主日志文件。 將數(shù)據(jù)庫TEST的名改為JUST_TEST。進(jìn)行此操作時(shí)必須保證該數(shù)據(jù)庫此時(shí)沒有被其他任何用戶使用。 在“查詢分析器”窗口中輸入如下Transact-SQL語句并執(zhí)行: ALTER DATABASE TEST REMOVE F
18、ILE TEST_LOG2 ALTER DATABASE TEST MODIFY NAME = JUST_TEST,3、撤銷數(shù)據(jù)庫 語句格式: DROP DATABASE ,n; 功能:撤銷指定的一個(gè)或多個(gè)數(shù)據(jù)庫。 說明: (1)該語句只有DBA或具有創(chuàng)建數(shù)據(jù)庫權(quán)限的數(shù)據(jù)庫 擁有者才有權(quán)使用; (2)當(dāng)數(shù)據(jù)庫處于正在被使用或正在恢復(fù)等非正常狀態(tài) 時(shí),是不能被撤銷的; (3)該語句執(zhí)行后,系統(tǒng)將無法恢復(fù)被撤銷的數(shù)據(jù)庫; (4)數(shù)據(jù)庫被撤銷后,其中所有的數(shù)據(jù)及數(shù)據(jù)庫對(duì)象、 所有的數(shù)據(jù)文件和日志文件都被刪除,空間被釋放,二)表 1、創(chuàng)建基本表 語句格式: CREATE TABLE ( , ); 功能
19、:定義基本表的表名及其結(jié)構(gòu)。 說明: (1)基本表可由一列(屬性)或多列組成; (2)必須明確說明每一列的數(shù)據(jù)類型; (3)可同時(shí)定義與該表有關(guān)的完整性約束條件,被存入數(shù)據(jù)字典; (4)如完整性約束條件涉及到多個(gè)屬性列,必須定義在表級(jí)上。 例3.2,2、完整性約束 用途:限制輸入到基本表中的值的范圍。 (1)PRIMARY KEY約束(主關(guān)鍵字約束) 功能:定義主關(guān)鍵字,保證主關(guān)鍵字的惟一性和非空性。 方法: PRIMARY KEY 直接寫在列名及其類型之后; 例3.3 在相應(yīng)列名及其類型后單獨(dú)列出: CONSTRAINT PRIMARY KEY 例3.4 在列出基本表的所有列之后,附加一個(gè)聲
20、明: PRIMARY KEY(,n) 例3.5,2)FOREIGN KEY約束(外部關(guān)鍵字約束) 功能:定義參照完整性,即維護(hù)兩個(gè)基本表之間的一致性。 方法: 如果外部關(guān)鍵字只有一列,在列名及其類型之后直接用“REFERENCES”說明: REFERENCES () 在屬性列表后面增加一個(gè)或幾個(gè)外部關(guān)鍵字說明: FOREIGN KEY REFERENCES () 在相應(yīng)列名及其類型后單獨(dú)列出,并指定約束名: CONSTRAINT FOREIGN KEY REFERENCES () 例3.6,必須是主關(guān)鍵字,外部關(guān)鍵字,被參照表中的列名,3)UNIQUE約束 功能:用來確保不受PRIMARY K
21、EY約束的列上的數(shù)據(jù)的 惟一性。 方法:列級(jí)UNIQUE約束: CONSTRAINT UNIQUE 例3.7 表級(jí)UNIQUE約束: CONSTRAINT UNIQUE(,) 例3.8,4)CHECK約束 功能:通過檢查輸入表列的數(shù)據(jù)的值來維護(hù)值域的完整性。 方法: CONSTRAINT CHECK() 例3.9 (5)NOT NULL 或 NULL 約束 功能:NOT NULL 約束不允許列值為空; NULL 約束允許列值為空。 練習(xí):課后習(xí)題5(1,3、修改基本表 語句格式: ALTER TABLE ADD ,n DROP | COLUMN ,n ALTER COLUMN ,n ; 功能:
22、修改指定基本表的結(jié)構(gòu),說明: (1)ADD子句用于增加新列(不能定義為NOT NULL)和 新的完整性約束條件; 例3.10 (2)DROP 子句用于刪除指定的完整性約束或指定的列; 例3.11 例3.12 (3)刪除某一列時(shí),只有當(dāng)沒有視圖和約束引用該列時(shí), 才能進(jìn)行,否則將被拒絕; (4)ALTER COLUMN 子句用于修改原有的列的定義,4、撤銷基本表 語句格式: DROP TABLE ,n; 功能:撤銷指定的基本表。 說明: (1)基本表一旦撤銷,表中的數(shù)據(jù)以及在此表上建立的 索引和視圖都將自動(dòng)被刪除,且無法恢復(fù); (2)只有基本表的擁有者才可以使用此語句; (3)不能使用DROP撤
23、銷系統(tǒng)表,三)索引 1、索引的特點(diǎn) 一個(gè)索引就是一個(gè)指向表中數(shù)據(jù)的指針。 索引是SQL在基本表中列上建立的一種數(shù)據(jù)庫對(duì)象, 也可稱為索引文件,它和基本表是分開存儲(chǔ)的。 2、索引的用途 提高數(shù)據(jù)查詢的速度(快速定位) 保證數(shù)據(jù)的惟一性 加快表聯(lián)接的速度,3、創(chuàng)建索引的原則 索引的創(chuàng)建和維護(hù)由DBA和DBMS完成。 是否創(chuàng)建索引取決于表的數(shù)據(jù)量大小和對(duì)查詢的要求。 對(duì)于一個(gè)基本表,不要建立過多的索引。 避免使用索引的情況,4、索引的類型及選擇 (1)單列索引:對(duì)基本表的某一單獨(dú)的列進(jìn)行索引 (2)惟一索引:不允許在表中插入任何相同的取值 (3)復(fù)合索引:針對(duì)兩列或兩個(gè)以上列建立的索引 選擇: 經(jīng)常
24、在WHERE子句中用作過濾條件的列; 如果WHERE子句只用到了一個(gè)列,則選單列索引,否則,選復(fù)合索引,5、索引的創(chuàng)建 語句格式: CREATE UNIQUECLUSTERED INDEX ON (,); 功能:為基本表創(chuàng)建索引。 說明: (1)次序可選ASC(升序,默認(rèn)值)或DESC(降序); (2)UNIQUE表示該索引的每個(gè)索引值只對(duì)應(yīng)惟一的數(shù)據(jù)記錄; (3)CLUSTERED表示要建立的索引是聚集索引(它使基本表中數(shù)據(jù)的物理順序與索引項(xiàng)的排列順序一致); 例3.13,6、索引的撤銷 語句格式: DROP INDEX ,n; 功能:在數(shù)據(jù)庫中撤銷指定的索引。 說明: (1)撤銷索引時(shí),系
25、統(tǒng)會(huì)自動(dòng)從數(shù)據(jù)字典中刪除有關(guān)對(duì) 該索引的描述; (2)一次可以撤銷一個(gè)或多個(gè)指定的索引。 例3.14,三、數(shù)據(jù)查詢語言,一)SELECT語句 語句格式: SELECT ALL | DISTINCT ,n FROM ,n WHERE GROUP BY HAVING ORDER BY ASC |DESC; 功能:從指定的基本表或視圖中,選擇滿足條件的元組 數(shù)據(jù),并對(duì)它們進(jìn)行分組、統(tǒng)計(jì)、排序和投影, 形成查詢結(jié)果集,說明: (1)SELECT和FROM子句為必選子句,其他任選; (2)SELECT子句用于指明查詢結(jié)果集的目標(biāo)列, DISTINCT說明要去掉重復(fù)的元組,ALL表示所有滿足 條件的元組;
26、 (3)FROM子句指明要查詢的數(shù)據(jù)來自哪些基本表或視圖; (4)WHERE子句通過條件表達(dá)式描述對(duì)基本表或視圖中元 組的選擇條件(過濾條件); (5)GROUP BY子句將結(jié)果集按的值進(jìn)行分組,將 列值相等的元組分為一組,并且可以使用 HAVING短語來限定分組必須滿足的條件 (6)ORDER BY子句是對(duì)結(jié)果集按的值的升序或降序 進(jìn)行排序,二)單表查詢 單表查詢指在查詢過程中只涉及一個(gè)表或視圖的查詢語句。 例3.23 例3.24 例3.25 例3.26,三)聯(lián)接查詢 在查詢過程中同時(shí)涉及多個(gè)基本表的查詢語句。 1、聯(lián)接條件及其聯(lián)接查詢執(zhí)行過程 (1)聯(lián)接條件及其一般格式 . 說明:聯(lián)接查詢
27、中的聯(lián)接條件通過WHERE子句表達(dá)。 (2)聯(lián)接查詢執(zhí)行過程,2、等值與非等值聯(lián)接查詢 等值是指聯(lián)接運(yùn)算符為“”時(shí)的聯(lián)接。 例3.27 3、自然聯(lián)接查詢 去除重復(fù)字段的聯(lián)接。 例3.28 4、自身聯(lián)接查詢 例3.29,5、外部聯(lián)接查詢 查詢結(jié)果集中保留那些不滿足連接條件的元組。 左外部聯(lián)接查詢(*):保留聯(lián)接條件左邊基本表的所 有行,以及左邊基本表在聯(lián)接條件中右邊基本表中沒有匹配值的所有元組。 右外部聯(lián)接查詢:* 例3.30 6、無條件查詢 笛卡爾積(無實(shí)際意義) 例3.31,四)嵌套查詢 將一個(gè)查詢塊(SELECT-FROM-WHERE語句)嵌套在 另一個(gè)查詢塊的WHERE子句或HAVING
28、短語的條件中的 查詢稱為嵌套查詢。 嵌套查詢的執(zhí)行順序:由里往外。 例3.32,1、使用比較運(yùn)算符的嵌套查詢 當(dāng)比較運(yùn)算符后面的值需要通過查詢才能得到,并且 能確切知道查詢返回的是單值時(shí)。 例3.33,2、使用謂詞的嵌套查詢 (1)使用謂詞IN的嵌套查詢 例3.32 思考:查詢條件可否不使用謂詞進(jìn)行構(gòu)造? (2)使用謂詞ANY(SOME)或ALL的嵌套查詢 格式: ANY(SOME)或ALL 例3.34 例3.35 (3)使用謂詞EXISTS的嵌套查詢 格式: EXISTS 用于判斷子查詢結(jié)果是否存在。 例3.36 例3.37,五)集合查詢 集合查詢操作符: UNION(并)、INTERSEC
29、T(交)、EXCEPT(差) 1、集合并操作 例3.38 2、集合交操作 例3.39 3、集合差操作 例3.40,六)函數(shù)查詢 函數(shù)查詢:就是把基本表中的某一列的值經(jīng)過函數(shù)運(yùn)算 得到一個(gè)單一值的過程。 基本SQL函數(shù): COUNT、SUM、AVG、MAX、MIN 例3.41 例3.42 例3.43 注:SQL中有GROUP BY子句,則語句中的函數(shù)為分組 統(tǒng)計(jì)函數(shù);否則為全部結(jié)果集的統(tǒng)計(jì)函數(shù)。 例3.44 注:如條件中有SQL函數(shù),則必須放在HAVING子句中,視圖是一個(gè)邏輯表,它本身不包含數(shù)據(jù),不占物理 存儲(chǔ)空間,所以也稱為“虛表”。 1、視圖的優(yōu)點(diǎn) 簡(jiǎn)化用戶操作 使用戶能以多種角度看待同一
30、數(shù)據(jù) 能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù) 為數(shù)據(jù)庫重構(gòu)提供一定的邏輯獨(dú)立性,四、視圖,2、視圖的創(chuàng)建 語句格式: CREATE VIEW (,) AS WITH CHECK OPTION; 功能:定義視圖名和視圖結(jié)構(gòu),并將得到的 元組作為視圖的內(nèi)容。 說明: (1)可以是任意復(fù)雜的SELECT語句; (2)WITH CHECK OPTION表示對(duì)視圖進(jìn)行UPDATE、INSERT和DELETE操作時(shí)滿足中WHERE子句的條件表達(dá)式,3)組成視圖的列名,或者全部指定或者全部省略; 以下三種情況,必須指定組成視圖的所有列名: 目標(biāo)列不是單純的列名,而是SQL函數(shù)或列表達(dá)式。 子查詢中使用了多個(gè)表或視圖,并
31、且目標(biāo)列中含有相同的列名。 需要在視圖中改用新的、更合適的列名。 (4)語句執(zhí)行的結(jié)果,僅僅是將視圖的定義信息存入數(shù)據(jù)字典,而定義中的語句并不執(zhí)行。 例3.15,3、視圖的撤銷 語句格式: DROP VIEW ; 功能:從數(shù)據(jù)庫中刪除指定的視圖。 說明: (1)只刪除視圖在數(shù)據(jù)字典中的定義信息,與之相關(guān) 聯(lián)的視圖應(yīng)由用戶自行逐一刪除; (2)視圖創(chuàng)建后,若基本表被刪除,則該視圖將失 效,需用戶自行刪除,4、視圖的查詢 視圖查詢實(shí)際上是對(duì)基本表的查詢,視圖定義中的 子查詢,用戶查詢,等價(jià)的對(duì)基本表的查詢,視圖消解,例3.16,5、視圖的更新 一般的DBS只允許對(duì)行列子集視圖進(jìn)行更新操作。 行列子
32、集視圖:是指從單個(gè)基本表導(dǎo)出,雖去掉了基 本表的某些行和列,但仍保留了主關(guān)鍵字的視圖。 不支持以下幾種情況的視圖進(jìn)行更新: (1)由兩個(gè)以上基本表導(dǎo)出的視圖; (2)視圖的列來自列表達(dá)式函數(shù); (3)視圖中有分組子句或使用了DISTINCT短語; (4)視圖定義中有嵌套查詢,且內(nèi)層查詢中涉及了與 外層一樣的導(dǎo)出該視圖的基本表; (5)在一個(gè)不允許更新的視圖上定義的視圖,存儲(chǔ)過程:是指編譯之后可以以一種可執(zhí)行的形式永久 地存儲(chǔ)在數(shù)據(jù)庫中的SQL語句。 存儲(chǔ)過程可以接受輸入?yún)?shù)、向客戶端返回表格或消 息,也可以通過調(diào)用數(shù)據(jù)定義語言(DDL)和數(shù)據(jù)操縱語言 (DML),返回輸出參數(shù)。存儲(chǔ)過程存放在服
33、務(wù)器上,可以使 用T-SQL語言中的EXECUTE語句來運(yùn)行存儲(chǔ)過程,五、存儲(chǔ)過程,1、使用存儲(chǔ)過程的好處 執(zhí)行速度快 模塊化的程序設(shè)計(jì) 減少網(wǎng)絡(luò)通信量 保證系統(tǒng)的安全性,2、控制流程語句 (1)IFELSE語句 語句格式,IF ELSE 條件表達(dá)式,語句功能:用來判斷當(dāng)某一條件成立時(shí)執(zhí)行某段程序, 條件不成立時(shí)執(zhí)行另一段程序。IFELSE可以嵌套使用,例】 DECLARE age int set age=22 IF age=17 PRINT NO ELSE PRINT YES,2)BEGINEND語句 語句格式,BEGIN END,語句功能:用來設(shè)置一個(gè)程序塊。該程序塊可以作為一 個(gè)單元來執(zhí)
34、行,BEGIN和END必須成對(duì)出現(xiàn),例】 DECLARE age int set age=22 IF age=17 BEGIN PRINT NO PRINT AGE17 END,ELSE BEGIN PRINT YES PRINT AGE17 END,3)CASE語句 語句格式,CASE WHEN THEN WHEN THEN ELSE END,語句功能:將CASE后面的表達(dá)式與WHEN后面的表達(dá) 式依次做比較,若二者相等,則執(zhí)行THEN后面的命令行; 若都不相等,將執(zhí)行ELSE后面的命令行,例】 SELECT CASE 性別 WHEN 女 THEN F WHEN 男 THEN M END a
35、s sex,姓名 FROM 學(xué)生,4)WHILECONTINUEBREAK語句 語句格式,WHILE BEGIN BREAK CONTINUE 命令行或程序塊 END,語句功能:WHILE語句在設(shè)置的條件表達(dá)式為真時(shí), 會(huì)重復(fù)執(zhí)行命令行或程序塊;CONTINUE語句可以讓程序跳 過CONTINUE語句之后的語句,回到WHILE循環(huán)的第一 行;BREAK語句則讓程序完全跳出循環(huán),結(jié)束WHILE循環(huán) 的執(zhí)行,例】計(jì)算110的和。 DECLARE i int,s int set i=0 set s=0 WHILE i=10 BEGIN set s+=i set i+=1 END; PRINT s,5
36、)RETURN語句,例】 IF LEN(varcharID)18 OR LEN(varcharID)15 RETURN PRINT Done,RETURN語句表示無條件終止查詢、存儲(chǔ)過程, RETURN后面的語句都不執(zhí)行,3、存儲(chǔ)過程的創(chuàng)建 語句格式: CREATE PROCEDURE WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION AS 功能:在數(shù)據(jù)庫中創(chuàng)建存儲(chǔ)過程。 說明: (1)選擇RECOMPILE參數(shù),表示每次執(zhí)行存儲(chǔ)過程時(shí), 都要對(duì)其重新進(jìn)行編譯和優(yōu)化; (2)選擇ENCRYPTION參數(shù),表示隱藏存儲(chǔ)過程的文本。 例3.1
37、7,4、存儲(chǔ)過程的執(zhí)行 直接使用存儲(chǔ)過程的名字對(duì)其進(jìn)行調(diào)用執(zhí)行。 例: A:使用帶有復(fù)雜 SELECT 語句的簡(jiǎn)單過程 B:使用帶有參數(shù)的簡(jiǎn)單過程,5、修改存儲(chǔ)過程 語句格式: ALTER PROCEDURE WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION AS 功能:修改數(shù)據(jù)庫中指定的存儲(chǔ)過程。 說明: (1)一般使用該語句的前提是不改變存儲(chǔ)過程的使用許可 權(quán)和不改變其名字; (2)一次只能修改一個(gè)存儲(chǔ)過程,6、存儲(chǔ)過程的撤銷 語句格式: DROP PROCEDURE ,n 功能:在數(shù)據(jù)庫中撤銷指定的存儲(chǔ)過程。 說明: (1)指要撤銷
38、的存儲(chǔ)過程; (2)該語句一次可以從數(shù)據(jù)庫中撤銷一個(gè)或多個(gè)存儲(chǔ) 過程,7、使用系統(tǒng)存儲(chǔ)過程 (1)sp_helpdb :顯示服務(wù)器中所有數(shù)據(jù) 庫的信息。 (2)sp_help:報(bào)告有關(guān)數(shù)據(jù)庫對(duì)象的一般信息。 (3)sp_helptext:顯示規(guī)則、默認(rèn)值、未加密的存儲(chǔ) 過程、用戶定義函數(shù)、觸發(fā)器或視圖的文本信息。 (4)sp_rename:更改當(dāng)前數(shù)據(jù)庫中用戶創(chuàng)建對(duì)象的 名稱,六、數(shù)據(jù)更新語言,一)插入數(shù)據(jù) 1、插入單個(gè)元組 語句格式: INSERT INTO (,n) VALUES(,n); 功能:將一個(gè)新元組插入指定的基本表中。 說明: (1)VALUES子句中各常量的數(shù)據(jù)類型必須與INT
39、O子句中對(duì)應(yīng)列的 數(shù)據(jù)類型兼容,常量的數(shù)量必須與列數(shù)相匹配; (2)INTO子句中沒有出現(xiàn)的列,新插入的元組在這些列上取空值; (3)若省略INTO子句中的列名,則新插入元組的每一列必須在VALUES子句中均有值對(duì)應(yīng); (4)如果基本表中存在定義為NOT NULL的列,則該列的值必須要出現(xiàn)在VALUES子句的常量列表中,否則出錯(cuò)。 例3.18,2、插入多個(gè)元組 語句格式: INSERT INTO (,n ) ; 功能:一次向基本表中插入多個(gè)元組。 說明: (1)SQL先處理,得到查詢結(jié)果,再將結(jié)果插 入到所指的基本表中; (2)結(jié)果集合中的列數(shù)、列序和數(shù)據(jù)類型必須 與所指的基本表中相應(yīng)各項(xiàng)匹配或兼容。 例3.19,二)修改數(shù)據(jù) 語句格式: UP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防安全合同管理規(guī)定
- 船舶制造材料供應(yīng)合同
- 新建住宅買賣合同備案流程
- 股權(quán)轉(zhuǎn)讓合同及相關(guān)權(quán)益轉(zhuǎn)讓協(xié)議
- 股權(quán)轉(zhuǎn)讓居間服務(wù)合同樣本
- 商鋪?zhàn)赓U合同參考模板
- 小班安全玩滑梯課件
- 創(chuàng)業(yè)企業(yè)的股權(quán)結(jié)構(gòu)設(shè)計(jì)考核試卷
- 方便食品的包裝設(shè)計(jì)與人機(jī)工程考核試卷
- 新材料新技術(shù)的巨大潛力探索未知的研究領(lǐng)域考核試卷
- 《水利工程質(zhì)量檢測(cè)管理規(guī)定》知識(shí)培訓(xùn)
- 2025年02月貴州省司法廳所屬事業(yè)單位公開招聘2人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年校長(zhǎng)春季開學(xué)思政第一課講話稿1720字例文【供參考】
- 2025至2030年中國單板電磁制動(dòng)器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024年07月國新國證期貨有限責(zé)任公司(海南)2024年招考2名工作人員筆試歷年參考題庫附帶答案詳解
- 人教版數(shù)學(xué)八年級(jí)下冊(cè) 第17章 勾股定理 單元測(cè)試(含答案)
- 國網(wǎng)標(biāo)書制作流程
- 六年級(jí)語文教學(xué)學(xué)情分析提高六語文質(zhì)量的措施
- 中醫(yī)藥臨床適宜技術(shù)
- 銀發(fā)經(jīng)濟(jì)的發(fā)展路徑
- 工業(yè)廠房水電安裝施工方案
評(píng)論
0/150
提交評(píng)論