4.3数据类型
整数:
bigint (-2^63 ~ 2^63-1) 8个字节
int (-2^32 ~ 2^32-1) 4个字节
smallint (-2^15 ~ 2^15-1) 2个字节
tinyint (0 ~ 255)
浮点数据类型:
real 精确7位小数 4个字节
float 精确15位小数 8个字节
decimal (-10^38 ~ 10^37) 2-17个字节
numreic (-10^38 ~ 10^37) 2-17个字节
4.4 二进制数据类型
binary binary(n) n:数据的长度1~8000
vartinary vartinary(n) n:数据长度 Ox
uniqueidentifier uniqueidentifier()
二进制大型对象(binary large object)
逻辑数据类型:1个字节,输入其他数据类型默认为1
文本数据类型:
text 1 ~2^31-1
ntext 1 ~2^30-1
图形数据类型:image 1 ~2^31 Ox
4.5字符数据类型
char char(n)1~ 8000
nchar nchar(n)1~ 4000
varchar varchar(n)可变长度
nvarchar nvarchar(n)1~ 4000
datetime 8个字节,前4个字节储存日期,后4个字节存储时间;公约1793.1.1 0时0分0秒 -9999.12.31 23时59分59秒
smalldatetime 4个字节;时间范围1900.1.1-2079.6.6
货币型:
money -2^36 ~2^36-1 8个字节
smallmoney -2^31~ 2^31-1 4个字节
sysname nvarchar(128)
可变数据类型和表数据类型:
sql-variant 储存任何合法数据
table 查询后的结果
4.6变量
declare@test_Var int
set@test_Var=1000
select@test_Var
/*申明局部变量,定义数据类型为int
给变量赋值为1000的整数(给变量赋值可用:set、select)
查询变量中的值*/
4.7局部变量
局部变量以@开头
declare 申明
set 单一一个变量赋值
select 同时为多个变量赋值
print 单独输出一个
select 同时输出多个
declare@test_Var int,@test_Var2char(60)
select@test_Var=1000,@test_Var2='我是一个中国人'
print@test_Var
print@test_Var2
输出结果:
declare@test_Var int,@test_Var2char(60)
select@test_Var=1000,@test_Var2='我是一个中国人'
select@test_Var,@test_Var2
输出结果:
4.8全局变量
两个@@作为前缀
4.9
--这是一个Begin...end程序块
Begin
declare@test_Var int,@test_Stringvarchar(60)
select@test_Var=2000,@test_String='大家好,我是张奎勋'
if@test_Var=2000
print@test_String
end
/**
开始
申明两个变量@test_Var和@test_String,分别定义为int类型和varchar类型
开始赋值
如果test_Var变量的值等于2000
输出test_String
*/
--这是一个Begin...end程序块
Begin
declare@test_Var int,@test_String1varchar(30),@test_String2varchar(30)
select@test_Var=100,@test_String1='录取',@test_String2='未录取'
if@test_Var=100
print@test_String1
else
print@test_String2
end
Begin
declare@test_Var1 int,@test_Stringvarchar(60)
select@test_Var1=2000,@test_String='大家好,我是张奎勋'
if@test_Var1=2000
print@test_String
end
4.11
Begin
declare@test_Var int,@test_String1varchar(30),@test_String2varchar(30)
select@test_Var=100,@test_String1='录取',@test_String2='未录取'
if@test_Var=100
print@test_String1
else
print@test_String2
end
4.12
--这是一个Begin...end程序块
Begin
declare@test_Var int,@test_String1varchar(30),@test_String2varchar(30),@test_String3varchar(30),@test_String4varchar(30)
select@test_Var=90,@test_String1='优秀',@test_String2='良好',@test_String3='及格',@test_String4='差'
if@test_Var>=90and@test_Var<=100
print@test_String1
else if @test_Var>=80and @test_Var<90
print@test_String2
else if @test_Var>=60and @test_Var<80
print@test_String3
else if @test_Var<60
print@test_String4
end
4.14
--case 根据不同的条件给@test_String赋不同的值
Begin
declare@test_Var int,@test_Stringvarchar(30)
set@test_Var=100
set@test_String=
case
when@test_Var>=90and@test_Var<=100then'优秀'
when@test_Var>=80and@test_Var<90then'良好'
when@test_Var>=60and@test_Var<80then'及格'
else '不及格'
end
select '学院成绩为: '+@test_String
end
4.17
--while 循环,只要while后面的条件满足,就一直循环begin...end里面的代码,直到while后面条件不满足,然后输出语句
declare @test_Varint,@Sumint
select@test_Var=0,@Sum=0
while@test_Var<=200
begin
set @Sum= @Sum+@test_Var
set@test_Var = @test_Var +1
end
select '200以内所有整数之和为:',@Sum
4.18 break
--while 循环,只要while后面的条件满足,就一直循环begin...end里面的代码,直到while后面条件不满足,然后输出语句
--begin...end里的代码:
--一旦test_Var的值加到30,就跳出整个循环.
declare@test_Var int,@Sumint
select@test_Var=0,@Sum=0
while@test_Var<=200
begin
set @Sum= @Sum+@test_Var
set@test_Var = @test_Var +1
if@test_Var=30 /*先赋值,后+1,判断,再跳出整个循环*/
break
end
select '200以内所有整数之和为:',@Sum
--while 循环,只要while后面的条件满足,就一直循环begin...end里面的代码,直到while后面条件不满足,然后输出语句
--begin...end里的代码:
--一旦test_Var的值加到30,sum值的再加一次test_Var,就跳出整个循环
declare@test_Var int,@Sumint
select@test_Var=0,@Sum=0
while@test_Var<=200
begin
set @Sum= @Sum+@test_Var
if @test_Var=30 /*先+1,后赋值,判断,再跳出整个循环*/
break
set@test_Var = @test_Var +1
end
select '200以内所有整数之和为:',@Sum
4.19 continue
declare@test_Var int,@Sumint
select@test_Var=0,@Sum=0
while@test_Var<200
begin
set@test_Var = @test_Var +1
if@test_Var=100/*先+1,后赋值,判断,再跳出当前循环*/
continue
set @Sum= @Sum+@test_Var
end
select '200以内所有整数之和为:',@Sum
4.20 Goto语句
--goto test_Target直接跳到test_Target:
print '大家好,这是一次goto语句测试'
gototest_Target
print '当前没有使用沟通跳转'
test_Target:
print '我是学习sqlserver的学员'
4.21
--goto test_Target直接跳到test_Target:
declare@test_Var int ,@sum int
select@test_Var=0,@sum=0
test_Target:
set@test_Var=@test_Var+1
set @sum=@sum+@test_Var
while@test_Var<200gototest_Target/*先+1,后赋值,判断循环条件,再跳出当前循环*/
select '200以内所有整数之和为:',@sum