版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第6章章 T-SQL言語概述言語概述主講教師:衛(wèi)琳主講教師:衛(wèi)琳6.1 T-SQL言語概述言語概述6.1.1 T-SQL言語的開展過程和特點言語的開展過程和特點6.1.2 T-SQL言語的分類言語的分類數(shù)據定義言語數(shù)據定義言語(DDL)數(shù)據支配言語數(shù)據支配言語(DML)數(shù)據控制言語數(shù)據控制言語(DCL)語句語句功能功能create創(chuàng)建數(shù)據庫或數(shù)據庫對象創(chuàng)建數(shù)據庫或數(shù)據庫對象alter修改數(shù)據庫或數(shù)據庫對象修改數(shù)據庫或數(shù)據庫對象drop刪除數(shù)據庫或數(shù)據庫對象刪除數(shù)據庫或數(shù)據庫對象語句語句功能功能select從表或視圖中檢索數(shù)據從表或視圖中檢索數(shù)據insert將數(shù)據插入到表或視圖中將數(shù)據插入到表
2、或視圖中update修改表或視圖中的數(shù)據修改表或視圖中的數(shù)據delete從表或視圖中刪除數(shù)據從表或視圖中刪除數(shù)據語句語句功能功能grant授予權限授予權限revoke收回權限收回權限drop禁止從其他角色中繼承許可權限禁止從其他角色中繼承許可權限DDLDMLDCL6.1.3 T-SQL法商定法商定1.注釋注釋“:單行注釋從雙連字符到行尾的內容:單行注釋從雙連字符到行尾的內容/*/:多行注釋對:多行注釋對/*/ 之間一切內容之間一切內容2.系統(tǒng)保管字系統(tǒng)保管字不要運用保管關鍵字作為對象稱號或標識符不要運用保管關鍵字作為對象稱號或標識符/*創(chuàng)建名為創(chuàng)建名為example的數(shù)據庫,并存放在的數(shù)據庫,
3、并存放在“e:sql目錄中目錄中*/CREATE DATABASE exampleON(name=example,-設置數(shù)據庫文件稱號設置數(shù)據庫文件稱號 filename=e:sqlexample.mdf, -設置文件存放位置設置文件存放位置 size=10,-指定文件大小指定文件大小 maxsize=50)-指定文件的最大容量指定文件的最大容量LOG ON-指定日志文件指定日志文件(name=examplog,-指定日志文件稱號指定日志文件稱號 filename=e:sqlexample.ldf, -指定日志文件存放位置指定日志文件存放位置 size=5mb, maxsize=25mb, f
4、ilegrowth=5mb)go6.2 附加的言語元素附加的言語元素6.1.2 標識符標識符1. 標識符格式標識符格式1標識符的首字符必需是以下字符之一標識符的首字符必需是以下字符之一 。一致碼一致碼Unicode2.0規(guī)范中所定義的字母,包規(guī)范中所定義的字母,包括拉丁字母括拉丁字母a-z和和A-Z,以及來自其他言語的字,以及來自其他言語的字符。符。下劃線下劃線“_、符號、符號“或者數(shù)字符號或者數(shù)字符號“#。2標識符的后續(xù)字符可以是以下標識符的后續(xù)字符可以是以下3種。種。 一致碼一致碼Unicode2.0規(guī)范中所定義的字母。規(guī)范中所定義的字母。 來自拉丁字母或其他國家來自拉丁字母或其他國家/地
5、域腳本的十進制數(shù)地域腳本的十進制數(shù)字。字。 “符號、美圓符號符號、美圓符號“$、數(shù)字符號、數(shù)字符號“#或下劃或下劃線線“_。3標識符不允許是標識符不允許是Transact-SQL的保管字。的保管字。4不允許嵌入空格或其他特殊字符。不允許嵌入空格或其他特殊字符。6.1.2 標識符標識符2標識符分類標識符分類SQL Server將標識符分為以下兩種類型:將標識符分為以下兩種類型: 常規(guī)標識符:符合標識符的格式規(guī)那么。常規(guī)標識符:符合標識符的格式規(guī)那么。 分隔標識符:包含在雙引號分隔標識符:包含在雙引號(“)或者方括號或者方括號( )內的標內的標識符。識符。該標識符可以不符合標識符的格式規(guī)那么,如該
6、標識符可以不符合標識符的格式規(guī)那么,如MR GZGLXT、MR和和GZGLXT之間含有空格,但由于運用了之間含有空格,但由于運用了方括號,所以視為分隔標識符。方括號,所以視為分隔標識符。留意:常規(guī)標識符和分隔標識符包含的字符數(shù)必需留意:常規(guī)標識符和分隔標識符包含的字符數(shù)必需在在1128之間,對于本地暫時表,標識符最多可以有之間,對于本地暫時表,標識符最多可以有116個字符。個字符。 6.2.2 常量常量(1)字符型常量字符型常量ASCII字符串常量:用單引號括起來,由字符串常量:用單引號括起來,由ASCII字符字符組成。組成。 假設在字符常量中曾經包含了一個單引號,那么假設在字符常量中曾經包含
7、了一個單引號,那么可以運用兩個單引號表示這個帶單引號的字符??梢赃\用兩個單引號表示這個帶單引號的字符。 Unicode字符串常量的格式與字符串常量的格式與ASCII字符串常量類似,字符串常量類似,但它前面有一個前綴但它前面有一個前綴N,而且,而且N前綴必需是大寫的。前綴必需是大寫的。 如:如:NSQL Server、N張三張三、N計算機科學計算機科學與技術與技術。6.2.2 常量常量(2) 數(shù)值型常量數(shù)值型常量數(shù)值型常量包含整型常量和實數(shù)型常量。數(shù)值型常量包含整型常量和實數(shù)型常量。整型常量整型常量(Integer)用來表示整數(shù)。可細分為二進用來表示整數(shù)??杉毞譃槎M制整型常量、十六進制整型常量
8、和十進制整型常制整型常量、十六進制整型常量和十進制整型常量。二進制整型常量以數(shù)字量。二進制整型常量以數(shù)字0或或1表示;十六進表示;十六進制整型常量由前綴制整型常量由前綴0 x后跟十六進制數(shù)組成;十后跟十六進制數(shù)組成;十進制整型常量即不帶小數(shù)點的十進制數(shù);進制整型常量即不帶小數(shù)點的十進制數(shù);實數(shù)型常量用來表示帶小數(shù)部分的數(shù),有定點數(shù)實數(shù)型常量用來表示帶小數(shù)部分的數(shù),有定點數(shù)和浮點數(shù)兩種表示方式,其中浮點數(shù)運用科學記和浮點數(shù)兩種表示方式,其中浮點數(shù)運用科學記數(shù)法來表示。如:數(shù)法來表示。如:0.3E-5。(3) 日期時間型常量日期時間型常量(datetime)日期時間型常量運用特定格式的字符日期值來
9、表示,日期時間型常量運用特定格式的字符日期值來表示,并且用單引號括起來。如并且用單引號括起來。如2021年年4月月1日可以用以下日可以用以下方式表示:方式表示:April 1,2021、04/01/2021或或20210401。(4) 貨幣型常量貨幣型常量(money)貨幣型常量以前綴貨幣型常量以前綴“$作為標識。如作為標識。如$123.45。6.2.2 變量變量1變量稱號變量稱號在在SQL Server 2019系統(tǒng)中,變量的命名規(guī)那么如下:系統(tǒng)中,變量的命名規(guī)那么如下:第一個字符必需是字母、數(shù)字、下畫線或符號。需求留意的第一個字符必需是字母、數(shù)字、下畫線或符號。需求留意的是,符號是,符號“
10、開頭的變量表示部分變量、符號開頭的變量表示部分變量、符號“開頭的變量開頭的變量表示全局變量。表示全局變量。變量名不能是變量名不能是T-SQL言語的系統(tǒng)保管字言語的系統(tǒng)保管字(如如IF、ELSE、CONTINUE等等),包括大寫和小寫方式。,包括大寫和小寫方式。變量名中不允許出現(xiàn)空格或其他特殊字符。變量名中不允許出現(xiàn)空格或其他特殊字符。根據以上規(guī)那么,以下變量名都是合法的:根據以上規(guī)那么,以下變量名都是合法的:a2、abc、student_3和和average。變量在運用中需求先聲明再運用,聲明變量用變量在運用中需求先聲明再運用,聲明變量用DECLARE語語句,其語法格式如下:句,其語法格式如下
11、:DECLARE 變量稱號變量稱號 變量的數(shù)據類型變量的數(shù)據類型 ,n闡明:闡明:為表示部分變量,變量稱號的第一個字符必需是為表示部分變量,變量稱號的第一個字符必需是一切變量在聲明后均設置初值為一切變量在聲明后均設置初值為NULL6.2.2 變量變量2變量賦值變量賦值有兩種為變量賦值的方式:運用有兩種為變量賦值的方式:運用SET語句直接為變量賦值和語句直接為變量賦值和運用運用SELECT語句選擇表中的值來為變量賦值。語句選擇表中的值來為變量賦值。語法格式如下:語法格式如下:格式格式1:運用:運用SET語句賦值語句賦值SET 變量稱號變量稱號=表達式表達式格式格式2:運用:運用SELECT語句賦
12、值語句賦值SELECT 變量稱號變量稱號=表達式表達式 ,n闡明:闡明:表達式可以是任何有效的表達式可以是任何有效的SQL表達式;表達式;一個一個SELECT語句可以給多個變量賦值,而一個語句可以給多個變量賦值,而一個SET語句一次語句一次只能給一個變量賦值。只能給一個變量賦值。例:用賦值語句分別定義兩個整型變量x和y。使x的值為20,y的值為5,計算并顯示x,y,3x +4y,xy,和x /y的值。declare x int,y intset x=20set y=5select x,y,3*x+4*y,x*y,x/y例:創(chuàng)建兩個部分變量,并賦值,然后輸出變量的值。declare var1 c
13、har(4),var2 char(20)set var1=中國set var2=var1+是一個偉大的國家select var1,var2go例如:創(chuàng)建一個名為例如:創(chuàng)建一個名為sex的部分變量,并在的部分變量,并在select語句中語句中運用該部分變量查找表運用該部分變量查找表student中一切女同窗的信息。中一切女同窗的信息。use xscj2019declare xb char(2)set xb=女女select * from studentwhere ssex=xb例:運用查詢給變量賦值。例:運用查詢給變量賦值。use XSCJ2019godeclare xm varchar(8)s
14、et xm =(select sname from student where sno=2019056103)select xmGouse XSCJ2019godeclare xm varchar(8)select xm =sname from studentselect xmGo闡明:假設前往多個值,將前往的最后一個值賦給變量闡明:假設前往多個值,將前往的最后一個值賦給變量例:use XSCJ2019godeclare xm varchar(8)select xm=劉豐select xm=sname from studentwhere sno=123456789select xm as na
15、mego闡明:假設闡明:假設select語句沒有前往行,變量將保管當前值語句沒有前往行,變量將保管當前值6.3 運算符和表達式運算符和表達式SQL Server 2019提供以下幾類運算符:算術運算符、關系運算符、邏輯運算符、字符運算符和位運算符。6.3.1 算術運算符算術運算符算術運算符對兩個表達式執(zhí)行數(shù)學運算。算術運算符對兩個表達式執(zhí)行數(shù)學運算。算術運算符算術運算符說說 明明+加法運算加法運算-減法運算減法運算*乘法運算乘法運算/除法運算,如果兩個表達式都是整數(shù),則結果是整數(shù),小數(shù)除法運算,如果兩個表達式都是整數(shù),則結果是整數(shù),小數(shù)部分被截斷部分被截斷%(求模求模)求模求模(求余求余)運算
16、,返回兩數(shù)相除后的余數(shù)運算,返回兩數(shù)相除后的余數(shù)算術運算符算術運算符例【6-3】:計算6/5、6.0/5.0、5/6、5.0/6.0與6%5的值。select 6/5,6.0/5.0,0,5.0/6.0,6%5select 14/5,6.0/5.0,0,5.0/6.0,6%5select 6.0/5,6.0/5.0,0,5.0/6.0,6%5經過執(zhí)行語句我們留意到:6/5的結果為1,而6.0/5.0的結果為1.200000,兩者運算結果并不一樣。緣由在于當兩個具有一樣數(shù)據類型的數(shù)進展算術運算時,運算結果依然是當前的數(shù)據類型。但是,當兩個不同數(shù)據類型的數(shù)進展算術運算時,數(shù)據類型優(yōu)先級規(guī)那么指定將
17、優(yōu)先級較低的數(shù)據類型轉換為優(yōu)先級較高的數(shù)據類型。這樣可以在最大程度上維護運算結果的正確性和合理性。同樣,5/6與5.0/6.0的運算結果也不一樣。6.3.2 關系運算符關系運算符關系運算符說 明實 例=相等姓名=”王華”大于成績85小于年齡=大于等于成績=60=小于等于工資=2000、!=不等于所屬院系英語系!不小于學分!不大于成績!=100闡明:闡明:兩個數(shù)值型數(shù)據比較時,按照值的大小直接比較;兩個數(shù)值型數(shù)據比較時,按照值的大小直接比較;兩個日期時間型數(shù)據比較時,按照年、月、日的先后順序比較;兩個日期時間型數(shù)據比較時,按照年、月、日的先后順序比較;兩個字符型數(shù)據比較時,英文字母按照兩個字符型
18、數(shù)據比較時,英文字母按照ASCII碼值大小比較,漢字按照拼音先后順碼值大小比較,漢字按照拼音先后順序比較。序比較。use XSCJgodeclare student char(6)set student=001111if(student0)select * from xs where 學號=student6.3.3 邏輯運算符邏輯運算符運 算 符運 算 規(guī) 則AND與運算,兩個操作數(shù)均為TRUE時,結果才為TRUEOR或運算,若兩個操作數(shù)中任何一個為TRUE,則結果為TRUENOT非運算,單目運算,結果值取反ALL每個操作數(shù)值都為TRUE時,結果為TRUEANY多個操作數(shù)中只要有一個為TRUE
19、,結果為TRUEBETWEEN若操作數(shù)在指定的范圍內,則運算結果為TRUEEXISTS若子查詢包含一些行,則運算結果為TRUEIN若操作數(shù)值等于表達式列表中的一個,則結果為TRUELIKE若操作數(shù)與某種模式相匹配,則結果為TRUESOME若在一系列操作數(shù)中,有些值為TRUE,則結果為TRUE例:查詢成果高于李明最高成果的學生姓名、課程名和成果select sname,cname,gradefrom student join sc join courseon courseo=scoon student.sno=sc.snoand gradeall(select grade from studen
20、t join sc join course on courseo=sco on student.sno=sc.sno and sname=李明 ) 1)any,all例:查詢成果高于李明最低成果的學生姓名、課程名和成果select sname,cname,gradefrom student join sc join courseon courseo=scoon student.sno=sc.snoand gradeany(select grade from student join sc join course on courseo=sco on student.sno=sc.sno and
21、sname=李明 ) 2.Between例:查詢例:查詢91及及92年出生的學生信息年出生的學生信息select * from studentwhere sbirth between 1991-1-1 and 1992-12-31例:查詢不是例:查詢不是91、92年出生的學生信息年出生的學生信息select * from studentwhere sbirth not between 1991-1-1 and 1992-12-31查詢姓王或姓劉的學生信息select * from studentwhere sname like 王劉%查詢不姓王也不姓劉的學生信息select * from st
22、udentwhere sname like 王劉%通配符通配符說明說明%代表代表0個或多個字符個或多個字符_代表單個字符代表單個字符 指定范圍(如:指定范圍(如:a-f、0-9或集合或集合abcdef中的任何單個字符中的任何單個字符指定不屬于范圍(如:指定不屬于范圍(如:a-f、0-9或集合或集合abcdef中的任何中的任何單個字符單個字符3.Like查詢一切選課的學生信息查詢一切選課的學生信息select * from studentwhere exists(select * from sc where sno=student.sno)查詢沒有選課的學生信息查詢沒有選課的學生信息select
23、 * from studentwhere not exists(select * from sc where sno=student.sno)4. exists6.3.4 字符運算符字符運算符 字符運算符只需一個“+,又稱為字符串串聯(lián)運算符。字符串之間經過“+實現(xiàn)字符串的銜接。select 8899+7788select 8899+7788select 8899+7788闡明:當數(shù)據類型不一樣闡明:當數(shù)據類型不一樣時,轉換成優(yōu)先級別高的。時,轉換成優(yōu)先級別高的。6.3.5 位運算符位運算符 位運算符在兩個表達式之間實現(xiàn)按位操作,這兩個表達式應該為整型數(shù)據類型或與整型兼容的數(shù)據類型如字符型等,但
24、不能是image類型)運 算 符運 算 法 則&(位與運算)兩個參與運算的位值均為1時,結果位為1,否則為0|(位或運算)兩個參與運算的位中只要有一位值為1,結果就為1,否則為0(位異或運算)兩個參與運算的位中只有一個的值為1時(不可以兩個值都為1),結果為1;只有當兩個參與運算的位值都為0或都為1時,結果才為06.3.5 位運算符位運算符例如:例如:select 128&129,128|129,128129運 算 符運 算 法 則&(位與運算)兩個參與運算的位值均為1時,結果位為1,否則為0|(位或運算)兩個參與運算的位中只要有一位值為1,結果就為1,否則為0(位異或
25、運算)兩個參與運算的位中只有一個的值為1時(不可以兩個值都為1),結果為1;只有當兩個參與運算的位值都為0或都為1時,結果才為0128:129:1000 00001000 0001或或|1000 0001128:129:1000 00001000 0001與與&|1000 0000128:129:1000 00001000 0001異或異或0000 0001優(yōu) 先 級運 算 符1一目運算:+(正)、-(負)、(按位取反)2*(乘)、/(除)、%(取模)3+(加)、+(字符串連接)、-(減)4=、=、=、!=、!、!yprint x大于大于yelseprint x小于或等于小于或等于y6
26、.4 流程控制語句流程控制語句6.4.2 IF ELSE語句語句IF 條件表達式條件表達式語句體語句體1ELSE語句體語句體2例:輸入一個坐標值,判別其在哪一個象例:輸入一個坐標值,判別其在哪一個象限限declare x int,y intset x=8set y=-3if x0if y0print xy位于第一象限位于第一象限elseprint xy位于第四象限位于第四象限elseif y0print xy位于第二象限位于第二象限elseprint xy位于第三象限位于第三象限IF.ELSE語句語句例【例【6-6】:設定變量】:設定變量score,根據,根據score的值的值判別成果能否合格
27、,并輸出結論。判別成果能否合格,并輸出結論。declare score int,a nchar(10)set score=55if score=60set a=N成果合格成果合格elseset a=N成果不合格成果不合格select a1.簡單簡單case語句語句計算計算 input_expression,然后按指定順序對每個,然后按指定順序對每個when子子句的句的input_expressionwhen_expression進展計算。進展計算。前往第一個取值為前往第一個取值為true的的input_expression= when_expression的的result_expression
28、.假設沒有取值為假設沒有取值為true的的input_expression= when_expression,那么當指定,那么當指定else子句時,子句時,sql server將前往將前往else_result_expression;假設沒有指定;假設沒有指定else子句子句時,那么前往時,那么前往null值。值。2.Case 搜索語句搜索語句按指定順序為每個按指定順序為每個when子句的子句的Boolean_expression求值。求值。前往第一個取值為前往第一個取值為true的的Boolean_expression的的result_expression。假設沒有取值為假設沒有取值為tru
29、e的的Boolean_expression,那么當指定,那么當指定else子句時,子句時,sql server將前往將前往else_result_expression;假設沒有指定假設沒有指定else子句時,那么前往子句時,那么前往null值。值。6.4.3 case 語句語句-簡單Case語句 CASE sex WHEN 1 THEN 男 WHEN 2 THEN 女 ELSE 其他 END -Case搜索語句 CASE WHEN sex = 1 THEN 男 WHEN sex = 2 THEN 女 ELSE 其他 END 簡單Case語句只前往第一個符合條件的值,剩下的Case部分將會被自動
30、忽略。 -比如說,下面這段SQL,他永遠無法得到“第二類這個結果 CASE WHEN col_1 IN ( a, b) THEN 第一類 WHEN col_1 IN (a) THEN 第二類 ELSE其他 END select sno,cno,grade,case when grade=90 then 優(yōu)秀優(yōu)秀when grade=80 then 良好良好when grade=70 then 中等中等when grade=60 then 及格及格when grade60 then 不及格不及格end as 成果等級成果等級from sc1.簡單簡單Case 語句語句6.4.3 case 語句語
31、句2.Case 搜索語句搜索語句例例6-7:create table temp(score int not null)insert into temp values(60)insert into temp values(30)insert into temp values(90)insert into temp values(106)insert into temp values(87)select score,等級等級=case when score=60 and score=80 and score=90 and score=0 and 成果成果=60 and 成果成果=70 and 成果
32、成果=80 and 成果成果=90 and 成果成果=100 then 優(yōu)秀優(yōu)秀endfrom scgoselect * from v6.4.4 goto語句語句無條件轉移語句,運用無條件轉移語句,運用goto語句可以將執(zhí)行語句可以將執(zhí)行流程轉移到標簽指定的位置。為了與前面的版本兼流程轉移到標簽指定的位置。為了與前面的版本兼容,容,SQL SERVER 2019 支持支持goto語句,但由于該語句,但由于該語句破壞了語句的構造,容易引發(fā)不易發(fā)現(xiàn)的問題,語句破壞了語句的構造,容易引發(fā)不易發(fā)現(xiàn)的問題,所以應該盡量減少或防止運用。所以應該盡量減少或防止運用。declare x intset x=1l
33、oving:print xselect x=x+1while x=3goto loving闡明:標號是GOTO目的,它不僅僅標識了跳轉目的,標號不隔離其前后語句。執(zhí)行標號前面語句的用戶跳過標號并執(zhí)行標號后的語句。除非標號前面的語句本身是控制流語句return,這種情況才發(fā)生。declare pjf floatif (select COUNT(*)from scwhere sno=2019056101)=0goto labelelsebeginselect pjf=AVG(grade)from scwhere sno=2019056101print pjfendlabel:print 無學生或此
34、學生沒有選課!例如:輸出2019056101號學生平均成果,假設此學生沒有選課,那么顯示相應提示信息,用goto完成。闡明:標號是GOTO目的,它不僅僅標識了跳轉目的,標號不隔離其前后語句。執(zhí)行標號前面語句的用戶跳過標號并執(zhí)行標號后的語句。除非標號前面的語句本身是控制流語句return,這種情況才發(fā)生。6.4.5 whilebreak和和continue 語句語句1.while 語句語句declare s int,num intselect s=0,num=1while num=100beginset s=s+numset num=num+1endprint 1+2+3+.+100=+conv
35、ert(char,s)godeclare x intset x=1while x=3beginprint xselect x=x+1end6.4.5 whilebreak和和continue 語句語句2.break 語句語句 break 語句普通用在語句普通用在while循環(huán)或循環(huán)或if .else語句中,語句中,用于退出本層循環(huán)。用于退出本層循環(huán)。例:求例:求1100之間的累加和,當和超越之間的累加和,當和超越1000時停頓累加,顯示累加和以及累時停頓累加,顯示累加和以及累加到的位置。加到的位置。declare i int,s intset i=1set s=0while i=1000bre
36、akset i=i+1endselect s as s,i as i6.4.5 whilebreak和和continue 語句語句3.continue 語句語句continue 命令可以讓程序跳過命令可以讓程序跳過continue命令之后命令之后的語句,回到的語句,回到while循環(huán)的第一行命令。循環(huán)的第一行命令。Break那么那么讓程序完全跳出循環(huán),終了讓程序完全跳出循環(huán),終了while命令的執(zhí)行。命令的執(zhí)行。例:求例:求110之間的偶數(shù)和,并用之間的偶數(shù)和,并用continue控制語句的輸出??刂普Z句的輸出。declare x int,sum intset x=1set sum=0whil
37、e x0print 遇到return之前returnprint 遇到return之后SQL SERVER2019新增功能新增功能 try.catch語句語句Bgein try語句語句塊語句語句塊End tryBegin catch語句語句塊語句語句塊End catch 類似類似C+的異常處置,當執(zhí)行的異常處置,當執(zhí)行try語句塊中的代碼出語句塊中的代碼出現(xiàn)錯誤時,系統(tǒng)將把控制傳送到現(xiàn)錯誤時,系統(tǒng)將把控制傳送到catch語句塊進展處置。語句塊進展處置。begin trycreate database testend trybegin catchprint test數(shù)據庫已存在drop datab
38、ase testprint 原有的test數(shù)據庫已刪除create database testprint test數(shù)據庫再次勝利創(chuàng)建end catch6.5 函數(shù)函數(shù)6.5.1 數(shù)學函數(shù)數(shù)學函數(shù)數(shù)數(shù) 學學 函函 數(shù)數(shù)功功 能能ABS(數(shù)值表達式數(shù)值表達式)絕對值函數(shù),返回數(shù)值表達式的絕對值絕對值函數(shù),返回數(shù)值表達式的絕對值ACOS(實型表達式實型表達式)反余弦函數(shù),返回一個余弦值對應的角度。角度以弧度表示,反余弦函數(shù),返回一個余弦值對應的角度。角度以弧度表示,實型表達式取值范圍從實型表達式取值范圍從-11,若參數(shù)超過此范圍,函數(shù)返回,若參數(shù)超過此范圍,函數(shù)返回NULL并報告錯誤并報告錯誤COS
39、(數(shù)值表達式數(shù)值表達式)正弦函數(shù),返回表達式中以弧度表示的指定角的余弦值正弦函數(shù),返回表達式中以弧度表示的指定角的余弦值EXP(數(shù)值表達式數(shù)值表達式)指數(shù)函數(shù),返回表達式的指數(shù)值指數(shù)函數(shù),返回表達式的指數(shù)值LOG(數(shù)值表達式數(shù)值表達式)自然對數(shù)函數(shù),返回表達式的自然對數(shù)值自然對數(shù)函數(shù),返回表達式的自然對數(shù)值PI()圓周率函數(shù),返回圓周率函數(shù),返回14位小數(shù)的圓周率常量值位小數(shù)的圓周率常量值RAND()隨機函數(shù),隨機返回隨機函數(shù),隨機返回01之間的之間的float數(shù)值數(shù)值SIGN(數(shù)值表達式數(shù)值表達式)符號函數(shù),返回表達式的正號、零或負號符號函數(shù),返回表達式的正號、零或負號SIN(數(shù)值表達式數(shù)值
40、表達式)正弦函數(shù),返回表達式中以弧度表示的指定角的正弦值正弦函數(shù),返回表達式中以弧度表示的指定角的正弦值SQRT(數(shù)值表達式數(shù)值表達式)平方根函數(shù),返回表達式的平方根平方根函數(shù),返回表達式的平方根TAN(數(shù)值表達式數(shù)值表達式)正切函數(shù),返回指定表達式中以弧度表示的指定角的正切值正切函數(shù),返回指定表達式中以弧度表示的指定角的正切值例【6-8】:運用常用數(shù)學函數(shù)計算-1的絕對值,e的10次方,5的自然對數(shù),半徑為3的圓的面積和49的平方根。SELECT N-1絕對值=ABS(-1),Ne的10次方=EXP(10),N5的自然對數(shù)=LOG(5),N半徑為3的圓的面積=PI()*3*3,N49的平方根
41、=SQRT(49)6.5.2 字符串函數(shù)字符串函數(shù)字符串函數(shù)字符串函數(shù)功功 能能ASCII(字符表達式字符表達式)ASCII函數(shù),返回字符串表達式中最左端字符的函數(shù),返回字符串表達式中最左端字符的ASCII碼值碼值CHAR(整型表達式整型表達式)ASCII碼轉換函數(shù),參數(shù)為介于碼轉換函數(shù),參數(shù)為介于0255之間的整數(shù),返回整數(shù)之間的整數(shù),返回整數(shù)的的ASCII碼碼LEFT(字符表達式,字符表達式,n)左子串函數(shù),返回從字符串左邊開始的左子串函數(shù),返回從字符串左邊開始的n個字符個字符LEN(字符表達式字符表達式)字符串長度函數(shù),返回字符串表達式中字符的個數(shù)字符串長度函數(shù),返回字符串表達式中字符的
42、個數(shù)LOWER(字符表達式字符表達式)小寫字母函數(shù),將大寫字母轉換為小寫字母,返回表達式的小寫字母函數(shù),將大寫字母轉換為小寫字母,返回表達式的小寫字母表示小寫字母表示LTRIM(字符表達式字符表達式)刪除前導空格函數(shù),返回刪除了前導空格的字符表達式刪除前導空格函數(shù),返回刪除了前導空格的字符表達式REPLACE(字符表達式字符表達式1,字符表達式字符表達式2,字符表達,字符表達式式3)字符替換函數(shù),用第三個表達式替換第一個字符串表達式中字符替換函數(shù),用第三個表達式替換第一個字符串表達式中包含的所有第二個字符表達式,并返回替換后的表達式包含的所有第二個字符表達式,并返回替換后的表達式RIGHT(字
43、符表達式,字符表達式,n)右子串函數(shù),返回從字符串右邊開始的右子串函數(shù),返回從字符串右邊開始的n個字符個字符RTRIM(字符表達式字符表達式)刪除尾隨空格函數(shù),返回刪除所有尾隨空格的字符表達式刪除尾隨空格函數(shù),返回刪除所有尾隨空格的字符表達式STR(數(shù)值表達式數(shù)值表達式 ,長,長度度n ,小數(shù)位,小數(shù)位)數(shù)字向字符轉換函數(shù),返回由數(shù)字轉換過來的字符串,長度數(shù)字向字符轉換函數(shù),返回由數(shù)字轉換過來的字符串,長度用于指定總長度,包括小數(shù)點,小數(shù)位指小數(shù)點右邊的位數(shù)用于指定總長度,包括小數(shù)點,小數(shù)位指小數(shù)點右邊的位數(shù)UPPER(字符表達式字符表達式)大寫字母函數(shù),返回指定表達式的大寫字母表示大寫字母函
44、數(shù),返回指定表達式的大寫字母表示例【6-9】:運用常用字符串函數(shù)計算A的ASCII碼,SQL Server的前3個字符,數(shù)據庫原理字符串的長度,將China轉換為大寫字母,將英語四級改為英語六級。T-SQL語句如下:SELECT NA的ASCII=ASCII(A), NSQL Server的前3個字符=LEFT(SQL Server,3), N數(shù)據庫原理的長度=LEN(N數(shù)據庫原理), N將China轉換為大寫字母=UPPER(China), N將英語四級改為英語六級=REPLACE(N英語四級,N四,N六)declare s varchar(50)set s=北京,歡迎您!select ri
45、ght(s,4)+left(s,2)將將北京北京,歡迎您歡迎您!變成變成歡迎您歡迎您! 北京北京select ASCII(loving) /*前往最左端字符的前往最左端字符的ascii碼值碼值Len用于前往指定字符串的字符而不是字節(jié)個數(shù)。select LEN(loving)select len(2019.10.01)select LEN (李小蔥生日高興!)declare s varchar(50)set s=2019年月歡慶北京申奧勝利年月歡慶北京申奧勝利-變成變成北京年月申奧勝利北京年月申奧勝利select substring(s,11,2)+LEFT(s,8)+RIGHT(s,4)sel
46、ect replicate(loving,3)select REPLACE(SQL SERVER,ER,loving)Replace函數(shù)將字符串中的子字符串交換為指定字符串函數(shù)將字符串中的子字符串交換為指定字符串Replicate函數(shù)用于指定的次數(shù)反復字符串表達式函數(shù)用于指定的次數(shù)反復字符串表達式select ASCII(loving)ascii函數(shù)前往最左端字符的函數(shù)前往最左端字符的ascii代碼值。代碼值。純數(shù)字的字符串可以不用單引號,而其他字符表達式必需純數(shù)字的字符串可以不用單引號,而其他字符表達式必需用用,否那么出錯。否那么出錯。子串交換函數(shù)子串交換函數(shù)格式:格式:STUFF字符表達式
47、字符表達式1,起始位置,長度,字,起始位置,長度,字符表達式符表達式2功能:用功能:用“字符表達式字符表達式2的值交換的值交換“字符表達式字符表達式1中中由由“起始位置和起始位置和“長度指明的一個子串。長度指明的一個子串。select STUFF(計算機等級考試計算機等級考試,4,2,專業(yè)專業(yè))select STUFF(計算機等級考試計算機等級考試,6,0,二級二級)select charindex(l,I like football) 搜索的起始位置是1select charindex(l,I like football,4) 搜索的起始位置是4select charindex(l,I li
48、ke football,15) 搜索的起始位置是15Charindex函數(shù)前往字符串指定表達式的起始位置。函數(shù)前往字符串指定表達式的起始位置。6.5.3 日期和時間函數(shù)日期和時間函數(shù)日期和時間函數(shù)日期和時間函數(shù)描描 述述DAY(日期時間型數(shù)據日期時間型數(shù)據)返回指定日期的返回指定日期的“天天”部分的整數(shù)部分的整數(shù)GETDATE(日期時間型日期時間型數(shù)據數(shù)據)以標準格式返回本地服務器的以標準格式返回本地服務器的DATETIME值值DATEADD(時間間隔,時間間隔,數(shù)值表達式,日期數(shù)值表達式,日期)為為DATETIME值添加間隔。時間間隔項決定時間間隔值添加間隔。時間間隔項決定時間間隔的單位,可
49、取的單位,可取Year、Day of year(一年的日數(shù)一年的日數(shù))、Quarter、Month、Day、Week、Weekday(一周的日一周的日數(shù)數(shù))、Hour、Minute、Second、Millisecond。數(shù)值表。數(shù)值表達式為加上或者減去的時間間隔達式為加上或者減去的時間間隔DATEDIFF(時間間隔,時間間隔,日期日期1,日期,日期2)計算兩個計算兩個DATETIME值之間指定的日期部分的差,返值之間指定的日期部分的差,返回數(shù)值型數(shù)據。時間間隔項決定時間間隔的單位,取回數(shù)值型數(shù)據。時間間隔項決定時間間隔的單位,取值與值與DATEADD中的時間間隔項相同中的時間間隔項相同MONTH(日期時間型數(shù)日期時間型數(shù)據據)返回指定日期的返回指定日期的“月月”部分的整數(shù)部分的整數(shù)YEAR(日期時間型數(shù)據日期時間型數(shù)據)返回指定日期的返回指定日期的“年年”部分的整數(shù)部分的整數(shù)ConvertCONVERT() 函數(shù)是把日期轉換為新數(shù)據類型的通用函數(shù)。CONVERT() 函數(shù)可以用不同的格式顯示日期/時間數(shù)據。例如:convert(char(4),year(date1)例【6-10】:運用日期和時間函數(shù)顯示當前日期,在當前日期后10天的日期,當前日期與2019年1月1日相隔的天數(shù)。T-SQL語句如下:SELECT N顯示當前系統(tǒng)日期=GETDATE(),N在當前日期后10天的日期=D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能倉儲廠房出租居間合同范本3篇
- 二零二五年度車房租賃與停車大數(shù)據分析合同2篇
- 專業(yè)跑鞋定制采購合同(2024版)版B版
- 中英對照商品購銷協(xié)議范本(2024年版)版
- 2025年度綠色節(jié)能型廠房裝修合同范本4篇
- 專屬藥物開發(fā):2024年度定制化服務協(xié)議版B版
- 二零二五年度餐飲企業(yè)食品安全教育與培訓合同6篇
- 2024私人租賃汽車租賃合同范本(含跨境服務)3篇
- 2025年拆除工程勞務服務合同范本(含工期保障)4篇
- 2025便鄰士便利店供應鏈合作框架協(xié)議范本3篇
- 英語名著閱讀老人與海教學課件(the-old-man-and-the-sea-)
- 學校食品安全知識培訓課件
- 全國醫(yī)學博士英語統(tǒng)一考試詞匯表(10000詞全) - 打印版
- 最新《會計職業(yè)道德》課件
- DB64∕T 1776-2021 水土保持生態(tài)監(jiān)測站點建設與監(jiān)測技術規(guī)范
- ?中醫(yī)院醫(yī)院等級復評實施方案
- 數(shù)學-九宮數(shù)獨100題(附答案)
- 理正深基坑之鋼板樁受力計算
- 學校年級組管理經驗
- 10KV高壓環(huán)網柜(交接)試驗
- 未來水電工程建設抽水蓄能電站BIM項目解決方案
評論
0/150
提交評論