【网学网提醒】:网学会员为需要朋友们搜集整理了SQL语句T-SQL的用法和语法相关资料,希望对各位网友有所帮助!
T-SQL的基本语句,大部分人都很熟悉了,今天绿茶小编和大家一起来分享一下SQL语句,T-SQL的用法和语法,以及一些例子,目的是帮助大家一起来复习一下T-SQL的基本语句,以便在项目中更快速的运用,当然对于新手来说就更应该去学习和总结了。我个人感觉数据库这方面对于程序员来说很重要,无论是对于JAVA程序员还是DOTNET程序员以及其他编程人员来说都是必须掌握的。为了帮助大家更好的来回顾T-SQL,绿茶小编利用空闲的时间整理的一下T-SQL的语句和语法。希望对大家有用!
好的!我们先来看几个图像:
棱形
三角形
正方形
圆形
矩形
梯形上面这些图形都是用T-SQL实现的,文章的最后我们一起来用T-SQL画出这些图形。首先,我们开始回顾一下T-SQL的基本语法:函数abs(x):求绝对值;例:selectabs(-3)值为:3
sqrt(x):求平方根;例:selectsqrt(4)值为:2.0
rand([0]):返回0~1之间的随机float值;floor(X):返回小于或等于X值的最大整数;例:selectfloor(34.5)值为:34
ceiling(X):返回大于或等于X值的最小整数;例:selectceiling(34.5)值为:35
round(x,length):四舍五入函数,length为正,则对X小数位数四舍五入,length为负,则对X从小数点左边length位起四舍五入,若length既为负数且其绝对值大于X整数部分数字个数,则函数值为0;例:selectROUND(63.567,1)值为:60.000值为:64.000值为:63.600
selectROUND(63.567,-1)selectROUND(63.567,0)
selectROUND(63.567,-3)值为:0.000
Sign(X):求符号函数,X>0则sign(x)=1;X=0则sign(X)=0;X<0则sign(X)=-1例:selectsign(3)selectsign(0)selectsign(-3)值为:1值为:0值为:-1
Power(X,y):求X的y次方;例:字符串函数ASCII(串):返回字符表达式最左端字符的ASCII码值;例:selectASCII('bc')值为:98selectpower(4,2)值为:16
CHAR(ASCII码):用于将ASCII码转换为字符,如果没有输入0~255之间的ASCII码值,返回值为NULL;例:selectchar(97)值为:a
Lower(串):把字符串全部转换为小写;例:selectlower('QingPingGuo')值为:qingpingguo
Upper(串):把字符串全部转换为大写;例:selectupper('QingPingGuo')值为:QINGPINGGUO
LTrim(串),RTrim(串):去掉左右空格;例(去左空格):select'博客园'+LTrim('青苹果')+'博客园'值为:博客园青苹果博客园space(个数):返回指定个数的空格;replicate(串,次数):将串重复指定次数;例:selectreplicate('青苹果',2)值为:青苹果青苹果
Left(串,个数):返回已知串从左边开始指定个数的字符;
例:selectleft('青苹果在博客园',4)值为:青苹果在
Right(串,个数):返回已知串从右边开始指定个数的字符;例:园DataLength(串):返回串的字节数长度,计算串尾空格。可以用它检查varchar,text等的动态长度;例:selectdatalength('青苹果在博客园')值为:14selectright('青苹果在博客园',4)值为:在博客
SubString(串,开始位置,长度):返回从字符串左边’开始位置’起数量为’长度’的字符串。其中表达式可以是字符串或二进制串或含字段名或字符型变量的表达式。在这里要注意一下SUBSTRING()函数不能用于TEXT和IMAGE数据类型;例:博客selectsubstring('青苹果在博客园',5,2)值为:
Len(串):返回表达式的长度。注意它返回的是字符数,而不是字节数。不计算串尾空格;例:selectlen('青苹果cnblogs')值为:10
Replace('串1','串2','串3'):用串3替换串1中出现的所有串2字符;例:selectreplace('青苹果在北京','北京','博客园')值为:青苹果在博客园Stuff(串1,开始位置,长度,串2):删除串1指定位置开始指定长度的字符串,并在指定位置插入串2;例:selectstuff('青苹果是程序猿吗?',5,3,'攻城狮')值为:青苹果是攻城狮吗?reverse(串):将指定的字符串的字符排列顺序颠倒;例:selectreverse('12345')值为:54321
charindex(串1,串2):返回串1在串2的开始位置,可从所给出的‘开始位置’进行查找;例:转换函数selectcharindex('guo','qingpingguo')值为:9
所谓转换函数就是把某种数据类型转换的表达式显示转换成另一种数据类型的函数。CAST(表达式AS数据类型[(长度)])例:select'今天是:'+Cast(GetDate()aschar(10))今天是:07232012CONVERT(转换后的目标数据类型[(length)],表达式[style])例:select'今天是:'+convert(char(10),getdate())值为:今天是:07232012下面来看一个求差值的函数datediff函数;DATEDIFF(datepart,date1,date2)例:selectdatediff(yy,'1988.09.14','2012.12.21')值为:24值为:
selectdatediff(mm,'1988.09.14','2012.12.21')聚合函数
值为:291
聚合函数也就是统计函数,它主要是对一组值进行计算,它的功能分别是:求和(sum)、求最小(min)、求最大(max)、求总行数(count)、求平均值(avg)例:求和:selectsum(Name)fromTableName
求最小:selectmin(Name)fromTableName求最大:selectmax(Name)fromTableName求总数:selectcount(Name)fromTableName求平均:selectavg(Name)fromTableNameT-SQL的一些关键字Print向客户端返回用户信息例:print'青苹果'屏幕上就会显示“青苹果三个字“
Go用来通知SQL一批语句的结束Distinct去掉重复值
Declare用来声明变量例:declare@aint
Set为变量赋值例:set@a='青苹果'
While在SQL中用来循环(好像在SQL中用来做循环的关键字不多)语法:BEGIN<命令行或程序块>[BREAK][CONTINUE][命令行或程序块]ENDWhil比较重要,我们来做个例子加深一下对While循环的理解:declare@aintset@a=1while@a<5beginprint'青苹果'set@a=@a+1end输出结果:青苹果青苹果青苹果青苹果WHILE<条件表达式>
ifelse判断语句
判断语句用的还是比较多的我们还是来做个例子说明一下;
求:a、b、c三个数的最大值?
declare@aint,@bint,@cint,@maxint
set@a=1set@b=2set@c=3
if@a>@b
set@max=@a
else
set@max=@b
if@max<@c
set@max=@c
print@max
输出结果:3
beginend用来设定一个程序块,将在BEGIN?END内的所有程序视为一个单元执行。
Exists判断是否存在
Case也是用来判断的,和IF语句差不多,它的格式为:
CASE<运算式>
WHEN<运算式1>THEN<结果1>
?
WHEN<运算式n>THEN<结果n>
[ELSE<结果n+1>]
END
Return用于结束当前程序的执行,返回到上一个调用它的程序或其它程序。在括号内可指定一个返回值。
Goto标示符用来改变程序执行的流程,使程序跳到标有标识符的指定的程序行再继续往下执行。要注意的是作为跳转目标的标识符可为数字与字符的组合,但必须以“:”结尾,如:“1023:”“qingpingguo:”
例子:
declare@aint
set@a=1
qingpignguo:
print@a
set@a=@a+1
while@a<6
gotoqingpignguo
输出结果:12345
最后一个给大家看个好玩的:
Waitfor用来暂停程序执行,直到等待指定时间之后,或所设定的时间已到才继续往下运行程序。
语法:解释:
(1)‘时间’必须为DATETIME类型数据,且不能包括日期,如‘10:12:05’
(2)DELAY:用来设定等待的时间长短,最多为24小时。(是一个时间间隔)
(3)TIME:用来设定等待结束的时间点(是一个具体的时间)
例子:
waitfordelay'00:00:03'
print'你好,我是青苹果'
waitfor{delay'时间'|time'时间'}
go以上就是T-SQL的所有内容了。接下来我们来利用最后的时间画几个图形:直角三角形:declare@aintset@a=1while(@a<11)beginprintreplace(space(@a),'','*')set@a=@a+1end直角三角形输出结果:
正方形:declare@aintdeclare@bintdeclare@cnvarchar(100)set@a=1set@b=1
set@c=''while(@a<9)beginwhile(@b<15)beginset@c=@c+'*'set@b=@b+1endprint@cset@a=@a+1end正方形输出结果:
菱形:declare@aint,@bintset@a=1set@b=15if(@b%2!=1)print'数字必须都是奇数'else
while(@a<=@b)
begin
if(@a%2=1)
printspace((@b-@a)/2)+replace(space(@a),'','*')+space((@b-@a)/2)
set@a=@a+1
end
set@a=@a-2
while(@a<=@b)
begin
if(@a%2=1)
printspace((@b-@a)/2)+replace(space(@a),'','*')+space((@b-@a)/2)
set@a=@a-1
if(@a<0)
break
end
菱形输出结果:
梯形:declare@aint,@bintset@a=7set@b=21if(@a%2=1)while(@a<@b)beginprintspace((@b-@a)/2)+replace(space(@a),'','*')+space((@b-@a)/2)set@a=@a+2end梯形输出结果:
矩形:declare@aintdeclare@bintdeclare@cnvarchar(100)set@a=1set@b=1set@c=''while(@a<9)begin
while(@b<23)beginset@c=@c+'*'set@b=@b+1endprint@cset@a=@a+1end矩形输出结果:
圆形:declare@aint,@bintset@a=9set@b=13while(@a<=@b)beginif(@a%2=1)printspace((@b-@a)/2)+replace(space(@a),'','*')+space((@b-@a)/2)set@a=@a+1end
set@a=@a-1
begin
printspace((@b-@a)/2)+replace(space(@a),'','*')+space((@b-@a)/2)
end
while(@a<=@b)
begin
if(@a%2=1)
printspace((@b-@a)/2)+replace(space(@a),'','*')+space((@b-@a)/2)
set@a=@a-1
if(@a<10)
break
end
set@a=@a-2
begin
printspace((@b-@a)/2)+replace(space(@a),'','*')+space((@b-@a)/2)
end
圆形输出结果: