




已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章 Transact-SQL語法,Transact-SQL語言概述 SQL語句使用說明 SQL的數據類型 變量定義 運算符 SQL Server常用函數 流程控制語句 與高級語言區(qū)別 掌握內容,Transact-SQL語言概述,SQL發(fā)展 20世紀70年代,IBM公司開始開發(fā)可以用于實現關系模型的語言和數據庫系統(tǒng); 1975年在IBM公司的System R上首次實現。原型稱為SEQUEL(Structured English Query Language) SQL-86是第一個SQL標準; SQL-89、SQL-92(SQL2)、SQL-99(SQL3); SQL是數據子語言,缺乏其它語言具有的許多基本編程能力,必須與應用語言共同使用才能提供訪問數據庫的方法。 使用SQL 查詢數據庫時,只需要告訴它做什么而不用告訴它如何去做。 結構化語言與面向過程和面向對象語言區(qū)別 人性化,符合人們的思維方式,容易理解和掌握,Transact-SQL語言概述,數據定義語言 DDL data definition language 用于創(chuàng)建、修改或刪除數據庫對象 Create,Alter,Drop; 數據控制語言 DCL data control language 可以控制訪問數據庫中特定對象的用戶, 通過Grant或Revoke語句授權或限制訪問。 數據操縱語言 DML data manipulation language 用于觀察、添加、修改或刪除存儲在數據庫中對象的數據。Select,Insert,Update,Delete,SQL語句使用說明,每條SQL語句以分號結束; 每條SQL語句可以單獨寫成一行,也可以分成若干行; SQL語句對大小寫不敏感,對于SQL語句的關鍵字、表名、列名等,可以大小寫混合; SQL Server用三段式名字標識對象:,前兩者可以省略,數據庫的默認值是當前數據庫,所有者名的默認值是數據庫的所有者dbo。 如: pubs.dbo.authors,SQL語句使用說明,注釋 注釋是程序代碼中不執(zhí)行的文本字符串(也稱為注解)。在SQL Server中,可以使用兩種類型的注釋字符:一種是ANSI標準的注釋符“-”,它用于單行注釋;另一種是與C語言相同的程序注釋符號,即“/* */”。 語句表示: CREATE GLOBAL|LOCAL TEMPORARY TABLE ( ,) ON COMMIT PRESERVE | DELETE ROWS ,SQL的數據類型,如果該列存儲的數據長度相同,應該用char(n),否則用varchar(n); 如果長度差別不大,希望提高查詢效率,可以使用char(n) 需要存儲中文字符時,最好使用nchar(n)和nvarchar(n)(示例),SQL的數據類型,在選擇整型數時,默認情況下使用int; 如果確認要存儲的數據很大或很小,可以考慮使用其它類型 如果提供的數據超過其允許的取值范圍,將將發(fā)生數據溢出錯誤。 (示例),SQL的數據類型,在 = 和 運算符,應避免使用 float 或 real 參與科學計算的數據可以float 或 real Decimai和numeric相同,0 = s = p = 38 例如:decimal(6,2),可以存儲精度為6,小數位為2的數據 (示例),SQL的數據類型,SQL的數據類型,注釋 如果在數據定義或變量聲明語句中沒有指定 n,默認長度為 1。 當列數據項大小一致時應使用 binary。 當列數據項大小不一致時應使用 varbinary。,SQL的數據類型,日期型示例:2009-10-15 10:36:20:778,SQL的數據類型,SQL的數據類型,常用類型 字符型 char(n),varchar(n),nchar(n) ,nvarchar(n) 數字型 int, float, decimal(p,s) 位型 bit 文本型 text,ntext 圖形 image 日期時間型 datatime,變量定義,Transact-SQL語言中有兩種形式的變量,一種是用戶自己定義的局部變量,另外一種是系統(tǒng)提供的全局變量。 局部變量是用戶可自定義的變量,它的作用范圍僅在程序內部。在程序中通常用來儲存從表中查詢到的數據,或當作程序執(zhí)行過程中暫存變量。 局部變量定義: 使用局部變量必須以開頭,而且必須先用DECLARE 命令說明后才可使用。 DECLARE 變量名 變量類型 ,變量名 變量類型,變量定義,局部變量必須使用SELECT 或SET 命令來設定變量的值,其語法如下: SELECT 變量名= 變量值 SET 變量名= 變量值 示例: declare age int , born datetime; Set age=21; Set born=1981-10-20 17:20:12:000; Print age ; Print born ;,變量定義,全局變量是SQL Server系統(tǒng)內部使用的變量。任何程序都可以隨時調用全局變量; 全局變量通常存儲一些SQL Server的配置設定值和統(tǒng)計數據。用戶可以在程序中用全局變量來測試系統(tǒng)的設定值或者是Transact-SQL命令執(zhí)行后的狀態(tài)值; 用戶只能使用預先定義的全局變量; 引用全局變量時,必須以標記符“”開頭; 如:ERROR 返回最后執(zhí)行的 Transact-SQL 語句的錯誤代碼。 SERVERNAME,VERSION,ROWCOUNT,運算符,算術運算 算術運算符可以在兩個表達式上執(zhí)行數學運算,這兩個表達式可以是數字數據類型分類的任何數據類型。算術運算符包括加(+)、減(-)、乘(*)、除(/)和取模(%); 賦值運算 只有一個賦值運算符,即等號(=)。另外等號還在關系運算中做比較用。 位運算 位運算符使我們能夠在整型數據或者二進制數據(image 數據類型除外)之間執(zhí)行位操作。兩個數按位與 & ,按位或 |,按位異或 。 關系運算 用于比較兩個表達式的大小或是否相同,其比較的結果是布爾值,即TRUE(表示表達式的結果為真)、FALSE(表示表達式的結果為假)以及UNKNOWN。除了 text、ntext 或 image 數據類型的表達式外,比較運算符可以用于所有的表達式。,運算符,邏輯運算 邏輯運算符可以把多個邏輯表達式連接起來。邏輯運算符包括AND、OR和NOT等運算符。邏輯運算符和比較運算符一樣,返回帶有 TRUE 或 FALSE 值的布爾數據類型。 字符串運算 連接運算符 + 用于連接兩個或兩個以上的字符或二進制串、列名或者串和列的混合體,將一個串加入到另一個串的末尾。 示例: declare age char(10); set age=abc+123; print age;,運算符,括號:() 乘、除、求模運算符:*、/、% 加減運算符:+、- 比較運算符:=、=、!=、!、! 位運算符:、&、| 邏輯運算符:NOT 邏輯運算符:AND 邏輯運算符:OR,SQL Server常用函數,字符串函數 日期和時間函數 數學函數 轉換函數 系統(tǒng)函數 聚合函數 其它函數,SQL Server常用函數,基本字符串函數 Lower,Upper,Ltrim,Rtrim Reverse(char) 返回字符表達式的反轉。 Replicate(char,int) 以指定的次數重復字符表達式。 STUFF(char1,int,int,char2) 刪除指定長度的字符并在指定的起始點插入另一組字符。 Select stuff(abcdef, 2, 3, 123456) ; 結果:a123456ef,SQL Server常用函數,字符串查找函數: Charindex(char1,char2 ,int) 返回字符串char2 中指定表達式 char1 的起始位置。 Patindex(%pattern% , expression ) 返回指定表達式中某模式第一次出現的起始位置; 長度和分析函數: Datalength(char),Left(char,int),Right(char,int) Substring(expression , start , length ),SQL Server常用函數,示例:輸出結果 declare a varchar(10),b varchar(10); set a=123; set b=345123678; Print Patindex(%123%,b) print Charindex( a,b);,SQL Server常用函數,轉換函數: Ascii(char) 返回字符表達式最左端字符的 ASCII 代碼值; Char(int) 將 int ASCII 代碼轉換為字符的字符串函數; Str(float) 把數字轉換為字符數據。,SQL Server常用函數,聚合函數 AVG 求平均值 COUNT 統(tǒng)計數目 MAX 求最大值 MIN 求最小值 SUM 求和,SQL Server常用函數,DATENAME 返回代表指定日期的指定日期部分的字符串。 DATEPART 返回代表指定日期的指定日期部分的整數。 。,Datepart取值,流程控制語句,流程控制語句是指那些用來控制程序執(zhí)行和流程分支的命令,在SQL Server 中,流程控制語句主要用來控制SQL語句、語句塊或者存儲過程的執(zhí)行流程。 IFELSE BEGINEND CASE WHILECONTINUEBREAK GOTO WAITFOR RETURN,流程控制語句,IFELSE 語法: IF Boolean_expression sql_statement | statement_block ELSE sql_statement | statement_block 如果布爾表達式中含有 SELECT 語句,必須用圓括號將 SELECT 語句括起來。 建議始終使用圓括號。,流程控制語句,IFELSE語句示例: declare x int, y int, z int; select x = 1, y = 2, z=3; if x y print x y ; -打印字符串x y else if y z print y z; else print z y ;,流程控制語句,BEGINEND BEGINEND語句能夠將多個SQL語句組合成一個語句塊,并將它們視為一個單元處理。在條件語句和循環(huán)等控制流程語句中,當要執(zhí)行的語句超過一個時,就需要使用BEGINEND語句。 語法: BEGIN sql_statement | statement_block END,流程控制語句,BEGINEND語句示例 declare SCORE FLOAT; if(select avg(成績) from 學生信息)70 begin print 平均分小于70 ; select score=min(成績) from 學生信息; end; else select score=max(成績) from 學生信息; print score;,流程控制語句,CASE CASE函數可以計算多個條件式,并將其中一個符合條件的結果表達式返回。 語法: CASE input_expression WHEN when_expression THEN result_expression .n ELSE else_result_expression END,流程控制語句,CASE 示例1 Declare i int,str char(10); set str=b; set i= case str when a then 97 when b then 98 else 99 end; print i;,流程控制語句,CASE 示例2 Declare str1 char(10),str2 char(10); set str1=b; set str2= case when str1=a then A when str1=b then B else C end; print str2;,流程控制語句,WHILECONTINUEBREAK WHILECONTINUEBREAK語句用于設置重復執(zhí)行 SQL 語句或語句塊的條件。只要指定的條件為真,就重復執(zhí)行語句。 CONTINUE語句可以使程序跳過CONTINUE語句后面的語句,回到WHILE循環(huán)的第一行命令; BREAK語句則使程序完全跳出循環(huán),結束WHILE語句的執(zhí)行。,流程控制語句,語法: WHILE BEGIN sql_statement | statement_block CONTINUE BREAK sql_statement | statement_block END,流程控制語句,WHILE 語句示例 declare x int,y int, c int; select x = 1,y=1; while x3 begin print x; -打印變量x 的值 while y3 begin select c = 100*x + y; print c; -打印變量c 的值 select y = y + 1; end; select x = x + 1; select y = 1; end;,流程控制語句,GOTO 語法:Goto Label GOTO 語句用來改變程序執(zhí)行的流程,使程序跳到標有標識符的指定程序行,再繼續(xù)往下執(zhí)行。 作為跳轉目標的標識符可為數字與字符的組合,但必須以冒號結尾。 如標簽定義: Label:,流程控制語句,GOTO 示例 declare sum int,count int; select sum=0, count=1; label_1: select sum=sum+count; select count=count+1; if count=5 goto label_1; print count; print sum;,流程控制語句,WAITFOR語句 WAITFOR語句用于暫時停止執(zhí)行SQL語句、語句塊或者存儲過程等,直到所設定的時間已過或者所設定的時間已到才繼續(xù)執(zhí)行。 語法: WAITFOR DELAY time | TIME time DELAY一直等到指定的時間過去,最長可達 24 小時。 TIME 等待到指定時間 time為日期時間型,只需指定時間,不指定日期,格式:hh:mm:ss,流程控制語句,WAITFOR 示例 declare i int; set i=10; waitfor DELAY 00:00:05 print i;,流程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漁船租賃業(yè)務合同協(xié)議
- 銀行信托計劃保管合同模板
- 供港農產品購銷合同代理協(xié)議(樣本)
- 國有林權出讓合同
- 畢業(yè)生實習與勞動合同解析
- 渠道合作銷售合同范本
- 合同法視角:股東不履行義務糾紛案例分析
- 新車銷售團隊心理素質訓練考核試卷
- 木制拼圖游戲考核試卷
- 世界音樂教育項目的策劃與實施考核試卷
- 穴位埋線療法在高血壓管理中的應用
- 2024年度(完整版)《各種各樣的天氣》課件
- 企業(yè)安全培訓課件-網絡與信息安全
- 《無障礙設計》課件
- 綠化養(yǎng)護服務方案(技術標 方案)
- 《長征勝利萬歲》楊成武-【中職專用】高一語文下學期同步課堂(高教版2023·基礎模塊下冊)
- 云母制品在阻燃材料中的應用
- 月考后正確的試卷分析方法分析研究
- 裝修施工規(guī)定(十四篇)
- 集團公司審批權限表
- SCADA系統(tǒng)操作手冊
評論
0/150
提交評論