Sql 编程

来源:互联网 发布:java socket退出连接 编辑:程序博客网 时间:2024/06/05 20:58




局部变量:
局部变量的使用也是先声明,再赋值。


语法:
declare @variable_name DataType


其中 variable_name 为局部变量的名称、DataType为数据类型


如:
declare @name varchar(8)   -- 声明存放姓名的变量 name 最多可以存储8个字符

declare @age int   -- 声明一个存放年龄的变量 age




局部变量赋值的两种方法:
一、set @variable_name =value


二、select @variable_name =value




set 与 select 的区别:
select可以同时对多个变量赋值 。set不行
select 将返回的最后一个值赋给变量。set 表达式返回多个值时 会报错
select 表达式未返回值时,变量保持原值。set 表达式未返回值时,变量被赋值为Null




例:
declare @addr nvarchar(100) ,@name nvarchar(100)-- 声明多个局部变量

多个变量赋值 set @addr='北京',@name='张三' -- 发生语法错误


select @addr='北京',@name='张三'-- 为两个局部变量@addr @name 赋值



 表达式返回多个值时 set @addr=(select Address from student) -- 发生语法错误


select @addr = Address from student-- 最后一条记录的 Address 列的值






   表达式未返回值时 set @addr =(select Address from student where 1<0) -- 查询无结果时,@addr 被赋值为null


select @addr ='北京'


select @addr =Address from student where 1<0-- 查询无结果时,@addr 保持原值






*** 使用 set 语句比 select 的效率高




全局变量:
Sql Server 中的所有全局变量都使用两个 @ 符号作为前缀。





以下是全局变量:

小写:@@error 大写:@@ERROR最后一个 T-Sql 错误的错误号《如果@@error返回的值大于0,表示上一条语句执行有错误》


小写:@@identity 大写:@@IDENTITY 最后一次插入的标识值


小写:@@language 大写:@@LANGUAGE 当前使用的语言的名称


小写:@@max_conne ctions 大写:@@MAX_CONNE CTIONS 可以创建的、同时连接的最大数目


小写:@@rowcount 大写:@@ROWCOUNT 受上一个Sql语句影响的行数

小写:@@servername 大写:@@SERVERNAME 本地服务器的名称


小写:@@servicename 大写:@@SERVICENAME 该计算机上的Sql服务的名称


小写:@@timeticks 大写:@@TIMETICKS 当前计算机上每刻度的微秒数


小写:@@trancount 大写:@@TRANCOUNT 当前连接打开的事务数


小写:@@version 大写:@@VERSIONSql Server 的版本信息


常用的输出语句有两种:
print 和 select 


语法:
print 局部变量或字符串《用 print 语句输出的结果将在“消息”窗口中以<文本的方式显示》》

select 局部变量 as 自定义列名《用 select 语句输出的结果将在窗口中以<表格方式显示>》


例:
print '服务器的名称:'+@@SERVERNAME


print 'Sql Ser的版本'+@@VERSION


select @@SERVERNAME AS '服务器的名称'


select @@VERSION AS 'Sql Server 的版本'

**** 使用 print 语句要求以单个变量或字符串表达式作为参数,而“+”运算符作为连接两个字符串的连接符,要求“+”运算符两侧的操作数的数据类型必须一致
    如果用下面的Sql语句输出信息将会出错,
print '当前错误号:'+@@error
因为在上面的语句中,利用“+”运算符不能将字符串常量“当前错号:”和全局变量@@error 返回的整形数值拼接成一个完整的字符串。
改成: print '当前错误号:'+convert(nvarchar(5),@@error)

数据类型转换

cast() 和 convert() 函数


在C#语言中,T-Sql 语言中,数据类型的转换也分为隐式转换和显式转换,

语法:
变量:declare @result int


cast():cast(表达式 as 数据类型)例:cast(@result as varchar(10))

convert():convert(数据类型,表达式)例:convert(varchar(10),@result)


*****   replicate()函数:指的是次数重复字符串值

语法:
replicate(字符串,次数)    例: replicate("*",5)   --输出5个*要定义一个变量接收返回的字符串


逻辑控制语句


常用的逻辑控制语句有以下几种:


1.顺序结构语句:begin-end 语句


2.分支结构控制语句:if-else 语句 和 case-end 语句


3.循环结构控制语句:while 语句


4.多分支语句:case-end




1.顺序结构:begin-end


语法:
begin


语句或语句块


end


begin-end 语句的作用类似于C#语言的“{ }”,它经常在分支结构语句和循环结构语句中出现,表示语句块的开始和结束。在一个语句块中可以包含另一个语句块


在begin-end 语句中,begin和end应放置在新的一行。当begin和end之间有多行Sql语句时,可以在end语句后添加注释,以使它们能够很好地匹配起来提高代码的可读性。



2.分支结构:if-else


语法:
if(条件)


语句或语句块1


else


语句或语句块2



当if语句中的条件表达式结果为true时,执行语句或语句块1 的代码:否则执行语句或语句块2


同C#语言类似,else为可选


如果有多条语句,则需要与begin-end结合使用,表示一个完整的语句块

语法:
if


 begin


 语句1


 语句2
 ....

 end

else
 
 语句


3.循环结构:while


语法:
while

 begin 

语句或语句块
break | continue


 end


使用 break 语句将跳出当前循环,结束while 循环。使用continue 语句会使循环路过continue 语句后面的语句,回到while循环的第一条语句,准备下一轮循环的条件判断


4.多分支:case-end


语法:
case


when 条件1 then 结果1


when 条件2 then 结果2


else 其他结果


end


case 语句表示如果“条件1”成立,则执行“结果1”,其余类推,如果when 的条件都不匹配,则执行else后面的结果,else可以省略,when的条件表达式的结果都不为true,
则case-end语句返回null。


GO 指令


go 关键字标志着批处理的结束。


** 注意:go命令 和 Sql 语句不能在同一行
        它是一条或多条Sql语句的集合


总结:


变量的使用是先声明,再赋值。局部变量前必须在“@”作为前缀,全局变量前必须有两个“@”作为前缀

变量的赋值有两种方式:set 语句 和select 语句


输出结果也有两种方式:print 语句 和 select 语句


数据类型转换的两函数: cast() 和 convert()


控制流语句提供了条件操作所需的顺序和逻辑


语句块使用 begin-end


批处理可以提高语句执行的效率,批处理结束的标志是“go”