版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 5 講 T-SQL 編程基礎(chǔ),哈爾濱師范大學(xué)恒星學(xué)院,本講主要內(nèi)容,T-SQL 程序語言概況,T-SQL 程序語言基礎(chǔ),運算符與函數(shù),常用工具簡介,1,2,3,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-
2、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 語言主要包括三種類型的語句: 數(shù)據(jù)定義語言(Date Definition Language, DDL), 數(shù)據(jù)控制語言(Date Control Language, DCL), 數(shù)據(jù)操縱語言(Date Manipu
3、lation Language,DML), 簡要介紹如下. 數(shù)據(jù)定義語言(DDL), 除了可以用來建立數(shù)據(jù)庫 與數(shù)據(jù)庫相關(guān)對象之外, 還可以修改及刪除數(shù)據(jù)庫 對象. 例如, 數(shù)據(jù)庫、表及視圖等對象.,T-SQL程序語言的分類,表5-1 數(shù)據(jù)定義語言(DDL),USE pubs CREATE TABLE myOrders (OrderID int, OrderDate smalldatetime, CustomerID Char(10), ShipDddress varchar(100),數(shù)據(jù)控制語言(DCL)用來設(shè)置用戶對數(shù)據(jù)庫 對象的訪問權(quán)限, 如下表.,表5-2 數(shù)據(jù)控制語言(DCL),G
4、RANT SELECT ON myOrders TO Jack,數(shù)據(jù)操縱語言(DML)用來訪問表中的數(shù)據(jù), 下表5-3 列出了每個語句的使用方式.,表5-3 數(shù)據(jù)操縱語言(DML),SELECT * FROM myOrders,T-SQL語言的目的在于為處理大量數(shù)據(jù)提 供必要的結(jié)構(gòu)化處理能力,因此,它并沒有提 供 VB 和 C 所具有的某些語言特性. 其它功能 仍需要前端設(shè)計工具 (如FoxPro、Delphi、 Java 和 VB 等) 來處理. 所以, 一般稱 SQL Server、Oracle 和 mySQL 等數(shù)據(jù)庫 管理系統(tǒng)為 “數(shù)據(jù)庫引擎”.,二. T-SQL 程序語言基礎(chǔ),批處理
5、是由一條或多條 T-SQL 語句構(gòu)成, 應(yīng)用程序?qū)⑺鳛閱蝹€代碼單元發(fā)送給系統(tǒng). SQL 腳本文件或者查詢編輯器的窗口都 可以包含多個批處理. 在這種情況下,需要使用批處理分隔符關(guān) 鍵字 GO 來結(jié)束每一個批處理. 使用 GO 來結(jié)束批處理時,只能把它自己 放在單獨的一行上. 結(jié)束一個批處理時,將會釋放所有由該批 處理所創(chuàng)建的局部變量、臨時表、游標(biāo).,1. T-SQL批處理,-以下代碼會列出該服務(wù)器上所有的數(shù)據(jù)庫名稱 SELECT name FROM sys.databases,實戰(zhàn)練習(xí),- 查詢登錄的用戶賬號,使用的數(shù)據(jù)庫與當(dāng)前的數(shù)據(jù)庫服務(wù)器的系統(tǒng)日期和時間 SELECT SUSER_SNA
6、ME(), DB_NAME(), GETDATE(),在 SSMS 的工具條上會標(biāo)明當(dāng)前的數(shù)據(jù) 庫,你也可以使用它來改變當(dāng)前的數(shù)據(jù)庫. 在代碼中,則可以使用 USE 命令來選定 當(dāng)前的數(shù)據(jù)庫. 使用 USE 命令來顯式地選定正確的數(shù)據(jù) 庫是一種好的開發(fā)方法,不要把選定正確的數(shù) 據(jù)庫交給用戶去做.,切換數(shù)據(jù)庫,有些特殊的 T-SQL 命令必須單獨地放在 它自己的批處理之中,或者說必須將它們與其 他的批處理命令分別放到不同的批處理中. 數(shù)據(jù)定義語言命令(CREATE、 ALTER 和 DELETE)就是這樣 T-SQL 命令, 應(yīng)當(dāng)將 它們放到他們自己的批處理中去,這是一項要 牢記的規(guī)則.,DDL
7、命令,可以在查詢編輯器中打開一個 .sql 腳本 文件,按下 F5 鍵或者選擇工具欄中的 !執(zhí)行 項來執(zhí)行一個 SQL 腳本程序中的全部批處理. 在查詢編輯器中可以通過突出顯示來選擇 一些命令,然后執(zhí)行這些選定的 T-SQL 命令. 在應(yīng)用程序中, 可以通過使用 ADO 或者 ODBC 來提交并執(zhí)行 T-SQL 批處理.,執(zhí)行批處理,對于 T-SQL 代碼應(yīng)格式化,以方便閱讀. T-SQL 命令往往都會寫得較長. 但T-SQL 會忽略空格和行尾的換行符,即不需要使用特 殊的續(xù)行符號來編寫長達數(shù)行的 T-SQL 命令, 從而顯著地提高了 T-SQL 代碼的可讀性. 注釋符號(略).,2. 格式化
8、 T-SQL 代碼,在完成程序代碼的編寫后,可以單擊”文件” 菜單中的 ”保存” 或 ”另存為” 選項, 將程序 代碼存為 *.sql 文件. 該文件是文本格式, 故可以 使用任何文本編輯器 (如 NotePad, UltraEdit) 來 進行編輯. 若先前已經(jīng)打開多個”查詢編輯器” 窗口, 并 編寫了多個文件, 則可以使用 ”保存全部查詢” 的方式來保存所有的程序代碼.,3. 保存程序代碼,在 T-SQL 中可以使用兩種變量, 一種是局 部變量(Local Variable),另外一種是全局變 量(Global Variable). 局部變量 局部變量是用戶可自定義的變量,它的作用 范圍僅
9、在程序內(nèi)部. 局部變量必須以 開頭,而且必須先作說 明: DECLARE 變量名 變量類型,4. 變量,在 T-SQL 中對變量賦值的語法如下: SELECT 局部變量=變量值 SET 局部變量=變量值 兩種賦值命令的主要區(qū)別在于: SELECT 可以從表、子查詢或者視圖中檢 索數(shù)據(jù),也可以包含其它的 SELECT 子句, 并且 一次可為多個變量賦值. SET 只能從表達式中獲取數(shù)據(jù). 兩個命令中都可以使用函數(shù).,變量的賦值,問題1 考慮下面的程序會有什么結(jié)果: DECLARE strName CHAR(10) SELECT strName=SmallFish PRINT strName GO
10、,問題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, Tem
11、pLastName,全局變量是可以調(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ù)器的名字 spid-當(dāng)前用戶進程的會話id cpu_busy-SQL Server 自上次啟動后的工作時間,全局變量,許多人對 T-SQL 的初步印象是它的流程控 制命令較少. 實際上,雖然它的流程控制命令沒 有其它語言那樣豐富,但已經(jīng)足夠了. 它為數(shù)據(jù)
12、 處理命令提供的布爾擴展 - 如EXISTS、IN 和 CASE - 補充了 IF 和 WHILE 語句的不足. IF 這個語句的特別之處在于:利用它只能對其 后的一條語句的執(zhí)行與否進行控制. 同時,它也 沒有 THEN,以及 ENDIF 等命令.,5 流程控制,例如 考慮下面程序運行的結(jié)果: IF 1=0 PRINT Line One PRINT Line Two 在這個腳本中,IF 條件應(yīng)該返回一個假值, 從而不會執(zhí)行 IF 下面的第一條 PRINT 命令.,一個 IF 命令只能控制一條語句的執(zhí)行與否, 這顯然缺乏實用性. 要解決這個問題, 可以使 用 BEGIN/END 塊, 它可將多條
13、命令作為一個 整體. IF condition BEGIN multiple lines END,IFELSE 語句,IF EXISTS() 結(jié)構(gòu)根據(jù) SELECT 命令返回 的結(jié)果集是否包含有行來進行判斷. 只要查詢 返回了一條記錄,就可以停止執(zhí)行查詢,轉(zhuǎn)而 執(zhí)行批處理中其他的語句,所以這種方法的速 度更快. USE 商品庫存 IF EXISTS(SELECT * FROM shangpin WHERE 產(chǎn)品數(shù)量=0) BEGIN PRINT 已有產(chǎn)品缺貨 END, WHILECONTINUEBREAK WHILE 命令在設(shè)定的條件成立時,會重復(fù) 執(zhí)行命令行或程序塊. 其語法如下: WHIL
14、E BEGIN BREAK CONTIUNE 命令行|程序塊 END 其它控制命令參見教科書.,WHILE 語句, CASE 分支語句 RETURN 終止語句 WAITFOR 暫停語句 PRINT 輸出語句 其語法格式和用法參見教科書.,其它流程控制語句,Microsoft SQL Server 2008提供了 7 種類 型的運算符,分別是算術(shù)運算符、賦值運算符、 位運算符、比較運算符、邏輯運算符、字符串 運算符和一元運算符. SQL Server 提供了許多系統(tǒng)內(nèi)置函數(shù),同時也允許用戶根據(jù)需要自己定義函數(shù). SQL Serve 提供的常用的內(nèi)置函數(shù)主要有以下幾類:數(shù)學(xué)函數(shù)、字符串函數(shù)、日期函
15、數(shù)、轉(zhuǎn)換函數(shù)、聚合函數(shù)等 .,三. 運算符與函數(shù),數(shù)據(jù)庫基礎(chǔ)與應(yīng)用(SQL Server 2008),邏輯運算符,數(shù)據(jù)庫基礎(chǔ)與應(yīng)用(SQL Server 2008),按位運算符對兩個二進制數(shù)據(jù)或整數(shù)數(shù)據(jù)進行位 操作,但是兩個操作數(shù)不能同時為二進制數(shù)據(jù),必須 有一個為整數(shù)數(shù)據(jù). SQL Server 2008 提供的按位 運算符如下表所示.,按位運算符,數(shù)據(jù)庫基礎(chǔ)與應(yīng)用(SQL Server 2008),(按位取反) *(乘)、/(除)、%(取余) +(正)、-(負)、+(加)、(+字符串串聯(lián))、-(減)、&(按位與)、(按位異或)、|(按位或) =、= 、 、!=, ! 、!(比較運算符) N
16、ot And All、Any、Between、In、Like、Or、Some =(賦值),運算符的優(yōu)先級,數(shù)據(jù)庫基礎(chǔ)與應(yīng)用(SQL Server 2008),Abs ( numeric_expression ):返回指定數(shù)值表達式的絕對值 Round ( numeric_expression , length ,function ):返回一個舍入到指定的長度或精度的數(shù)值 Floor ( numeric_expression ):返回小于或等于指定數(shù)值表達式的最大整數(shù) Ceiling ( numeric_expression ):返回大于或等于指定數(shù)值表達式的最小整數(shù) Power ( float
17、_expression , y ):返回指定表達式的指定冪的值 Sqrt ( float_expression ):返回指定表達式的平方根 Square ( float_expression ):返回指定表達式的平方 Exp ( float_expression ):返回指定的表達式的指數(shù)值 Log ( float_expression ):返回指定表達式的自然對數(shù) Log10 ( float_expression ):返回指定表達式的以10為底的對數(shù) Sin ( float_expression ):返回指定角度(以弧度為單位)的三角正弦值 Cos ( float_expression ):
18、返回指定角度(以弧度為單位)的三角余弦值,常用的數(shù)學(xué)函數(shù),數(shù)據(jù)庫基礎(chǔ)與應(yīng)用(SQL Server 2008),Ascii ( character_expression ):返回字符表達式中最左側(cè)的字符的 ASCII 代碼值 Char ( integer_expression ):將 int型的 ASCII 代碼轉(zhuǎn)換為字符 Str ( float_expression , length , decimal ):返回由數(shù)字數(shù)據(jù)轉(zhuǎn)換來的字符數(shù)據(jù) Len ( string_expression ):返回指定字符串表達式的字符數(shù),其中不包含尾隨空格 Substring ( value_expressio
19、n ,start_expression , length_expression ):返回字符表達式的從start_expression位置開始的長度為length_expression的子串 Left ( character_expression , integer_expression ):返回字符串中從左邊開始指定個數(shù)的字符 Right ( character_expression , integer_expression ):返回字符串中從右邊開始指定個數(shù)的字符 Ltrim( character_expression ):返回刪除了前導(dǎo)空格之后的字符表達式 Rtrim ( character_expression ):截斷所有尾隨空格后返回一個字符串,常用的字符串函數(shù),數(shù)據(jù)庫基礎(chǔ)與應(yīng)用(SQL Server 2008),Getdate ( ):返回系統(tǒng)當(dāng)前的日期和時間 Year ( date ):返回表示指定參數(shù) date 的“年”部分的整數(shù) Month ( date ):返回表示指定參數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年阜陽幼兒師范高等專科學(xué)校高職單招職業(yè)適應(yīng)性考試備考試題帶答案解析
- 2026年安徽商貿(mào)職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試備考試題帶答案解析
- 2026年合肥財經(jīng)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試參考題庫有答案解析
- 2026年廣東舞蹈戲劇職業(yè)學(xué)院單招綜合素質(zhì)筆試備考試題帶答案解析
- 土地合作開發(fā)協(xié)議2025年資金投入
- 2026年蚌埠學(xué)院高職單招職業(yè)適應(yīng)性考試模擬試題帶答案解析
- 2026年湖北科技學(xué)院繼續(xù)教育學(xué)院單招綜合素質(zhì)考試備考試題帶答案解析
- 2026年海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試備考試題帶答案解析
- 2026年安徽揚子職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試模擬試題有答案解析
- 2026年蚌埠學(xué)院單招綜合素質(zhì)考試參考題庫帶答案解析
- 中國憲法 中英對照
- 單井壓裂應(yīng)急預(yù)案
- 深圳市南山區(qū)雨污分流施工報價表
- 北師大版六年級上冊數(shù)學(xué)錯題資源
- GB/T 42287-2022高電壓試驗技術(shù)電磁和聲學(xué)法測量局部放電
- 電子版?zhèn)€人簡歷簡單模板
- 壓覆礦產(chǎn)資源查詢申請表
- GB/T 9115-2010對焊鋼制管法蘭
- GB/T 6495.1-1996光伏器件第1部分:光伏電流-電壓特性的測量
- GB/T 26160-2010中國未成年人頭面部尺寸
- 《凝聚態(tài)物理學(xué)新論》配套教學(xué)課件
評論
0/150
提交評論