你的位置:首页 > 数据库

[数据库]SQL控制语句基础


SQL变量

全局变量:

全局变量是由系统定义和维护的使用两个@作为前缀,不能由用户声明和赋值!

常用的全局变量如下

@@version :获取当前使用的SQL Server版本号

EG:

select @@version

显示信息:

-----------------------------------------------------------------------------------------------------------------------------------------Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
    Apr  2 2010 15:48:46
    Copyright (c) Microsoft Corporation
    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

@@identity :上条SQL语句返回的标识列的值

EG:

insert into hous(name,price )values('房间一',299)select @@IDENTITY as 标识列

显示信息:

(1 行受影响)
标识列
---------------------------------------
5

(1 行受影响)
@@rowcount:返回上条SQL语句的受影响行数

insert into hous(name,price )values('房间一',299)select @@rowcount as 受影响行数

显示信息:


(1 行受影响)
受影响行数
-----------
1

(1 行受影响)

@@servername:本地服务器的名称

EG:

select @@servername

显示信息:

--------------------------------------------------------------------------------------------------------------------------------
DESKTOP-M5OLTTN

(1 行受影响)

@@error:最后一条sql错误的错误号

EG:

insert into hous(name,price )values('房间一')select @@ERROR as 错误号

显示结果:

消息 109,级别 15,状态 1,第 1 行
INSERT 语句中列的数目大于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。

错误号
-----------
109

(1 行受影响)

@@servicename:该计算机上的SQL服务器的名称

EG:

select @@servicename

显示结果:

--------------------------------------------------------------------------------------------------------------------------------
MSSQLSERVER

(1 行受影响)

@@language:当前使用的语言的名称

EG:

select @@language

显示结果:

--------------------------------------------------------------------------------------------------------------------------------
简体中文

(1 行受影响)

@@max_connections:可以创建的同时连接的最大数目

EG:

select @@MAX_CONNECTIONS

显示结果:

-----------
32767

(1 行受影响)

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

EG:

select @@timeticks

显示结果:

-----------
31250

(1 行受影响)

@@trancount:当前连接打开的事务数

EG:

select @@TRANCOUNT

显示结果:

-----------
0

(1 行受影响)

局部变量

声明语法:

declare @variable datatype

其中,variable为局部变量的名称,datatype为数据类型

赋值语法:

局部变量有两种复制方式

1.set @variable  = value

2.select @variable=value

set和select的区别

select语句一般用于将表中的数据赋给变量

set语句不支持将表中的数据赋给变量

提示:

给一个变量赋值是set比select的效率更高。set不支持同时给多个变量赋值

SQL输出语句

在sql server中有两种输出方式

1.print 局部变量或字符串

2.select 局部变量或字符串

其中select语句输出数据是查询语句的特殊用法

数据类型转换

语法:

Cast(表达式 as 数据类型)

Convert(数据类型,表达式【,样式】)

其中“【】”是可选部分。

逻辑控制语句

begin-end

语法:

Begin

语句或语句块

end

与C#中的“{}”类似,表示语句快的开始和结束。在一个语句块中可以包含另一个语句块

IF-else和while与C#类似这里不再一一说明

Case多分支语句

case 多分支语句也和C#中的是swith选择结构类似也就语法不同

Case的语法:

Case

when 条件1 then 结果1

when 条件2 then 结果2

……

【else 其他结果】

end

其中“【】”是可选部分

值得注意的是:如果省略Else并且when的条件都不为true则返回的结果为null

批处理-go

它是一条或多条SQL语句的集合,也就是一个可执行单元,每个批处理可以编译成单个可执行单元,从而提高可执行效率。如果批处理包含多条SQL语句,则执行这些语句的所有优化步骤将编译在单个执行单元中