SQL Server 2000 语法基础课件_第1页
SQL Server 2000 语法基础课件_第2页
SQL Server 2000 语法基础课件_第3页
SQL Server 2000 语法基础课件_第4页
SQL Server 2000 语法基础课件_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQLServer2000語法基礎7.1

SQLServer簡介

SQLServer是使用客戶機/伺服器(C/S)體系結構的關係型資料庫管理系統(RDBMS)。1988年推出了第一個OS/2版本,1992年,SQLServer移植到NT上後,Microsoft成了這個專案的主導者,1994年以後,Microsoft專注於開發、推廣SQLServer的WindowsNT版本1996年,Microsoft公司推出了SQLServer6.5版本,1998年,推出了SQLServer7.0版本,2000年推出了SQLServer2000。

SQLServer2000常見的版本有:企業版(EnterpriseEdition)、標準版(StandardEdition)、個人版(PersonalEdition)和開發人員版(DeveloperEdition)。企業版:一般作為資料庫伺服器使用。標準版:一般用於小型的工作組或部門。個人版:主要適用於移動用戶。開發人員版:適用於應用程式開發。7.2SQLServer的數據類型數據類型是數據的一種屬性,表示數據所表示資訊的類型。任何一種電腦語言都定義了自己的數據類型。當然,不同的程式語言都具有不同的特點,所定義的數據類型的各類和名稱都或多或少有些不同。SQLServer2000提供了以下常見的數據類型:

1.

二進位數據類型

二進位數據包括Binary、Varbinary和Image。

Binary數據類型既可以是固定長度的(Binary),也可以是變長度的,Binary[(n)]是n位固定的二進位數據。其中,n的取值範圍是從1到8000。其存儲容量的大小是n+4個位元組。

Varbinary[(n)]是n位變長度的二進位數據。其中,n的取值範圍是從1到8000。其存儲容量的大小是n+4個位元組,不是n個位元組。在Image數據類型中存儲的數據是以位字串存儲的,不是由

SQLServer解釋的,必須由應用程式來解釋。例如,應用程式可以使用BMP、TIEF、GIF和JPEG格式把數據存儲在Image數據類型中。2.字元數據類型字元數據是由任何字母、符號和數字任意組合而成的數據,字元數據的類型包括Char、Varchar和Text。Varchar是變長字元數據,其長度不超過8KB。Char是定長字元數據,其長度最多為8KB。超過8KB的ASCII數據可以使用Text數據類型存儲。例如,因為Html文檔全部都是ASCII字元,並且在一般情況下長度超過8KB,所以這些文檔可以Text數據類型存儲在SQLServer中。

3.Unicode數據類型

Unicode數據類型包括Nchar,Nvarchar和Ntext。在MicrosoftSQLServer中,傳統的非Unicode數據類型允許使用由特定字元集定義的字元。在SQLServer安裝過程中,允許選擇一種字元集。使用Unicode數據類型,列中可以存儲任何由Unicode標準定義的字元。在Unicode標準中,包括了以各種字元集定義的全部字元。使用Unicode數據類型,所佔用的空間是使用非Unicode數據類型所佔用的空間大小的兩倍。

在SQLServer中,Unicode數據以Nchar、Nvarchar和Ntext數據類型存儲。使用這種字元類型存儲的列可以存儲多個字元集中的字元。當列的長度變化時,應該使用Nvarchar字元類型,這時最多可以存儲4000個字元。當列的長度固定不變時,應該使用Nchar字元類型,同樣,這時最多可以存儲4000個字元。當使用Ntext數據類型時,該列可以存儲多於4000個字元。

4.日期和時間數據類型日期和時間數據類型包括Datetime和Smalldatetime兩種類型,日期和時間數據類型由有效的日期和時間組成。例如,有效的日期和時間數據包括“4/01/9812:15:00:00:00PM”和“1:28:29:15:01AM8/17/98”。前一個數據類型是日期在前,時間在後一個數據類型是霎時間在前,日期在後。在MicrosoftSQLServer中,日期和時間數據類型包括Datetime和Smalldatetime兩種類型時,所存儲的日期範圍是從1753年1月1日開始,到9999年12月31日結束(每一個值要求8個存儲位元組)。使用Smalldatetime數據類型時,所存儲的日期範圍是1900年1月1日開始,到2079年12月31日結束(每一個值要求4個存儲位元組)。

日期的格式可以設定。設置日期格式的命令如下:

SetDateFormat{format|@format_var|

其中,format|@format_var是日期的順序。有效的參數包括MDY、DMY、YMD、YDM、MYD和DYM。在默認情況下,日期格式為MDY。例如,當執行SetDateFormatYMD之後,日期的格式為年月日形式;當執行SetDateFormatDMY之後,日期的格式為日月年形式

5.數字數據類型數字數據只包含數字。數字數據類型包括正數和負數、小數(浮點數)和整數,整數由正整數和負整數組成,例如39、25、0-2和33967。在MicrsoftSQLServer中,整數存儲的數據類型是Int,Smallint和Tinyint。Int數據類型存儲數據的範圍大於Smallint數據類型存儲數據的範圍,而Smallint據類型存儲數據的範圍大於Tinyint數據類型存儲數據的範圍。使用Int數據的存儲數據的範圍是從-2147483648到2147483647(每一個值要求4個位元組存儲空間)。使用Smallint數據類型時,存儲數據的範圍從-32768到32767(每一個值要求2個位元組存儲空間)。使用Tinyint數據類型時,存儲數據的範圍是從0到255(每一個值要求1個位元組存儲空間)。

精確小數的數據在SQLServer中的數據類型是Decimal和Numeric。這種數據所占的存儲空間根據該數據的位數後的位數來確定。在SQLServer中,近似小數數據的數據類型是Float和Real。例如,三分之一這個分數記作.3333333,當使用近似數據類型時能準確表示。因此,從系統中檢索到的數據可能與存儲在該列中數據不完全一樣。6.貨幣數據表示正的或者負的貨幣數量。在MicrosoftSQLServer中,貨幣數據的數據類型是Money和Smallmoney

Money數據類型要求8個存儲位元組,Smallmoney數據類型要求4個存儲位元組。7.特殊數據類型特殊數據類型包括前面沒有提過的數據類型。特殊的數據類型有3種,即Timestamp、Bit和Uniqueidentifier。7.3T-SQL語言在SQLServer中,使用的是T-SQL語言,T-SQL是ANSLSQL的加強版語言,它提供了標準的SQL命令,另外,還對ANSLSQL命令做了許多擴充,提供類似Basic、Pascal和C等第三代語言的基本功能,如變數說明、程式流程控制、語言功能函數等。但是,因為SQLServer與其他編程工具的定位點不同,所以這些命令的功能側重於處理SQLServe中的數據,其他功能仍需要前端設計工具(如FoxPro、

Delphi、

PowerBuilder和VisralBasic等)來處理。因此,一般稱SQLServe、Oracle和Informix等資料庫系統為“資料庫存引擎”。由於T-SQL的基礎是ANSISQL,關於

ANSLSQL語言我們已在第4章介紹過。因此,本節只是介紹一下T-SQL語言的基本語法知識。7.3.1識別字在資料庫的相容級別設置為80時,常規識別字遵守以下的命名規則:(1)識別字長度可以從1到128個字元,局部臨時識別字的長度是不以超過116個字元的。(2)識別字的首字元必須為字母、“-”、@、#符號,其中字母可以是拉丁字元的大小寫a—z和A—Z,以及其他語言的字母符號。識別字中的@和#具有特殊意義。當識別字為@開頭時,它表示局部變數或參數,以兩個@為開始符時,它表示一個全局變數。當識別字以#開始時,它表示一個臨時資料庫對象。(3)識別字第一個字元後面的字元可以為Unicoden

Standard所定義的字元、數字、#或@符號。(4)識別字內不能嵌入空格和特殊符號。(5)識別字不能與關鍵字同名,無論是大寫還是小寫版本。7.3.2語法規則、運算符、變數

1.注釋在SQLServer中,有兩種類型的注釋字元:(1)單行注釋:使用兩個連在一起的減號“--”作為注釋符;(2)多行注釋:使用“/**/”作為注釋符。

2.運算符(1)算術運算符算術運算符包括加(+)、減(-)、乘(*)、除(/)和取餘(%)(2)賦值運算符

Transact-SQL中只有一個賦值運算符,即等號(=)(3)位運算符位運算符包括按位與(&)、按位或(|)、按位異或(^)和求反(~)。位運算符用來對整型數據或者二進位數據(image數據類型除外)之間執行位操作。要求在位運算符左右兩側的運算元不能同時是二進位數據。(4)比較運算符比較運算符包括:等於(=)、大於(>)、大於或等於(>=)、小於(<)、小於或等於(<=)、不等於(<>或!=)、不小於(!<)、不大於(!>),其中!=、!>、!<不是ANSI標準的運算符。(5)邏輯運算符邏輯運算符包括與(AND)、或(OR)和非(NOT)等運算符。邏輯運算返回布爾值,值為TRUE或FALSE。(6)字串連接運算符(+)連接運算符“+”用於連接兩個或兩個以上的字元或二進位串、列名或者串和列的混合體,將一個串加入到另一個串的末尾。其語法如下:<expression1>+<expression2>

(7)運算符的優先順序括弧:();乘、除、求模運算符:*,/,%;加減運算符:+,-;比較運算符:=,>,<,>=,<=,<>,!=,!>,!<;位運算符:^,&,|;邏輯運算符:NOT;邏輯運算符:AND;邏輯運算符:OR。3.變數(1)全局變數全局變數是SQLServer系統內部使用的變數,其作用範圍並不局限於某一程式,而是任何程式均可隨時調用全局變數通常存儲一些SQLServer的配置設定值和效能統計數據。用戶可在程式中用全局變數來測試系統的設定值或transact-SQL命令執行後的狀態值。在使用全局變數時應該注意以下幾點:

①全局變數不是由用戶的程式定義的,它們是在伺服器級定應義的。

②用戶只能使用預先定義的全局變數。

③引用全局變數時,必須以標記符“@@”開頭。

④全局變數對用戶來說是只讀的。

⑤局部變數的名稱不能與全局變數的名稱相同。(2)局部變數局部變數是用戶可自定義的變數,它的作用範圍僅在程式內部。在程式中通常用來儲存從表中查詢到的數據,或當作程式執行過程中暫存變數使用。局部變數必須以“@”開頭,而且必須先用DECLARE命令說明後才可使用。

其說明形式如下:

DECLARE@變數名變數類型[@變數名變數類型…]

其中變數類型可以是SQLServer2000支持的所有數據類型,也可以是用戶自定義的數據類型。在Transact-SQL中不能像在一般的程式語言中一樣使用“變數=變數值”來給變數賦值。必須使用SELECT或SET命令來設定變數的值,其語法如下:

SELECT@局部變數=變數值

SET@局部變數=變數值【例7.1】聲明一個長度為10個字元的變數“id”並賦值

declare@idchar(10)

select@id=‘10010001’

【注意】可以在Select命令查詢數據時,在Select命令中直接將列值賦給變數。【例7.2】查詢編號為“10010001”的員工和工資,將其分別賦予變數name和wage。

usepangu

declare@namechar(30)@wagemoneyselect@name=e_name,@wage=e_wagefromemployeewhereemp_id='10010001'select@namease_name,@wagease_wage

運行結果如下:

e_namee_wage

-----------------------------------------

張三8000.0000

7.3.3函數

1.系統函數系統函數用於獲取有關電腦系統、用戶、資料庫和數據庫對象的資訊。系統函數可以讓用戶在得到資訊後,使用條件語句,根據返回的資訊進行不同的操作。與其它函數一樣,可以在SELECT語句的SELECT和WHERE子句以及運算式中使用系統函數。2.字串函數字串函數對二進位數據、字串和運算式執行不同的運算。此類函數作用於CHAR、VARCHAR、BINARY、和VARBINARY數據類型以及可以隱式轉換為CHAR或VARCHAR的數據類型。可以在SELECT語句的SELECT和WHERE子句以及運算式中使用字串函數。常用的字串函數有:(1)字元轉換函數有以下幾種字元轉換函數:

·ASCII()

ASCII()函數返回字元運算式最左端字元的ASCII碼值。ASCII()函數語法如下:

ASCII(<character_expression>)

【例7.3】

selectascii(123)as'123',ascii('123')as'123',ascii('abc')as'abc'

運行結果如下:

123“123”“abc”---------------------------------

494997

【注意】在ASCII()函數中,純數字的字串可不用‘’括起來,但含其他字元的字串必須用‘’括起來使用,否則會出錯。

·CHAR()

CHAR()函數用於將ASCII碼轉換為字元。其語法如下:

CHAR(<integer_expression>)

如果沒有輸入0~255之間的ASCII碼值,CHAR()函數會返回一個NULL值。

·LOWER()

LOWER()函數把字串全部轉換為小寫,其語法如下:

LOWER(<character_expression>)

【例7.4】

selectlower('Abc'),lower('ABC')

運行結果為:

abcabc

·UPPER()

UPPER()函數把字串全部轉換為大寫,其語法如下:

UPPER(character_expression)

【例7.5】

selectupper('Abc'),lower('abc')

運行結果為:

ABCabc

·STR()

STR()函數把數值型數據轉換為字元型數據,其語法如下:

STR(<float_expression>[,length[,<decimal>]])

引數length和decimal必須是非負值,length指定返回的字串的長度,decimal指定返回的小數位數。如果沒有指定長度,缺省的length值為10,decimal缺省值為0。小數位數大於decimal值時,STR()函數將其下一位四捨五入。指定長度應大於或等於數字的符號位數+小數點前的位數+小數點位數+小數點後的位數。如果<float_expression>小數點前的位數超過了指定的長度,則返回指定長度的“*”

【例7.6】

selectstr(123),str(123456,5),str(-123.456,8,3),str(123.456,5),str(123.456,8,2)

運行結果如下:

----------------------------------123*****-123.456123123.46(2)去空格函數去空格函數有如下兩種:

·LTRIM()

LTRIM()函數把字串頭部的空格去掉,其語法如下:

LTRIM(<character_expression>)

【例7.7】

selectltrim('123')

運行結果如下:

-------------------123

·RTRIM()

RTRIM()函數把字串尾部的空格去掉,其語法如下:

RTRIM(<character_expression>)

【例7.8】

Selectrtrim('123')

運行結果如下:

-------------------123

提示:在許多情況下,往往需要得到頭部和尾部都沒有空格字元的字串,這時可將上兩個函數嵌套使用。

【例7.9】

selectrtrim(ltrim('abcd'))

運行結果如下:

-------------------

abcd

(3)取子串函數取子串函數如下所示:

·LEFT()

LEFT()函數返回部分字串,其語法如下:

LEFT(<character_expression>,<integer_expression>)

LEFT()函數返回的子串是從字串最左邊起到第integer_expression個字元的部分。若integer_expression為負值,則返回NULL值。【例7.10】

selectleft('SQLserver2000',10)

運行結果如下:

-------------------

SQLserver

·RIGHT()

RIGHT()函數返回部分字串,其語法如下:

RIGHT(<character_expression>,<integer_expression>)

RIGHT()函數返回的子串是從字串右邊第integer_expression個字元起到最後一個字元的部分。若integer_expression為負值,則返回NULL值。【例7.11】

selectright(‘SQLserver2000’,4)

運行結果如下:

-------------------2000

·SUBSTRING()

SUBSTRING()函數返回部分字串,其語法如下:

SUBSTRING(<expression>,<starting_position>,length)

SUBSTRING()函數返回的子串是從字串左邊第starting_position個字元起length個字元的部分。其中運算式可以是字串或二進位串或含字段名的運算式。SUBSTRING()函數不能用於TEXT和IMAGE數據類型。

【例7.12】

selectsubstring('SQLserver2000',5,6)

運行結果如下:

-------------------

server(4)字串比較函數字串比較函數如下所示:

·CHARINDEX()

CHARINDEX()函數返回字串中某個指定的子串出現的開始位置,其語法如下:

CHARINDEX(<’substring_expression’>,<expression>)

其中substring_expression是所要查找的字元運算式,expression可為字串也可為列名運算式。如果沒有發現子串,則返回0值。此函數不能用於TEXT和IMAGE數據類型。

【例7.13】

selectcharindex('def','abcdefgh')

運行結果如下:

-------------------4

·PATINDEX()

PATINDEX()函數返回字串中某個指定的子串出現的開始位置,其語法如下:

PATINDEX(<’%substring_expression%’>,<column_name>)

其中子串運算式前後必須有百分號“%”否則返回值為0。

【例7.14】

selectpatindex('%def%','abcdefgh'),patindex('def','abcdefgh')

運行結果如下:

-------------------40

與CHARINDEX()函數不同的是,PATINDEX()函數的子串中可以使用通配符,且此函數可用於CHAR、VARCHAR和TEXT數據類型。(5)字串操作函數字串操作函數如下所示:

·QUOTENAME()

QUOTENAME()函數返回被特定字元括起來的字串,其語法如下:

QUOTENAME(<’character_expression’>[,quote_character])其中quote_character標明括字串所用的字元,如“‘”、“(”、“[”等,缺省值為“[]”

selectquotename('123','{'},quotename('123')

運行結果如下:

-------------------{123}[123]

·REPLICATE()

REPLICATE()函數返回一個重複character_expression指定次數的字串,其語法如下:

REPLICATE(character_expressioninteger_expression)如果integer_expression值為負值,則REPLICATE()函數返回NULL串。【例7.15】

selectreplicate('123',3),replicate('123',-3)

運行結果如下:

-------------------123123123NULL

·REVERSE()

REVERSE()函數將指定的字串的字元排列順序顛倒,其語法如下:

REVERSE(<character_expression>)

其中character_expression可以是字串、常數或一個列的值。

【例7.16】

selectreverse(456),reverse('abc')

運行結果如下:

-------------------654cba

·REPLACE()

REPLACE()函數返回被替換了指定子串的字串,其語法如下:

REPLACE(<string_expression1>,<string_expression2>,<string_expression3>)

REPLACE()函數用string_expression3替換在string_expression1中的子串string_expression2。

【例7.17】

selectreplace('abcdefg','def','123')

運行結果如下:

-------------------

abc123g·SPACE()

SPACE()函數返回一個有指定長度的空白字串,其語法如下:

SPACE(<integer_expression>)如果integer_expression值為負值,則SPACE()函數返回NULL串。【例7.18】

selectspace(6),space(-3)

運行結果如下:

-------------------NULL

·STUFF()

STUF()函數用另一子串替換字串指定位置、長度的子串,其語法如下:

STUFF(<character_expression1>,<start_position>,<length>,<character_expression2>)如果起始位置為負或長度值為負,或者起始位置大於character_expression1的長度,則STUFF()函數返回NULL值。如果length長度大於character_expression1的長度,則character_expression1只保留首字元。

selectstuff('abc123gh',3,3,'def'),stuff('123',6,2,'d'),stuff('123',1,3,'abc')

運行結果如下:

-------------------

abcdefghNULLabc

3.日期和時間函數

(1)日期函數日期函數用來操作DATETIME和SMALLDATETIME類型的數據,執行算術運算。與其它函數一樣,可以在SELECT語句的SELECT和WHERE子句以及運算式中使用日期函數。其使用方法如下:

日期函數參數,其中參數個數應不同的函數而不同。

·DAY()

DAY()函數語法如下:

DAY(<date_expression>)

DAY()函數返回date_expression中的日期值。

【例7.19】

selectday(1),day(34),day('5/7/2005')

運行結果如下:

-------------------247

·MONTH()

MONTH()函數語法如下:

MONTH(<date_expression>)

MONTH()函數返回date_expression中的月份值。

【例7.20】

selectmonth('5/7/2005'),month(8)

運行結果如下:

-------------------51

與DAY()函數不同的是,MONTH()函數的參數為整數時,一律返回整數值1,即SQLServer認為其是1900年1月。

·YEAR()

YEAR()函數語法如下:

YEAR(<date_expression>)

YEAR()函數返回date_expression中的年份值。

【例7.21】

selectyear(1),year(2),year('5/7/2005')

運行結果如下:

-------------------190019002005

【注意】在使用日期函數時,其日期值應在1753年到9999年之間,這是SQLServer系統所能識別的日期範圍,否則會出現錯誤。【例7.22】

selectyear('1/1/1400')

運行結果如下:

-------------------

伺服器:消息242,級別16,狀態3,行14.數學函數(1)三角函數

SIN(float_expression)返回以弧度表示的角的正弦

COS(float_expression)返回以弧度表示的角的余弦

TAN(float_expression)返回以弧度表示的角的正切

COT(float_expression)返回以弧度表示的角的餘切(2)反三角函數

ASIN(float_expression)返回正弦是FLOAT值的以弧度表示的角

ACOS(float_expression)返回余弦是FLOAT值的以弧度表示的角

ATAN(float_expression)返回正切是FLOAT值的以弧度表示的角

ATAN2(float_expression1,float_expression2)返回正切是float_expression1/float_expres-sion2的以弧度表示的角(3)角度轉換弧度函數

DEGREES(numeric_expression)把弧度轉換為角度返回與運算式相同的數據類型可為INTEGER/MONEY/REAL/FLOAT類型

RADIANS(numeric_expression)把角度轉換為弧度返回與運算式相同的數據類型可為--INTEGER/MONEY/REAL/FLOAT類型(4)冪函數

EXP(float_expression)返回運算式的指數值

LOG(float_expression)返回運算式的自然對數值

LOG10(float_expression)返回運算式的以10為底的對數值

SQRT(float_expression)返回運算式的平方根(5)取近似值函數

CEILING(numeric_expression)返回>=運算式的最小整數返回的數據類型與運算式相同可為NTEGER/MONEY/REAL/FLOAT類型

FLOOR(numeric_expression)返回<=運算式的最小整數返回的數據類型與運算式相同可為--INTEGER/MONEY/REAL/FLOAT類型

ROUND(numeric_expression)返回以integer_expression為精度的四捨五入值返回的數據(6)符號函數

ABS(numeric_expression)返回運算式的絕對值返回的數據類型與運算式相同可為--INTEGER/MONEY/REAL/FLOAT類型

SIGN(numeric_expression)--測試參數的正負號返回0零值1正數或-1負數返回的數據類型與運算式相同可為INTEGER/MONEY/REAL/FLOAT類型(7)其他函數

PI()返回值為π即3.1415926535897936RAND([integer_expression])用任選的[integer_expression]做種子值得出0-1間的隨機浮點數。

5.

轉換函數在一般情況下,SQLServer會自動完成數據類型的轉換,例如,可以直接將字元數據類型或運算式與DATATIME數據類型或運算式比較當運算式中用了INTEGER、SMALLINT或TINYINT時,SQLServer也可將INTEGER數據類型或運算式轉換為SMALLINT數據類型或運算式,這稱為隱式轉換。如果不能確定SQLServer是否能完成隱式轉換或者使用了不能隱式轉換的其他數據類型,就需要使用數據類型轉換函數做顯式轉換了。此類函數有兩個:(1)CAST()

CAST()函數語法如下:

CAST(<expression>AS<data_type>[length])(2)CONVERT()

CONVERT()函數語法如下:

CONVERT(<data_type>[length],<expression>[,style])【注意】

①data_type為SQLServer系統定義的數據類型,用戶自定義的數據類型不能在此使用。

②length用於指定數據的長度,缺省值為30。

③把CHAR或VARCHAR類型轉換為諸如INT或SAMLLINT這樣的INTEGER類型、結果必須是帶正號(+)或負號(-)的數值。

④TEXT類型到CHAR或VARCHAR類型轉換最多為8000個字元,即CHAR或VARCHAR數據類型是最大長度。

⑤IMAGE類型存儲的數據轉換到BINARY或VARBINARY類型,最多為8000個字元。

⑥把整數值轉換為MONEY或SMALLMONEY類型,按定義的國家的貨幣單位來處理,如人民幣、美元、英鎊等。⑦BIT類型的轉換把非零值轉換為1,並仍以BIT類型存儲。⑧試圖轉換到不同長度的數據類型,會截短轉換值並在轉換值後顯示“+”,以標識發生了這種截斷。

【例7.23】

selectcast(1234aschar),convert(int,5.26),convert(bit,123.45)

運行結果如下:

-------------------123451

用CONVERT()函數的style選項能以不同的格式顯示日期和時間。style是將DATATIME和SMALLDATETIME數據轉換為字串時所選用的由SQLServer系統提供的轉換樣式編號,不同的樣式編號有不同的輸出格式。

6.用戶自定義函數在SQLServer2000中用戶自定義函數是作為一個資料庫對象來管理的,可以使用企業管理器(EnterpriseManager)或Transact-SQL命令來創建、修改、刪除。用Transact-SQL命令創建用戶自定義函數的語法格式如下:

CREATEFUNCTION函數名稱(形式參數名稱AS數據類型)

RETURNS返回數據類型

BEGIN

函數內容

RETURN運算式

END

調用用戶自定義函數的基本語法為:變數=用戶名.函數名稱(實際參數列表)【注意】在調用返回數值的用戶自定義函數時,一定要在函數名稱的前面加上用戶名。7.3.4流程控制語句

1.IF…ELSE

其語法如下:

IF<條件運算式><命令行或程式塊>[ELSE[條件運算式]<命令行或程式塊>]

其中<條件運算式>可以是各種運算式的組合,但運算式的值必須是邏輯值“真”或“假”。ELSE子句是可選的,最簡單的IF語句沒有ELSE子句部分。IF…ELSE用來判斷當某一條件成立時執行某段程式,條件不成立時執行另一段程式。如果不使用程式塊,IF或ELSE只能執行一條命令。IF…ELSE可以進行嵌套。【例7.24】

declare@aint,@bint,@cint

select@a=5,@b=6,@c=4if@a>@b

print'a>b'--列印字串'a>b'elseif@b>@cprint'b>c'elseprint'c>b'

運行結果如下

b>c

【注意】在Transact-SQL中最多可嵌套32級

2.BEGIN…END

其語法如下:

BEGIN<命令行或程式塊>ENDBEGIN…END用來設定一個程式塊,將在BEGIN…END內的所有程式視為一個單元執行BEGIN…END經常在條件語句,如IF…ELSE中使用。在BEGIN…END中可嵌套另外的BEGIN…END來定義另一程式塊。3.CASECASE命令有兩種語句格式:CASE<運算式>WHEN<運算式>THEN<運算式>

WHEN<運算式>THEN<運算式>[ELSE<運算式>]END

或CASEWHEN<條件運算式>THEN<運算式>WHEN<條件運算式>THEN<運算式>[ELSE<運算式>]ENDCASE命令可以嵌套到SQL命令中。【例7.25】在一個名為gzgl的資料庫中,調整教職工的工資,職稱為“教授1”的上調10%,職稱為“副教授”的上調8%,職稱為“講師”的上調6%,其他上調4%。

usegzgl

updatezcgzb

setgzgs=casew

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论