关于TSql
1、Sql:结构化查询语言(Structrued Query Language)
2、TSql:是Sql语言的另一种版本,且只能在SqlServer中使用。和Sql不同的是,TSql中增加了对变量的声明和使用。
TSql中的几个关键点
1、局部变量的声明declare @+任意字符 数据类型
2、局部变量的赋值(set 和select 两种方式,区别是什么?)select方式的赋值连接表格的使用而set方式的赋值不行,详细看下面代码
3、局部变量的使用和投影(打印)——select (投影),print(打印)——
4、TSql中的全局变量——看代码(常见的有@@identity:最后一次插入的标识列,@@rowCount:受上一个Sql影响的行数)
5、if语句
(
1、流程控制:查询学号20060202的学员信息如果平均成绩不合格就打印姓名和平均成绩,否则只打印学号
2、多分支语句:分等级打印学生成绩
3、使用 case语句把bool类型转为有意义中文
4、使用case分等级打印学生成绩信息
)
--局部变量 /* declare @name varchar(8)-----name为变量名,varchar为数据类型 --局部变量赋值: set @name = 值 select @name = 值 */ /**/ --0声明和简单的使用变量 declare @name varchar(8) --select @name = '划拉' set @name = '划拉' select @name go select * from student --1.声明三个用于储存学号、出生日期、和平均成绩的变量并赋值 --set方式 declare @stuId char(8),@stuBirth smalldatetime, @stuAvgrade numeric(3,1) set @stuId = '201201' set @stuBirth = '1988-5-6' select @stuAvgrade = '96.3' select @stuId,@stuBirth,@stuAvgrade --print @stuId --print @stuBirth go --select方式 declare @stuId char(8),@stuBirth smalldatetime, @stuAvgrade numeric select @stuId = stuId, @stuBirth = stuBirth, @stuAvgrade = stuAvgrade from student where stuName = '丽思' select @stuId,@stuBirth,@stuAvgrade go --全局变量 select @@error @@error --最后一个T-SQL错误的错误号 @@identity --最后一次插入的标识列 /*新增一名老师,同时立刻分配学生 insert into teacher('李磊') declare @tid = @@IDENTITY insert into studet values('学生A',@tid) insert into studet values('学生B',@tid) select @@identity */ create table emp ( empId int identity(1,1) primary key, empName varchar(20) ) insert into emp values('张三') insert into emp values('李四') select * from emp select @@identity @@language --当前使用的语言的名称 @@max_connections --可以创建的同时连接的最大数目 @@rowcount --受上一个SQL语句影响的行数 @@servername --本地服务器的名称 @@servicename --该计算机上的SQL服务的名称 @@timeticks --当前计算机上每刻度的微妙数 @@transcount --当前连接打开的事物数 @@version --SQL Server的版本信息 --2,查询上次自动增长变量值,上一个SQL语句影响的行数 select @@identity select @@rowcount --流程控制 --IF语句 --3查询学号20060202的学员信息如果平均成绩不合格就打印姓名和平均成绩,否则只打印学号 declare @stuId char(8), @stuName varchar(10), @stuAvgrade numeric; set @stuId = '20060202'; select @stuName = stuName, @stuAvgrade = stuAvgrade from student where stuId = @stuId if @stuAvgrade < 60 begin print @stuName; print @stuAvgrade; end else print @stuId; go --4多分支语句分等级打印学生成绩 declare @stuId char(8), @stuName varchar(10), @stuAvgrade numeric; set @stuId = '20060202'; select @stuName = stuName, @stuAvgrade = stuAvgrade from student where stuId = @stuId if @stuAvgrade >= 90.0 print '优秀' else if @stuAvgrade >= 80.0 select '良好' else if @stuAvgrade >= 70.0 select '中等' else if @stuAvgrade >= 60.0 select '及格' else select '不及格' go --5使用 case语句把bool类型转为有意义中文 create table employee ( empId int identity(1,1) primary key, empName varchar(10) not null, empSex bit not null ) insert into employee values('才干',1) insert into employee values('小彬',1) insert into employee values('丽丽',0) insert into employee values('乐乐',0) --给列起别名的版本 select empName as 姓名, 性别 = case empSex when 1 then '男' when 0 then '女' end from employee --使用原表列名的写法 select empName, empsex = case empSex when 1 then '男' when 0 then '女' end from employee --6.使用case分等级打印学生成绩信息 select 学号 = stuId, 姓名 = stuName, 平均成绩 = case when stuAvgrade > 90.0 then '优秀' when stuAvgrade > 80.0 then '良好' when stuAvgrade > 70.0 then '中等' end from student -- while 循环语句 while(1=1)-----条件永远成立 select * from student