第3章T-SQL 编程.pdf
SQL Server Transact-SQL 编程编程编程编程 T-SQL 语句用于管理 SQL Server 数据库引擎实例,创建和管理数据库对象,以及查询、插入、修改和删除数据。变量 1、局部变量(Local Variable)局部变量是用户可以自定义的变量,它的作用范围是仅在程序内部,在程序中通常用来储存从表中查询到的数据或当做程序执行过程中的暂存变量。使用局部变量必须以开头,而且必须用 declare 命令后才能使用。基本语法:声明变量 declare 变量名 变量类型 变量名 变量类型 为变量赋值 set 变量名=变量值;select 变量名=变量值;示例:-局部变量 declare id char(10)-声明一个长度的变量 id declare age int -声明一个 int 类型变量 age select id=22 -赋值操作 set age=55 -赋值操作 print convert(char(10),age)+#+id select age,id go 简单 hello world 示例 declare name varchar(20);declare result varchar(200);set name=jack;set result=name+say:hello world!;select result;查询数据示例 declare id int,name varchar(20);set id=1;select name=name from student where id=id;select name;select 赋值 declare name varchar(20);select name=jack;select*from student where name=name;从上面的示例可以看出,局部变量可用于程序中保存临时数据、传递数据。Set 赋值一般用于赋值指定的常量个变量。而 select 多用于查询的结果进行赋值,当然 select 也可以将常量赋值给变量。注意:在使用 select 进行赋值的时候,如果查询的结果是多条的情况下,会利用最后一条数据进行赋值,前面的赋值结果将会被覆盖。2、全局变量(Global Variable)全局变量是系统内部使用的变量,其作用范围并不局限于某一程序而是任何程序均可随时调用的。全局变量一般存储一些系统的配置设定值、统计数据。全局变量 select identity;-最后一次自增的值 select identity(int,1,1)as id into tab from student;-将 studeng 表的烈属,以/1 自增形式创建一个 tab select*from tab;select rowcount;-影响行数 select cursor_rows;-返回连接上打开的游标的当前限定行的数目 select error;-T-SQL 的错误号 select procid;-配置函数 set datefirst 7;-设置每周的第一天,表示周日 select datefirst as 星期的第一天,datepart(dw,getDate()AS 今天是星期;select dbts;-返回当前数据库唯一时间戳 set language Italian;select langId as Language ID;-返回语言 id select language as Language Name;-返回当前语言名称 select lock_timeout;-返回当前会话的当前锁定超时设置(毫秒)select max_connections;-返回 SQL Server 实例允许同时进行的最大用户连接数 select MAX_PRECISION AS Max Precision;-返回 decimal 和 numeric 数据类型所用的精度级别 select SERVERNAME;-SQL Server 的本地服务器的名称 select SERVICENAME;-服务名 select SPID;-当前会话进程 id select textSize;select version;-当前数据库版本信息 -系统统计函数 select CONNECTIONS;-连接数 select PACK_RECEIVED;select CPU_BUSY;select PACK_SENT;select TIMETICKS;select IDLE;select TOTAL_ERRORS;select IO_BUSY;select TOTAL_READ;-读取磁盘次数 select PACKET_ERRORS;-发生的网络数据包错误数 select TOTAL_WRITE;-sqlserver 执行的磁盘写入次数 输出语句 T-SQL 支持输出语句,用于显示结果。常用输出语句有两种:基本语法 print 变量或表达式 select 变量或表达式 示例 select 1+2;select language;select user_name();print 1+2;print language;print user_name();print 在输出值不少字符串的情况下,需要用 convert 转换成字符串才能正常输出,而且字符串的长度在超过 8000 的字符以后,后面的将不会显示。逻辑控制语句 1、if-else 判断语句 语法 if else if else 示例 if 简单示例 if 2 3 print 2 3;else print 2 3)print 2 3;else if(3 2)print 3 2;else print other;简单查询判断 declare id char(10),pid char(20),name varchar(20);set name=广州;select id=id from ab_area where areaName=name;select pid=pid from ab_area where id=id;print id+#+pid;if pid id begin print id+%;select*from ab_area where pid like id+%;end else begin print id+%;print id+#+pid;select*from ab_area where pid=pid;end go 2、whilecontinuebreak 循环语句 基本语法 while begin break continue end 示例 -while 循环输出到 declare i int;set i=1;while(i 11)begin print i;set i=i+1;end go -while continue 输出到 declare i int;set i=1;while(i 11)begin if(i=5)begin set i=i+1;break;end set i=i+1;end go 3、case 基本语法 case when then when then when then else end 示例 select*,case sex when 1 then 男 when 0 then 女 else 火星人 end as 性别 from student;select areaName,区域类型=case when areaType=省 then areaName+areaType when areaType=市 then city when areaType=区 then area else other end from ab_area;4、其他语句 批处理语句 go Use master Go 延时执行,类似于定时器、休眠等 waitfor delay 00:00:03;-定时三秒后执行 print 定时三秒后执行;