數(shù)據(jù)庫系統(tǒng)02-Transact-SQL程序語言基礎(chǔ).ppt
《數(shù)據(jù)庫系統(tǒng)02-Transact-SQL程序語言基礎(chǔ).ppt》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫系統(tǒng)02-Transact-SQL程序語言基礎(chǔ).ppt(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第 2 講 Transact-SQL 程序語言基礎(chǔ),一、SQL 程序語言簡介 二、T-SQL 程序語言簡介 三、T-SQL 程序語言基礎(chǔ),,,,,,,一、 SQL 程序語言簡介,SQL 語言是用來訪問關(guān)系數(shù)據(jù)庫的語言. 無論前端應(yīng)用程序的用戶接口為何 ( 例如: VB.NET、 Java 等), 所有的應(yīng)用程序都應(yīng)該是 以傳送 SQL 語句到后端關(guān)系數(shù)據(jù)庫服務(wù)器的方 式來溝通. SQL全稱是”Structured Query Language”, 是1974年由Boyce和Chamberlin提出的,稍后 在IBM公司開發(fā)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)時實現(xiàn).,在關(guān)系數(shù)據(jù)庫中,以集合(set)的方式來 處理大量記錄才有效率,使得 SQL語言無法被 C#/Java/Visual Basic 等面向?qū)ο笳Z言取代。 而善用數(shù)據(jù)是信息系統(tǒng)成功的關(guān)鍵因素之一, 現(xiàn)今大量交易、數(shù)據(jù)整合、商業(yè)智能的結(jié)構(gòu)性 需求大增,將使 SQL 顯得更加重要。,,,,,,,使用 SQL 程序語言的目的在于讓應(yīng)用程序 與數(shù)據(jù)的內(nèi)部結(jié)構(gòu)不會存在任何依賴關(guān)系,也就 是所謂的”數(shù)據(jù)獨立”. 用戶無須了解數(shù)據(jù)是如何 存儲在數(shù)據(jù)庫和操作系統(tǒng)的文件中的, 僅需利用 SQL 程序語言就可以取得數(shù)據(jù). 如下例.,---取得 northwind 數(shù)據(jù)庫, orders 訂單表的數(shù)據(jù) SELECT * FROM northwind. dbo. orders,,,,SQL 程序語言的主要功能有: ◇ 插入、提取、修改與刪除關(guān)系數(shù)據(jù)庫中 的數(shù)據(jù). ◇ 新建、修改、刪除數(shù)據(jù)庫與數(shù)據(jù)庫相關(guān) 對象.,,,,SQL 程序語言已成為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn) 語言. 美國國家標(biāo)準(zhǔn)局(ANSI) 與國際標(biāo)準(zhǔn)化 組織(ISO)為其制定了 SQL 標(biāo)準(zhǔn), 各數(shù)據(jù)庫 廠商都必須遵守該標(biāo)準(zhǔn). 目前已完成的標(biāo)準(zhǔn)有: ANSI SQL- 92, ANSI SQL- 99, ANSI SQL- 2003 等. 盡管不同廠家的關(guān)系數(shù)據(jù)庫使用的 SQL 版本有一些差異, 但大多數(shù)都遵循相同的標(biāo) 準(zhǔn).,,,,● SQL 語言的結(jié)構(gòu) 每條 SQL 語句均由一個謂詞(Verb)開始, 該謂詞描述這條語句要產(chǎn)生的動作,例如 SELECT EMP_ID FROM EMPLOYEE WHERE E_WAGE3000 關(guān)鍵字謂詞后緊跟著一個或多個子句,子句 中給出了被謂詞作用的數(shù)據(jù)或提供謂詞動作的 詳細(xì)信息. 每一條子句由一個關(guān)鍵字開始,如上 例中的 WHERE.,,,,Transact-SQL語言 (簡稱 T-SQL 語言), 是 由 Microsoft 公司開發(fā)的一種 SQL 語言, 它是 標(biāo)準(zhǔn) SQL 程序設(shè)計語言的增強版, 使得應(yīng)用程 序與 SQL Server 數(shù)據(jù)庫引擎溝通. T-SQL 提供了標(biāo)準(zhǔn) SQL 的 DDL、 DCL 和 DML功能, 加上擴展的函數(shù)、系統(tǒng)存儲過程以及 程序設(shè)計結(jié)構(gòu) (例如 IF 和 WHILE) 讓程序設(shè)計 更有靈活性, 還可以實現(xiàn)對數(shù)據(jù)庫管理的功能. T-SQL 語言是 SQL Server 的核心.,二、T-SQL 程序語言簡介,隨著 Microsoft SQL Server 版本的演進(jìn), 衍生自 ANSI SQL 的 T-SQL語言變得獨立且功 能強大,擁有眾多用戶,是解決各種數(shù)據(jù)問題 的主流語言。在 SQL Server 的功能大量擴增并 廣泛進(jìn)入企業(yè)各系統(tǒng)后,日益龐大的數(shù)據(jù)量讓 T-SQL 發(fā)揮了重要的作用。,,,,,,,T-SQL 程序語言的分類 T-SQL 語言主要包括三種類型的語句: 數(shù)據(jù)定義語言(Date Definition Language,DDL), 數(shù)據(jù)控制語言(Date Control Language, DCL), 數(shù)據(jù)操縱語言(Date Manipulation Language, DML), 簡要介紹如下. 數(shù)據(jù)定義語言(DDL), 除了可以用來建立數(shù) 據(jù)庫與數(shù)據(jù)庫相關(guān)對象之外, 還可以修改及刪 除數(shù)據(jù)庫對象. 例如, 數(shù)據(jù)庫、表及視圖等對象.,表2-1 數(shù)據(jù)定義語言(DDL),USE pubs CREATE TABLE myOrders (OrderID int, OrderDate datetime, CustomerID Char(10), ShipDddress varchar(100)),,,,數(shù)據(jù)控制語言(DCL)用來設(shè)置用戶對數(shù)據(jù)庫 對象的訪問權(quán)限, 如下表.,表2-2 數(shù)據(jù)控制語言(DCL),GRANT SELECT ON myOrders TO Jack,,,,數(shù)據(jù)操縱語言(DML)用來訪問表中的數(shù)據(jù), 下表2-3 列出了每個語句的使用方式.,表2-3 數(shù)據(jù)操縱語言(DML),SELECT * FROM myOrders,,,,三、 T-SQL 程序語言基礎(chǔ),T-SQL語言的目的在于為處理大量數(shù)據(jù)提 供必要的結(jié)構(gòu)化處理能力,因此,它并沒有提 供 VB 和 C 所具有的某些語言特性. 其它功能 仍需要前端設(shè)計工具 (如FoxPro、Delphi、 Java 和 VB 等) 來處理. 所以, 一般稱 SQL Server、Oracle 和 mySQL 等數(shù)據(jù)庫 管理系統(tǒng)為 “數(shù)據(jù)庫引擎”. 1. T-SQL 批處理 批處理是由一條或多條 T-SQL 語句構(gòu)成, 應(yīng)用程序?qū)⑺鳛閱蝹€代碼單元發(fā)送給系統(tǒng).,,,,● 結(jié)束批處理 SQL 腳本文件或者查詢分析器的窗口都 可以包含多個批處理. 在這種情況下,需要使用批處理分隔符 關(guān)鍵字 go 來結(jié)束每一個批處理. 使用 go 來結(jié)束批處理時,只能把它自己 放在單獨的一行上. 結(jié)束一個批處理時,將會釋放所有由該批 處理所創(chuàng)建的局部變量、臨時表、游標(biāo).,,,,實戰(zhàn)練習(xí),---以下代碼會列出該服務(wù)器上所有的數(shù)據(jù)庫名稱(mss2005) SELECT name FROM sys.databases,---以下代碼會列出該服務(wù)器上所有的數(shù)據(jù)庫名稱(mss2k) SELECT name FROM master. dbo. Sysdatabases,,,,● 切換數(shù)據(jù)庫 在查詢分析器的工具條上會標(biāo)明當(dāng)前的數(shù) 據(jù)庫,你也可以使用它來改變當(dāng)前的數(shù)據(jù)庫. 在代碼中,則可以使用 use 命令來選定 當(dāng)前的數(shù)據(jù)庫. 使用 use 命令來顯式地選定正確的數(shù)據(jù) 庫是一種好的開發(fā)方法,不要把選定正確的數(shù) 據(jù)庫交給用戶去做.,,,,● DDL命令 有些特殊的 T-SQL 命令必須單獨地放在 它自己的批處理之中,或者說必須將它們與其 他的批處理命令分別放到不同的批處理中. 數(shù)據(jù)定義語言命令(CREATE、 ALTER 和 DELETE)就是這樣 T-SQL 命令, 應(yīng)當(dāng)將 它們放到他們自己的批處理中去,這是一項必 須牢記的規(guī)則.,,,,● 執(zhí)行批處理 可以在查詢分析器中打開一個 .sql 腳本 文件,按下 F5 鍵或者選擇 查詢 → 執(zhí)行 菜單 項來執(zhí)行一個 SQL 腳本程序中的全部批處理. 在查詢分析器中可以通過突出顯示來選擇 一些命令,然后執(zhí)行這些選定的 T-SQL 命令. 在應(yīng)用程序中, 可以通過使用 ADO 或者 ODBC 來提交并執(zhí)行 T-SQL 批處理.,,,,2. 格式化 T-SQL 代碼 對于 T-SQL 代碼應(yīng)格式化,以方便閱讀. T-SQL 命令往往都會寫得較長. 但T-SQL 會忽略空格和行尾的換行符,即不需要使用特 殊的續(xù)行符號來編寫長達(dá)數(shù)行的 T-SQL 命令, 從而顯著地提高了 T-SQL 代碼的可讀性. 注釋符號(略).,,,,3. 保存程序代碼 在完成程序代碼的編寫后,可以單擊”文件” 菜單中的 ”保存” 或 ”另存為” 選項, 將程序代碼 存為 *.sql 文件. 該文件是文本格式, 故可以使 用任何文本編輯器 (如 NotePad, UltraEdit) 來進(jìn) 行編輯. 若先前已經(jīng)打開多個”查詢分析器” 窗口, 并 編寫了多個文件, 則可以使用 ”保存全部查詢” 的方式來保存所有的程序代碼.,,,,實戰(zhàn)練習(xí),---查詢登錄的用戶賬號,使用的數(shù)據(jù)庫與當(dāng)前的數(shù)據(jù)庫 服務(wù)器的系統(tǒng)日期和時間 SELECT SUSER_SNAME(), DB_NAME(), GETDATE(),,,,4. 變量,在 T-SQL 中可以使用兩種變量, 一種是局 部變量(Local Variable),另外一種是全局變 量(Global Variable). ● 局部變量 局部變量是用戶可自定義的變量,它的作用 范圍僅在程序內(nèi)部. 局部變量必須以 @ 開頭,而且必須先作說 明: DECLARE @變量名 變量類型,,,,在 T-SQL 中變量的賦值有特殊的命令. 語法如下: SELECT @局部變量=變量值 或 SET @局部變量=變量值 兩種賦值命令的主要區(qū)別在于: SELECT 可以從表、子查詢或者視圖中檢 索數(shù)據(jù),并且也可以包含其它的 SELECT 子句. SET 只能從表達(dá)式中獲取數(shù)據(jù). 兩個命令中都可以使用函數(shù).,,,,問題1 考慮下面的程序會有什么結(jié)果: DECLARE @strName CHAR(10) SELECT @strName=‘SmallFish’ PRINT @strName GO,,,,問題2 考慮下面程序運行的結(jié)果: DECLARE @Test INT, @TestTwo NVARCHAR(25) PRINT @Test PRINT @TestTwo SET @Test=1 SET @TestTwo=a value GO PRINT @Test,,,,問題3 考慮下面程序運行的結(jié)果: USE Northwind DECLARE @TempID INT, @TempLastName VARCHAR(25) SET @TempID=99 SELECT @TempID=EmployeeID, @TempLastName=LName FROM dbo.employee SELECT @TempID, @TempLastName,,,,● 全局變量 全局變量是可以調(diào)用的系統(tǒng)變量, 它們是只讀 的,不能被創(chuàng)建. 它們的作用是提供系統(tǒng)的信息. 全局變量以 @@ 開頭,最常用的有: @@Error ---- 最近一次執(zhí)行的 T-SQL 語句的錯誤 編號 @@Identity ---- 為當(dāng)前連接所生成的最后一個標(biāo) 識值 @@NestLevel ---- 當(dāng)前存儲過程的最大嵌套層次 數(shù) @@ServerName ---- 當(dāng)前服務(wù)器的名字,,,,5. 流程控制,許多人對 T-SQL 的初步印象是它的流程控 制命令較少. 實際上,雖然它的流程控制命令沒 有其它語言那樣豐富,但已經(jīng)足夠了. 它為數(shù)據(jù) 處理命令提供的布爾擴展 ---- 如EXISTS、IN 和 CASE ---- 補充了 IF 和 WHILE 語句的不足. ● IF 這個語句的特別之處在于:利用它只能對其 后的一條語句的執(zhí)行與否進(jìn)行控制. 同時,它也 沒有 THEN,以及 ENDIF 等命令.,,,,例如 考慮下面程序運行的結(jié)果: IF 1=0 PRINT ‘Line One’ PRINT ‘Line Two’ 在這個腳本中,IF 條件應(yīng)該返回一個假值, 從而不會執(zhí)行 IF 下面的第一條 PRINT 命令.,,,,一個 IF 命令只能控制一條語句的執(zhí)行與否, 這顯然缺乏實用性. 要解決這個問題, 可以使 用 BEGIN/END 塊, 它可將多條命令作為一個 整體. IF Condition BEGIN Multiple lines END,,,,IF EXISTS() 結(jié)構(gòu)根據(jù) SELECT 命令返回 的結(jié)果集是否包含有行來進(jìn)行判斷. 只要查詢 返回了一條記錄,就可以停止執(zhí)行查詢,轉(zhuǎn)而 執(zhí)行批處理中其他的語句,所以這種方法的速 度更快. USE 商品庫存 IF EXISTS(SELECT * FROM shangpin WHERE 產(chǎn)品數(shù)量=0) BEGIN PRINT ‘已有產(chǎn)品缺貨’ END,,,,● WHILE…CONTINUE…BREAK WHILE 命令在設(shè)定的條件成立時,會重復(fù) 執(zhí)行命令行或程序塊. 其語法如下: WHILE BEGIN [BREAK] [CONTIUNE] [命令行|程序塊] END 其它控制命令參見教科書.,,,,練習(xí) 用 T-SQL 語句編寫程序,計算 1+2+…+100.,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)庫 系統(tǒng) 02 Transact SQL 程序語言 基礎(chǔ)
鏈接地址:http://www.hcyjhs8.com/p-2836506.html