T-SQL编程与高级查询

 

1、T-SQL 与 SQL  

 

SQL 第四代编程语言   你只需要告诉计算机你要做什么事情 例:  select update

 

T-SQL 附加了第二代编程语言的特性,比如 流程控制(if-else while) 错误处理  存储过程  事物  触发器

 

2、 SQL 注释 

 

-- 单行注释   /* */  多行注释

 

3、批处理 

 

10条插入语句   不加go批处理关键字的话   sql引擎 会一条一条处理(会影响效率)     

 

                     加go批处理关键字的话     sql引擎 会一次性处理(提高处理效率)

 

变量

在T-SQL中,变量是能存储值并参与运算的一个实体,但在T-SQL的变量要比其他语言中的变量简单。

在T-SQL中只有两种变量:全部变量和局部变量。全局变量是由系统所定义,而局部变量是由用户定义

可对其赋值和使用。

局部变量

T-SQL中的局部变量是可以保存单个特定类型数据值的对象

1、声明T-SQL局部变量的语法:

1 declare {@变量名 数据类型【。。。。n】}  

 主意:如果要声明多个变量,请在定义的第一个局部变量后使用一个逗号分开。

为T-SQL局部变量赋值

为T-SQL局部变量赋值有两种方法:使用set语句和使用select语句,一般使用set语句

赋值。

T-SQL局部变量赋值的语法:

 

set @变量名=值

实例

declare name varchar(10)

set name='张三'

全局变量

全局变量是SQL server系统内部的变量其作用范围并不仅仅局限于某一个程序,而是任何

程序均可以随时调用。

常用的全局变量

 
全局变量 说明
@@connections 返回SQL Server自上次启动以来尝试的连接数,无论成功或失败
@@error 返回上一次的标识值
@@IDENTITY 返回上次插入的标识值
@@LANGUAGE 返回当前所使用语言的名称
@@MAX_CONNECTIONS 返回SQL Server实例允许同时进行的最大用户连接数
@@ROWCOUNT 返回受上一语句影响的行数
@@SERVICENAME 返回SQL Server的本地服务器的名称
@@SERVICENAME 返回SQL Server正在其下运行的注册表项的名称
@@TOTAL_ERRORS 返回SQL Server自上次启动之后所遇到的磁盘写入错误数
@@TRANCOUNT 返回当前连接的活动事物数
@@VERSION 返回当前的SQL Server版本、处理器体系结构、生成日期和操作系统

 

 

 

 

 

 

 

 

 

 

 

输出语句

在T-SQL中可以使用两种方式输出提示信息:使用print和select语句进行输出。

print语句的语法:

print{字符串 | 变量 | 函数 | 字符串表达方式}


实例


print 'sql server2008 '

select的语法:

select @@version as 'sql server 版本',getdate()'当前时间'

T-SQL的流程控制

T-SQL提供称为控制流的特殊关键字,用于控制T-SQL语句、语句块和存储过程的执行流。

if.....else语句

if....else语句是条件判断语句,它用于判断当某一条件成立时

执行某语句或语句块,条件不成立时执行另一条语句或语句块

if....else语句的语法形式:
if(条件表达式)
语句或语句块
else
语句或语句块


if.....else的语法:

begin

....语句
end
else
begin
...语句
end

case语句

使用case语句可以进行多个分支的选择。case具有两种格式:

简单case格式。

收索case格式。

简单case格式的语法:
case 测试表达式
when 表达式 then 结果表达式 1
【。。。n】
[else 结果表达式 n]
end
搜索case格式的语法:
case
when 布尔表达式 then 结果表达式 1
【。。。。n】
[else 结果表达式 n]
end 

while语句

while 语句是通过布尔表达是来设置一个条件,当条件成立时,重复执行一个语句或语句块,

重复执行的部分成为循环体

while语句的语法:
while 布尔表达式
{语句或语句块}
【break】
{语句或语句块}
【continue】
{语句或语句块}

7 、子查询

合并多个表中的数据的方法合并多个表中的数据的方法:

  • 联合(Union)-合并多个数据表中的行
  • 子查询-将一个查询包含到另一个查询中
  • 联接-合并多个数据表中的列

EXISTS子句:

通过在子查询中使用EXISTS子句,可以对子查询中的行是否存在进行检查。

IN子查询:

IN子查询后面可跟随返回多条记录的子查询,用于检测某列的值是否在某个范围。

子查询划分:

  • 使用比较运算符的子查询
  • IN和NOT  IN子查询
  • EXISTS和NOT  EXISTS子查询。

子查询若按所处位置划分,可以为子查询在WHERE关键字之后,子查询在FROM关键字之后、子查询在SELECT关键字之后。

 

 

 

 

 

 

posted @ 2013-04-29 17:59  ◆◇▁演绎、  阅读(465)  评论(2编辑  收藏  举报