欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:數(shù)據(jù)庫 筆記 SQL中的函數(shù)

柚子快報激活碼778899分享:數(shù)據(jù)庫 筆記 SQL中的函數(shù)

http://yzkb.51969.com/

目錄

前言

一、系統(tǒng)內(nèi)置函數(shù)

1、數(shù)學(xué)函數(shù)

2、日期和時間函數(shù)

3、聚合函數(shù)

4、字符串函數(shù)

二、自定義函數(shù)

1、標(biāo)量函數(shù)的創(chuàng)建與調(diào)用

2、內(nèi)嵌表值函數(shù)的創(chuàng)建與調(diào)用

3、多語句表值函數(shù)的創(chuàng)建與調(diào)用

前言

? ? ? ? 函數(shù)是由一個或多個 T-SQL 語句組成的子程序,可用于封裝代碼以便重復(fù)使用。

一、系統(tǒng)內(nèi)置函數(shù)

????????T-SQL提供的內(nèi)置函數(shù),按照返回值是否具有確定性可分為確定性函數(shù)和非確定性函數(shù)兩大類。

確定性函數(shù):每次使用特定的輸入值調(diào)用該函數(shù)時,返回的結(jié)果都相同。非確定性函數(shù):每次使用特定的輸入值調(diào)用時,返回的結(jié)果都不同。

? ? ? ? 函數(shù) DATEADD為確定性函數(shù),因為對于任何給定參數(shù),返回的結(jié)果總是相同。函數(shù) GETDATE為非確定性函數(shù),因為每次執(zhí)行這個函數(shù),返回的結(jié)果都不同。

1、數(shù)學(xué)函數(shù)

常用數(shù)學(xué)函數(shù)

函數(shù)名稱函數(shù)功能函數(shù)名稱函數(shù)功能ABS求絕對值POWER求 x的 y 次方COS余弦函數(shù)RAND求隨機(jī)數(shù)COT余切函數(shù)ROUND四舍五入EXP計算 e的 x次冪SIN正弦函數(shù)FLOOR求僅次于最小值的值SQUARE開方LOG求自然對數(shù)SQRT求平方根PI常量,圓周率TAN正切函數(shù)

2、日期和時間函數(shù)

GETDATE():返回系統(tǒng)當(dāng)前的日期和時間。DATEADD(datepart, integer_expression, date_expression):返回指定日期?date_expression(日期表達(dá)式)加上指定的額外日期間隔?integer_expression(整形表達(dá)式)產(chǎn)生的新日期。DATEDIFF(datepart, date_expression1,?date_expression2):返回兩個指定日期在 datepart 方面的不同之處,即?date_expression2 超過?date_expression1 的差值,結(jié)果值是一個帶有正負(fù)號的整數(shù)值。DATENAME(datepart, date_expression):以字符串的形式返回日期的指定部分,此部分由 datepart 來指定。DATEPART(datepart, date_expression):以整數(shù)值的形式返回日期表達(dá)式的指定部分。此部分由 datepart 來指定。day(date_expression):返回日期表達(dá)式中的日。month(date_expression):返回日期表達(dá)式中的月。year(date_expression):返回日期表達(dá)式中的年。

????????DATEPART() 函數(shù) 和 DATENAME 函數(shù)極其相似,只不過前者返回的是時間的名稱,后者返回的是具體的時間數(shù)值。

3、聚合函數(shù)

常用聚合函數(shù)

函數(shù)名描述sum(列名)返回一個數(shù)字列的總和。avg(列名)對一個數(shù)據(jù)列計算平均值。min(列名)返回一個數(shù)字、字符串或日期列的最小值。max(列名)返回一個數(shù)字、字符串或日期列的最大值。count(列名)返回一個列的數(shù)據(jù)項數(shù),條數(shù)。count(*)返回找到的函數(shù)

4、字符串函數(shù)

ASCII(char_expression):返回表達(dá)式最左邊一個字符的 ASCII碼。CHAR(integer_expression):返回整數(shù)所代表的 ASCII碼值所對應(yīng)的字符。LOWER(char_expression):將大寫字符轉(zhuǎn)為小寫字符。UPPER(char_expression):將小寫字符轉(zhuǎn)為大寫字符。LTRIM(char_expression):刪除字符串開始部分的空格。RTRIM(char_expression):刪除字符串結(jié)尾部分的空格。RIGHT(char_expression, integer_expression):返回 char_expression 字符串中 integer_expression 個字符以后的部分字符串,integer_expression為負(fù)數(shù)時,返回 NULL。SPACE(integer_expression):返回由 integer_expression 個空格組成的字符串,integer_expression為負(fù)數(shù)時,返回 NULL。STR(float_expression [ , length [ , decimal ] ]):將一個數(shù)值類型數(shù)據(jù)轉(zhuǎn)為字符串,length 為字符串長度,decimal 為小數(shù)點的位數(shù)。STUFF(char_expression1, start, length, char_expression2):從?char_expression1 字符串的?start個字符位置刪除 length個字符,然后把?char_expression2 字符串插入到 char_expression1 的 start 處。SUBSTRING(expression, start, length):從?expression 的第 start 個字符處返回 length 個字符。REVERSE(char_expression):返回 char_expression 的逆序。CHARINDEX( ' pattern ', char_expression ):返回指定?pattern字符串在表達(dá)式中的起始位置。

二、自定義函數(shù)

? ? ? ? 在 SQL SERVER 中,根據(jù)函數(shù)返回值類型,將不同自定義函數(shù)分為 標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù) 和多語句表值函數(shù)。

標(biāo)量函數(shù):返回一個確定類型的變量值,其返回值類型除了 TEXT、NTEXT、IMAGE、CURSOR、TIMESTAMP 和 TABLE 類型外的其它數(shù)據(jù)類型。函數(shù)體語句定義在 BEGIN ··· END 語句內(nèi)。內(nèi)嵌表值函數(shù):返回值為一個表。內(nèi)嵌表值函數(shù)沒有由?BEGIN ··· END 語句括起來的函數(shù)體。返回的表由一個位于 RETURN 子句中的 SELECT 命令段從數(shù)據(jù)庫中篩選出來。內(nèi)嵌表值函數(shù)功能相當(dāng)于一個參數(shù)化的試圖。多語句表值函數(shù):可以看作是?內(nèi)嵌表值函數(shù)和內(nèi)嵌表值函數(shù)的結(jié)合體。它返回的是一個表,但它和標(biāo)量函數(shù)一樣有一個用? BEGIN ··· END 括起來的函數(shù)體,返回值的表中的數(shù)據(jù)是由函數(shù)體中的語句插入的。因此,它可以進(jìn)行多次查詢,對數(shù)據(jù)進(jìn)行多次篩選與合并,彌補(bǔ)了內(nèi)嵌表值函數(shù)的不足。

1、標(biāo)量函數(shù)的創(chuàng)建與調(diào)用

--? 創(chuàng)建標(biāo)量函數(shù)的語法格式

CREATE? FUNCTIOIN? [ owner_name.?]? ?function_name? ? /*? 函數(shù)名部分? */

? ? ? ? ( [ { @parameter_name? ?[ AS ]? ?parameter_data_type

? ? ? ? ? ? ? ? [ = DEFAULT ]?}? ?[ , ... n ]??] )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? /*? 形參定義部分? */

RETURNS? ?return_data_type? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? /*? 返回參數(shù)的類型? */

[ AS ]

BEGIN

? ? ? ? function_body? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? /*? 函數(shù)體部分? */

? ? ? ? ? ? ? ? RETURN? expression? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*? 返回語句? */

END

?

--??owner_name:指定自定義函數(shù)的所有者。

--??function_name:指定自定義函數(shù)的名稱。

--??@parameter_name:定義一個或多個參數(shù),一個函數(shù)最多可以定義1024個參數(shù),參數(shù)的作用范圍是整個函數(shù)。

--??parameter_data_type 和?return_data_type 指定參數(shù)的數(shù)據(jù)類型和 返回值類外的其它數(shù)據(jù)類型。

--??function_body:是函數(shù)體部分,決定了函數(shù)的返回值。

--??expression:指定自定義函數(shù)返回的標(biāo)量值表達(dá)式。

--? 當(dāng)函數(shù)參數(shù)由默認(rèn)值時,調(diào)用該函數(shù)時必須指定默認(rèn) DEFAULT 關(guān)鍵字才能獲取默認(rèn)值。

--? 示例:求 sc表中某門課程的平均成績。

create? ?function? ?average? (@cn? char(20))? ?returns? ?float

as

begin

? ? ? ? declare? ?@aver? ?float

? ? ? ? select? @aver = (select? avg(score)? ?from? sc? where? ?sno = @cn)

? ? ? ? return? ?@aver

end

--? 調(diào)用標(biāo)量函數(shù)的語法格式

owner_name.function_name? (parameter_expression? ?1 ··· parameter_expression? ?n)

?

--? 含義為: 所有者. 函數(shù)名(實參1, 實參2, ... , 實參n)。

當(dāng)調(diào)用自定義的標(biāo)量函數(shù)時,必須提供至少由兩部分組成的名稱(所有者. 函數(shù)名)??梢栽?SELECT 語句中調(diào)用,實參可為已賦值的局部變量或表達(dá)式;也可以使用 EXECUTE 語句調(diào)用,方法與調(diào)用存儲過程相同。

--? 示例:求 C001號課的平均成績。

declare? ?@course? ?char(6)

set? ?@course = 'C001'

select? ?dbo.average(@course)? ?as? ?'C001號課的平均成績'

2、內(nèi)嵌表值函數(shù)的創(chuàng)建與調(diào)用

--? 創(chuàng)建內(nèi)嵌表值函數(shù)的語法格式

CREATE? FUNCTIOIN? [ owner_name.?]? ?function_name? ? /*? 函數(shù)名部分? */

? ? ? ? ( [ { @parameter_name? ?[ AS ]? ?parameter_data_type

? ? ? ? ? ? ? ? [ = DEFAULT ]?}? ?[ , ... n ]??] )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? /*? 形參定義部分? */

RETURNS? ?table? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*? 返回參數(shù)的類型? */

[ AS ]

RETURN? ?[ ( SELECT? ?statement ) ]? ? ? ? ? ? ? ? ? ? ? ???/*? 通過 SELECT 語句返回內(nèi)嵌表? */

?

--? table:指定返回值為一個表。

--??SELECT? ?statement:指單個 SELECT語句,確定返回的表的數(shù)據(jù)。

--? 示例:查看某個專業(yè)所有學(xué)生的學(xué)號、姓名、所選課程的課程號和成績。

create? ?function? ?st_func(@major? ?nvarchar(20))? ?returns? ?table

as? ?return

? ? ? ? (select? ?student.sno, student.sname, sc.cno, sc.score? from? student, sc

? ? ? ? ? ? ? ? where? specialty = @major? ?and? ?student.sno? = sc.sno)

? ? ? ? 因為內(nèi)嵌套表值函數(shù)的返回值為 table 類型,所以在調(diào)用這類函數(shù)時,只能通過 SELECT語句。

--? 示例:查看計算機(jī)專業(yè)所有學(xué)生的學(xué)號、姓名、所選的課程號和成績。

select? *? from? st_func('計算機(jī)')

3、多語句表值函數(shù)的創(chuàng)建與調(diào)用

? ? ? ? 內(nèi)嵌表值函數(shù) 和多語句表值函數(shù)的返回值都是表,其不同之處在于,內(nèi)嵌表值函數(shù)沒有函數(shù)體,返回的表是單個 SELECT語句的結(jié)果集;而多語句表值函數(shù)在?BEGIN ··· END 塊中定義的函數(shù)主體包含 T-SQL 語句,這些語句可生成行,并將行插入至表中,最后返回表。

--??多語句表值函數(shù)的創(chuàng)建語法格式

CREATE? FUNCTIOIN? [ owner_name.?]? ?function_name? ? /*? 函數(shù)名部分? */

? ? ? ? ( [ { @parameter_name? ?[ AS ]? ?parameter_data_type

? ? ? ? ? ? ? ? [ = DEFAULT ]?}? ?[ , ... n ]??] )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? /*? 定義函數(shù)參數(shù)部分? */

RETURNS? ?@return_variable? table? ? ??? /*? 定義作為返回值的表? */

[ AS ]

BEGIN

? ? ? ? function_body? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? /*? 函數(shù)體部分? */

? ? ? ? ? ? ? ? RETURN? ? ??

END

?

--??@return_variable:是一個 TABLE 類型的變量,用于存儲和累積返回的表中的數(shù)據(jù)行。其余參數(shù)與標(biāo)量函數(shù)相同。

--? 示例:創(chuàng)建多語句表值函數(shù),通過學(xué)號作為實參調(diào)用該函數(shù),可顯示該學(xué)生的姓名,以及各門功課的成績和學(xué)分。

create? ?function? ?st_score? (@no? char(20))? ?returns? ?@score? ?table

(

s_no? char(20),

s_name? ?nvarchar(20),

c_name? ?nvarchar(20),

c_score? ?tinyint,

c_credit? ?tinyint

)

as? ?

begin

? ? ? ? insert? ?into? ?@score

? ? ? ? select? s.sno, s.sname, c.cname, sc.score, c.credit

? ? ? ? from? ?student? s,? course? ?c,? sc? ?sc??

? ? ? ? where? ?s.sno = sc.sno? and? sc.cno = c.cno? and? s.sno = @co

? ? ? ? return

end

? ? ? ? 多語句表值函數(shù)的調(diào)用方法與內(nèi)嵌表值函數(shù)的調(diào)用方法相同,只能通過 SELECT 語句調(diào)用。

--? 示例:查詢201602001號學(xué)生的姓名以及各門功課的成績和學(xué)分。

select? *? from? st_score('201602001')

若有不足之處,歡迎大佬斧正。

柚子快報激活碼778899分享:數(shù)據(jù)庫 筆記 SQL中的函數(shù)

http://yzkb.51969.com/

參考閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19299673.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄