《數(shù)據(jù)庫sql變量》PPT課件.ppt
《《數(shù)據(jù)庫sql變量》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫sql變量》PPT課件.ppt(56頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第2章 Transact-SQL語言,2.1 數(shù)據(jù)定義語言(DDL) 2.2 數(shù)據(jù)操縱語言(DML) 2.3 數(shù)據(jù)控制語言(DCL) 2.4 系統(tǒng)存儲過程 2.5 其它語言元素,上一章,返回目錄,Transact-SQL語言主要組成部分,數(shù)據(jù)定義語言(DDL,Data Definition Language) 數(shù)據(jù)操縱語言(DML,Data Manipularion Language) 數(shù)據(jù)控制語言(DCL,Data Control Language) 系統(tǒng)存儲過程(System Stored Procedure) 一些附加的語言元素,2.1 數(shù)據(jù)定義語言(DDL),數(shù)據(jù)定義語言是指用來定義和管理數(shù)據(jù)庫以及數(shù)據(jù)庫中的各種對象的語句,這些語句包括CREATE、ALTER和DROP等語句。在SQL Server 2000中,數(shù)據(jù)庫對象包括表、視圖、觸發(fā)器、存儲過程、規(guī)則、缺省、用戶自定義的數(shù)據(jù)類型等。這些對象的創(chuàng)建、修改和刪除等都可以通過使用CREATE、ALTER、DROP等語句來完成。,程序:創(chuàng)建數(shù)據(jù)庫表的一個例子,CREATE TABLE publishers ( pub_id char(4) NOT NULL CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED CHECK (pub_id IN (1389, 0736, 0877, 1622, 1756) OR pub_id LIKE 99[0-9][0-9]), pub_name varchar(40) NULL, city varchar(20) NULL, state char(2) NULL, country varchar(30) NULL DEFAULT(USA) ),程序2:修改視圖的一個例子,USE pubs GO ALTER VIEW yourview AS SELECT title, mycount= @@ ROWCOUNT, ytd_sales FROM titles WHERE type = mod_cook GO SELECT * FROM yourview GO,程序3:刪除觸發(fā)器的一個例子,/*下面的例子將刪除觸發(fā)器employee_insupd。*/ USE pubs IF EXISTS (SELECT name FROM sysobjects WHERE name = employee_insupd AND type = TR) DROP TRIGGER employee_insupd GO,2.2 數(shù)據(jù)操縱語言(DML),數(shù)據(jù)操縱語言是指用來查詢、添加、修改和刪除數(shù)據(jù)庫中數(shù)據(jù)的語句,這些語句包括SELECT、INSERT、UPDATE、DELETE等。在默認情況下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成員才有權(quán)利執(zhí)行數(shù)據(jù)操縱語言。,1、SELECT語句,SELECT語句的語法形式如下: SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] [COMPUTE clause] [FOR BROWSE],程序4:顯示居住在加利福尼亞州且姓名不為 McBadden 的作者列。,USE pubs SELECT au_fname, au_lname, phone AS Telephone FROM authors WHERE state = CA and au_lname McBadden ORDER BY au_lname ASC, au_fname ASC,程序5:使用兩個相關(guān)子查詢查找作者姓名,這些作者至少參與過一本受歡迎的計算機書籍的創(chuàng)作。,USE pubs SELECT au_lname, au_fname FROM authors WHERE au_id IN (SELECT au_id FROM titleauthor WHERE title_id IN (SELECT title_id FROM titles WHERE type = popular_comp)),程序7:先刪除表T1,然后又創(chuàng)建一個帶有四個列的表T1。最后利用INSERT 語句插入一些數(shù)據(jù)行,這些行只有部分列包含值。,IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = T1) DROP TABLE T1 GO CREATE TABLE T1 ( column_1 int identity, column_2 varchar(30) CONSTRAINT default_name DEFAULT (column default),,column_3 int NULL, column_4 varchar(40) ) INSERT INTO T1 (column_4) VALUES (Explicit value) INSERT INTO T1 (column_2,column_4) VALUES (Explicit value, Explicit value) INSERT INTO T1 (column_2,column_3,column_4) VALUES (Explicit value,-44,Explicit value) SELECT * FROM T1,程序清單2-8:一個簡單的修改語句。,UPDATE publishers SET city = Atlanta, state = GA‘,程序清單2-9:一個帶有WHERE條件的修改語句。,UPDATE authors SET state = PC, city = Bay City WHERE state = CA AND city = Oakland,2.4 系統(tǒng)存儲過程,系統(tǒng)存儲過程是SQL Server系統(tǒng)創(chuàng)建的存儲過程,它的目的在于能夠方便地從系統(tǒng)表中查詢信息,或者完成與更新數(shù)據(jù)庫表相關(guān)的管理任務(wù)或其它的系統(tǒng)管理任務(wù)。系統(tǒng)存儲過程可以在任意一個數(shù)據(jù)庫中執(zhí)行。系統(tǒng)存儲過程創(chuàng)建并存放于系統(tǒng)數(shù)據(jù)庫master中,并且名稱以sp_或者xp_開頭。,系統(tǒng)存儲過程的部分示例如下:,sp_addtype:用于定義一個用戶定義數(shù)據(jù)類型。 sp_configure:用于管理服務(wù)器配置選項設(shè)置。 xp_sendmail:用于發(fā)送電子郵件或?qū)ず粜畔ⅰ?sp_stored_procedures:用于返回當(dāng)前數(shù)據(jù)庫中的存儲過程的清單。,sp_help:用于顯示參數(shù)清單和其數(shù)據(jù)類型。 sp_depends:用于顯示存儲過程依據(jù)的對象或者依據(jù)存儲過程的對象。 sp_helptext:用于顯示存儲過程的定義文本。 sp_rename:用于修改當(dāng)前數(shù)據(jù)庫中用戶對象的名稱。,2.5 其它語言元素,2.5.1 注釋 2.5.2 變量 2.5.3 運算符 2.5.4 函數(shù) 2.5.5 流程控制語句,2.5.1 注釋,注釋是程序代碼中不執(zhí)行的文本字符串(也稱為注解)。在SQL Server中,可以使用兩種類型的注釋字符:一種是ANSI標(biāo)準(zhǔn)的注釋符“--”,它用于單行注釋;另一種是與C語言相同的程序注釋符號,即“/* */”。,2.5.2 變量,變量是一種語言中必不可少的組成部分。Transact-SQL語言中有兩種形式的變量,一種是用戶自己定義的局部變量,另外一種是系統(tǒng)提供的全局變量。,1. 局部變量,局部變量是一個能夠擁有特定數(shù)據(jù)類型的對象,它的作用范圍僅限制在程序內(nèi)部。局部變量可以作為計數(shù)器來計算循環(huán)執(zhí)行的次數(shù),或是控制循環(huán)執(zhí)行的次數(shù)。另外,利用局部變量還可以保存數(shù)據(jù)值,以供控制流語句測試以及保存由存儲過程返回的數(shù)據(jù)值等。局部變量被引用時要在其名稱前加上標(biāo)志“@”,而且必須先用DECLARE命令定義后才可以使用。,2. 全局變量,全局變量是SQL Server系統(tǒng)內(nèi)部使用的變量,其作用范圍并不僅僅局限于某一程序,而是任何程序均可以隨時調(diào)用。全局變量通常存儲一些SQL Server的配置設(shè)定值和統(tǒng)計數(shù)據(jù)。用戶可以在程序中用全局變量來測試系統(tǒng)的設(shè)定值或者是Transact-SQL命令執(zhí)行后的狀態(tài)值。,使用全局變量時應(yīng)該注意以下幾點:,①全局變量不是由用戶的程序定義的,它們是在服務(wù)器級定義的。 ②用戶只能使用預(yù)先定義的全局變量。 ③引用全局變量時,必須以標(biāo)記符“@@”開頭。 ④局部變量的名稱不能與全局變量的名稱相同,否則會在應(yīng)用程序中出現(xiàn)不可預(yù)測的結(jié)果。,2.5.3 運算符,運算符是一些符號,它們能夠用來執(zhí)行算術(shù)運算、字符串連接、賦值以及在字段、常量和變量之間進行比較。在SQL Server 2000中,運算符主要有以下六大類:算術(shù)運算符、賦值運算符、位運算符、比較運算符、邏輯運算符以及字符串串聯(lián)運算符。,1.算術(shù)運算符,算術(shù)運算符可以在兩個表達式上執(zhí)行數(shù)學(xué)運算,這兩個表達式可以是數(shù)字數(shù)據(jù)類型分類的任何數(shù)據(jù)類型。算術(shù)運算符包括加(+)、減(—)、乘(*)、除(/)和取模(%)。,2.賦值運算符,Transact-SQL 中只有一個賦值運算符,即等號(=)。賦值運算符使我們能夠?qū)?shù)據(jù)值指派給特定的對象。另外,還可以使用賦值運算符在列標(biāo)題和為列定義值的表達式之間建立關(guān)系。,3.位運算符,位運算符使我們能夠在整型數(shù)據(jù)或者二進制數(shù)據(jù)(image 數(shù)據(jù)類型除外)之間執(zhí)行位操作。此外,在位運算符左右兩側(cè)的操作數(shù)不能同時是二進制數(shù)據(jù)。,表2-1 位運算符,,4.比較運算符,比較運算符用于比較兩個表達式的大小或是否相同,其比較的結(jié)果是布爾值,即TRUE(表示表達式的結(jié)果為真)、FALSE(表示表達式的結(jié)果為假)以及UNKNOWN。除了 text、ntext 或 image 數(shù)據(jù)類型的表達式外,比較運算符可以用于所有的表達式。,5.邏輯運算符,邏輯運算符可以把多個邏輯表達式連接起來。邏輯運算符包括AND、OR和NOT等運算符。邏輯運算符和比較運算符一樣,返回帶有 TRUE 或 FALSE 值的布爾數(shù)據(jù)類型。,6.字符串串聯(lián)運算符,字符串串聯(lián)運算符允許通過加號 (+) 進行字符串串聯(lián),這個加號即被稱為字符串串聯(lián)運算符。例如對于語句SELECT ‘a(chǎn)bc’+’def’,其結(jié)果為abcdef。,運算符的優(yōu)先等級從高到低如下所示,括號:(); 乘、除、求模運算符:*、/、%; 加減運算符:+、- ; 比較運算符:=、、=、、!=、!、!; 位運算符:^、&、|; 邏輯運算符:NOT; 邏輯運算符:AND; 邏輯運算符:OR。,2.5.4 函數(shù),在Transact-SQL語言中,函數(shù)被用來執(zhí)行一些特殊的運算以支持SQL Server的標(biāo)準(zhǔn)命令。Transact-SQL 編程語言提供了三種函數(shù): ㈠行集函數(shù):行集函數(shù)可以在Transact-SQL語句中當(dāng)作表引用。 ㈡聚合函數(shù):聚合函數(shù)用于對一組值執(zhí)行計算并返回一個單一的值。 ㈢標(biāo)量函數(shù):標(biāo)量函數(shù)用于對傳遞給它的一個或者多個參數(shù)值進行處理和計算,并返回一個單一的值。,2.日期和時間函數(shù),日期和時間函數(shù)用于對日期和時間數(shù)據(jù)進行各種不同的處理和運算,并返回一個字符串、數(shù)字值或日期和時間值。在SQL Server 2000中,日期和時間函數(shù)的類型如表2-5所示;另外,表2-6列出了日期類型的名稱、縮寫形式以及可接受的值。,表2-5 日期和時間函數(shù)的類型,程序33:從GETDATE函數(shù)返回的日期中 提取月份數(shù),SELECT DATEPART(month, GETDATE()) AS Month Number 運行結(jié)果為: Month Number ------------ 2,程序4:從日期 03/12/1998 中返回月份數(shù)、天數(shù)和年份數(shù)。,SELECT MONTH(03/12/1998), DAY(03/12/1998),YEAR(03/12/1998) 運行結(jié)果為: ----- ------ ------ 3 12 1998,3.?dāng)?shù)學(xué)函數(shù),數(shù)學(xué)函數(shù)用于對數(shù)字表達式進行數(shù)學(xué)運算并返回運算結(jié)果。數(shù)學(xué)函數(shù)可以對SQL Server提供的數(shù)字數(shù)據(jù)(decimal、integer、float、real、money、smallmoney、smallint 和 tinyint)進行處理。,程序清單2-35:,在同一表達式中使用CEILING()、FLOOR()、ROUND()函數(shù)。 select ceiling(13.4), floor(13.4), round(13.4567,3) 運行結(jié)果為: --------- --------- ------- 14 13 13.4570,4.轉(zhuǎn)換函數(shù),一般情況下,SQL Server會自動處理某些數(shù)據(jù)類型的轉(zhuǎn)換。例如,如果比較 char 和 datetime 表達式、smallint 和 int 表達式、或不同長度的 char 表達式,SQL Server 可以將它們自動轉(zhuǎn)換,這種轉(zhuǎn)換被稱為隱性轉(zhuǎn)換。但是,無法由SQL Server自動轉(zhuǎn)換的或者是SQL Server自動轉(zhuǎn)換的結(jié)果不符合預(yù)期結(jié)果的,就需要使用轉(zhuǎn)換函數(shù)做顯示轉(zhuǎn)換。轉(zhuǎn)換函數(shù)有兩個:CONVERT和CAST。,5.系統(tǒng)函數(shù),系統(tǒng)函數(shù)用于返回有關(guān)SQL Server系統(tǒng)、用戶、數(shù)據(jù)庫和數(shù)據(jù)庫對象的信息。系統(tǒng)函數(shù)可以讓用戶在得到信息后,使用條件語句,根據(jù)返回的信息進行不同的操作。與其它函數(shù)一樣,可以在SELECT語句的SELECT和WHERE子句以及表達式中使用系統(tǒng)函數(shù)。,程序清單2-38,返回 Northwind 數(shù)據(jù)庫的 Employees 表中的首列的名稱。 USE Northwind SELECT COL_NAME(OBJECT_ID(Employees), 1) 運行結(jié)果為: EmployeeID,2.5.5 流程控制語句,流程控制語句是指那些用來控制程序執(zhí)行和流程分支的命令,在SQL Server 2000中,流程控制語句主要用來控制SQL語句、語句塊或者存儲過程的執(zhí)行流程。,1. IF…ELSE語句,IF…ELSE語句是條件判斷語句,其中,ELSE子句是可選的,最簡單的IF語句沒有ELSE子句部分。IF…ELSE語句用來判斷當(dāng)某一條件成立時執(zhí)行某段程序,條件不成立時執(zhí)行另一段程序。SQL Server允許嵌套使用IF…ELSE語句,而且嵌套層數(shù)沒有限制。,IF…ELSE語句的語法形式,IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ],2.BEGIN…END語句,BEGIN…END語句能夠?qū)⒍鄠€Transact-SQL語句組合成一個語句塊,并將它們視為一個單元處理。在條件語句和循環(huán)等控制流程語句中,當(dāng)符合特定條件便要執(zhí)行兩個或者多個語句時,就需要使用BEGIN…END語句,其語法形式為: BEGIN { sql_statement | statement_block } END,3.CASE函數(shù),CASE函數(shù)可以計算多個條件式,并將其中一個符合條件的結(jié)果表達式返回。CASE函數(shù)按照使用形式的不同,可以分為簡單CASE函數(shù)和搜索CASE函數(shù)。,1、CASE函數(shù)的語法形式,CASE input_expression WHEN when_expression THEN result_expression [ .n ] [ ELSE else_result_expression END,2、搜索 CASE函數(shù)的語法形式,CASE WHEN Boolean_expression THEN result_expression [ .n ] [ ELSE else_result_expression END,4. WHILE…CONTINUE…BREAK語句,WHILE…CONTINUE…BREAK語句用于設(shè)置重復(fù)執(zhí)行 SQL 語句或語句塊的條件。只要指定的條件為真,就重復(fù)執(zhí)行語句。其中,CONTINUE語句可以使程序跳過CONTINUE語句后面的語句,回到WHILE循環(huán)的第一行命令。BREAK語句則使程序完全跳出循環(huán),結(jié)束WHILE語句的執(zhí)行。,結(jié)束WHILE語句的語法形式為:,WHILE Boolean_expression { sql_statement | statement_block } [ BREAK ] { sql_statement | statement_block } [ CONTINUE ],5. GOTO語句,GOTO語句可以使程序直接跳到指定的標(biāo)有標(biāo)識符的位置處繼續(xù)執(zhí)行,而位于GOTO語句和標(biāo)識符之間的程序?qū)⒉粫粓?zhí)行。GOTO語句和標(biāo)識符可以用在語句塊、批處理和存儲過程中,標(biāo)識符可以為數(shù)字與字符的組合,但必須以“:”結(jié)尾。,GOTO語句的語法形式,GOTO label …… label: 程序清單2-50:利用GOTO語句求出從1加到5的總和。 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 select @count @sum,6. WAITFOR語句,WAITFOR語句用于暫時停止執(zhí)行SQL語句、語句塊或者存儲過程等,直到所設(shè)定的時間已過或者所設(shè)定的時間已到才繼續(xù)執(zhí)行。WAITFOR語句的語法形式為: WAITFOR { DELAY time | TIME time } 其中,DELAY用于指定時間間隔,TIME用于指定某一時刻,其數(shù)據(jù)類型為datetime,格式為‘hh:mm:ss’。,7. RETURN語句,RETURN語句用于無條件地終止一個查詢、存儲過程或者批處理,此時位于RETURN語句之后的程序?qū)⒉粫粓?zhí)行。RETURN語句的語法形式為: RETURN [ integer_expression ] 其中,參數(shù)integer_expression為返回的整型值。存儲過程可以給調(diào)用過程或應(yīng)用程序返回整型值。,謝謝您的光臨!,Thank you very much!,下一章,- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)庫sql變量 數(shù)據(jù)庫 sql 變量 PPT 課件
鏈接地址:http://m.italysoccerbets.com/p-2890432.html