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