简介:T-SQL语句创建库、创建表和听、和添加约束等。T-SQL是数据库结构化查询语言,常见的增加、删出、修改、查询、创建库和创建表的语句,还支持定义变量、输出语句。逻辑控制语句(IF、CASE、WHERE等)、过程或函数等,这些称为T-SQL编程。
T-SQL中的变量分为局部变量和全局变量。局部变量的使用是先声明,再赋值。全局变量由系统定义和维护,可以直接使用,但一般不定全局变量。
变量是一块内存空间的表示,变量是存储数据的容器。数组是一连串的空间,所以有下表。
3.1使用变量
变量是可以存储数据值得对象,可以使用局部变量向SQL语句传递数据。可以声明许多变量以便临时使用。声明变量以后,可以用一条T-SQL语句设置该变量的值。处理中的下一条语句可以从该变量中检索数值,并给出结果。
局部变量:T-SQL中,局部变量的名称必须以标记@作为前缀。语法:
DECLARE @variable_name DateType
variable_name为局部变量的名称,DataType为数据类型。
例如:
DECLARE @name varchar(8) --声明存放姓名变量name,最多可以存储8个字符
DECLARE @number int --声明一个存放学好的变量number
局部变量的赋值有两种方法:使用SET语句或SELECT语句
语法
SET @variable_name =value
或者
SELECT @varible_name=value
示例1
1 /*--查询李文才的信息--*/ 2 DECLARE @name varchar(8) --学生姓名 3 set @name =‘李文才‘ --使用SEL赋值 4 select StudentNo,StudentName,BornDate,Address 5 from Student 6 where StudentName =@name 7 /*--查找与李文才学号相邻的学生信息--*/ 8 DECLARE @studentNo int --学号 9 --使用SELECT赋值 10 select @studentNo=StudentNo from student 11 where StudentName =@name 12 select StudentNo ,StudentName,BornDate ,Address 13 from Student 14 where (StudentNo =@studentNo+1) OR (studentNo =@studentNo -1) 15 GO
SEL语句与SELECT语句的区别 及使用上的不同
SEL | SELECT | |
同时对多个变量赋值 | 不支持 | 支持 |
表达式返回多个值时 | 出错 | 将返回的最后一个值赋给变量 |
表达式返回值时 | 变量被赋值为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保持原值
--01.在SQL中如何定义一个变量??
--变量分为局部变量和全局变量:
局部变量:@作为前缀,如@age
全局变量以@@作为前缀,如@@version
全部变量由系统定义和维护,我们只能读取,不能修改
--SQL中变量也分成两类:局部变量和全局变量
--011.局部变量
--int
declare @num int
set @num=0
print @num
--字符串
declare @name nvarchar(32)
set @name=‘张三‘
print @name
--日期
declare @mydate datetime
set @mydate=getdate()
print @mydate
--小数
declare @price decimal(18,2)
set @price=18.89
print @price
--程序的boolean对应数据库中的bit 在SQL Server中认为就是假,非就是真
declare @sex bit
set @sex=-1000
print @sex
--查询和微冷的雨相邻的学生信息
--定义一个变量,保存微冷的雨的学号
declare @stuno int
select @stuno=StudentNo from student
where studentno=23311
print @stuno
--李小龙
select * from student
where studentno=@stuno-41
--习大大
select * from student
where studentno=@stuno+5
--局部变量练习一
--set与select区别
--01.set不支持给多个变量赋值的,但是select支持
declare @num1 int,@num2 int
select @num1=studentno,@num2=gradeid from student
where studentno=23270
--02.表达式返回多个值的时候,set会出错,但是select会将最后一个值赋值给变量
declare @result nvarchar(20)
select @result=studentname from student
print @result
select * from student
declare @myresult nvarchar(20)
set @myresult=(select studentname from student)
print @myresult
--03.当表达式没有返回值时,set变量会被赋值为null
declare @myresult nvarchar(20)
set @myresult=‘李四‘
set @myresult=(select studentname from student where 0>100)
if(@myresult is null)
begin
print ‘是空‘
end
USE ajax
select * from admin
where uaddress=null
null--不代表空,代表不知道。
use myschool
declare @myresult nvarchar(20)
set @myresult=‘张三‘
select @myresult=studentname from student where 0>100
select @myresult
--03.什么场景下选用select,什么场景下选用set
--如果是从某一张表中获取数据赋值给某个变量,那么只能用select
--其他的场景下两个等价
declare @tag nvarchar(2)
set @tag=‘★‘
print @tag
print @tag+@tag
print @tag+@tag+@tag
print @tag+@tag+@tag+@tag
print @tag+@tag+@tag+@tag+@tag
--go的位置:结论:如果语句是select,那么go关键字可以和select语句位于同一行,其他语句要另起一行.
--go的含义是将go之前所有的语句看成是一个可执行单独,用白话来说,就是将一堆sql语句,一次性的交给SQL Server引擎处理.
select * from student
select * from grade
go
create table test
(
id int primary key not null,
name nvarchar(20)
)
go
select dateadd(yy,2,getdate())
--*************************1.局部变量案例*********************************************
--**************************练习********************************************
--练习:查询学号是(李小龙)的学生姓名和年龄,并输出比他小岁的学员信息(姓名和年龄)
--01.先找出李小龙的年龄@age
declare @age int
select @age=datediff(yy,birthday,getdate()) from student
where studentno=23270
--02.where 年龄=@age-1
select studentname,datediff(yy,birthday,getdate())
from student
where datediff(yy,birthday,getdate())=@age-1
--**************************3.SQL Server数据类型转换**********************************
--在SQL Server中数据类型转换有两种方式
--方式一:Cast(要转换的变量as 目标类型)
declare @num int
set @num=20
print ‘我的年龄是‘+cast(@num as nvarchar(20))+‘岁‘
print ‘我的年龄是‘+convert(nvarchar(20),@num)+‘岁‘
--日期类型转字符串
declare @date datetime
set @date=getdate()
print ‘今天是‘+convert(nvarchar(20),@date,120)
--方式二:Convert(目标类型,要转换的变量,style)
--**************************4.floor和ceiling函数********************************
--floor:
select floor(1.92) --向下取整
--ceiling
select ceiling(1.01) --向上取整
--**************************5.逻辑控制语句*****************************************
--**************if else while case end******************
--现在定义一个变量,判断该变量的值是否大于
declare @num int
set @num=6
if(@num>=50)
print ‘请根据您的身体状况选择性观看‘
else
begin
print ‘年龄小于,不能观看‘
print ‘你能看到我吗‘
end
05.if--else的使用
--练习:
--统计并显示2013-08-09 的oop考试平均分
--如果平均分在70分以上,显示“考试成绩优秀”,并显示前三名学生的考试信息
--如果在以下,显示“考试成绩较差”,并显示后三名学生的考试信息
--定义一个变量保存oop对应的课程编号
declare @subid int
select @subid=SubjectId from Subject
where subjectname=‘oop‘
--定义一个变量,保存平均分
declare @avg int
--如何求2013-08-09 oop 平均分
select @avg=AVG(StudentResult) from result
where examdate>=‘2013-08-09‘ and examdate<‘2013-08-10‘
and subjectid=@subid
--判定@avg和的关系
if(@avg>=70)
begin
--01.打印成绩优秀
print ‘成绩优秀‘
--02.显示前名学生成绩信息
select top 3 studentno,studentresult from result
where examdate>=‘2013-08-09‘ and examdate<‘2013-08-10‘
and subjectid=@subid
order by studentresult desc
end
else
begin
print ‘成绩好烂!罚吃番薯‘
End
declare @num int
set @num=5
if(@num=1)
begin
print ‘1‘
end
else if(@num=2)
begin
print ‘2‘
end
else
begin
print ‘aa‘
end
06.while 循环
生命诚可贵,爱情价更高。若为学习故,二者皆可抛。
--在SQL 中,只有while一种循环,没有do-while和for循环
--并且没有while(true)的写法,可以使用while(1=1)替代。
--注意:SQL中比较是否相等,用单等号(=)
--求出1到100之间所有偶数的和
//1 ----100之间所有偶数的和
int sum = 0; //保存总和
int num = 1;
while (num<=100)
{
//判定当前num和2的关系
if (num%2==0)
{
sum = sum + num;
}
//num++
num++;
}
Console.WriteLine(sum);
while(9=9)
begin
print ‘11‘
end
--int count = 0;
-- for (int i = 0; i <= 100; i++)
-- {
-- if (i%2==0)
-- {
-- count += i;
-- }
-- }
-- Console.WriteLine(count);
-- Console.ReadLine();
--注意点:每一次更改变量值的时候,都要加上set关键字
--在SQL Server中不支持++,支持+=
--在SQL Server中,对比变量使用=
01.1到100之间所有偶数的和
--01.定义一个变量,保存总和
declare @sum int
set @sum=0
--02.定义一个初始变量
declare @num int
set @num=1
--03.进行while循环
while(@num<=100)
begin
--判定
if(@num%2=0) --代码执行到这里,证明@num是偶数
begin
set @sum+=@num
end
set @num+=1
end
--出了循环,打印总和sum
print @sum
02.打印直角三角形
*
**
***
****
*****
--用循环的方式打印出直角三角形(不是重点,是难点)
declare @i int
declare @j int
declare @str nvarchar(100)
set @i=1
set @j=1
set @str=‘‘
while(@i<=5)
begin
while(@j<=@i)
begin
set @str+=‘*‘
set @j+=1
end
print @str
set @i+=1
end
declare @str2 nvarchar(200)
declare @count int
declare @result nvarchar(200)
set @str2=‘*‘
set @count=0
set @result=‘‘
while(@count<5)
begin
set @result+=@str2
print @result
set @count+=1
end
print ‘你好‘+char(9)+‘吃饭‘
07.设置输出结果的格式
--****************************6.设置输出结果的格式***************************************
--如果我们想让【结果】和【消息】窗口在同一个窗口显示,那么我们可以
--点击工具→选项→查询结果→SQL Server界面,将选项改成以文本形式显示结果
--*****************************************************************************
use myschool
select * from student
--内容回顾
/*
1.局部变量
declare @num int
set @num=5
print @num
2.全局变量:一般不会自己定义全局变量
@@error:捕获上一条SQL宇语句的错误号。如果返回证明上一条语句没有问题
3.while:
while(1=1)
begin
end
if --else
4.类型转换
convert(目标数据类型,要转换的变量,120) cast(变量as 目标数据类型)
*/
select * from student
--****************** 7.经典while循环加分题目***************************************
--检查学生“oop”课最近一次考试是否有不及格(60分及格)的学生。
--如有,每人加2分,高于95分的学生不再加分,直至所有学生这次考试成绩均及格
--***********************************************************************
--01.看一下oop课程最近一次考试分以下人数
--准备一个变量,保存不及格人数,科目编号,最近考试时间
--01.科目编号
select * from result
declare @subid int
select @subid=subjectid from subject
where subjectname=‘oop‘
--02.最近一次考试时间
declare @mydate datetime
select @mydate=max(examdate) from result
where subjectid=@subid
--03.不及格人数
declare @num int
select @num=count(1) from result
where subjectid=@subid
and examdate=@mydate
and studentresult<70
--04.
while(@num>0) --有成绩低于分的学员,
begin
--每个人+2分,但是分以上不加分
update result set studentresult+=2
where studentresult<95
and subjectid=@subid
and examdate=@mydate
select @num=count(1) from result
where subjectid=@subid
and examdate=@mydate
and studentresult<70
print @num
end
select * from result
order by subjectid,examdate
08.Case End 经典练习
--Case End在面试的时候,会换一种方式考察,就是行转列思想。
--*************************8.Case End 经典练习**************************************
--采用美国ABCDE五级打分制显示学生oop课最近一次考试成绩(姓名等级)
--A级: 90分以上
--B级:80-分
--C级: 70-分
--D级:60-分
--E级:60分以下
--*****************************************************************************
declare @subid int
declare @maxdate datetime
select @subid=subjectid
from subject
where subjectname=‘oop‘
select @maxdate=max(examdate)
from result
where subjectid=@subid
select studentname,等级=
case
when studentresult>=90 then ‘A‘
when studentresult>=80 then ‘B‘
when studentresult>=70 then ‘C‘
when studentresult>=60 then ‘D‘
else ‘E‘
end
from student,result
where student.StudentNo=result.StudentNo
and subjectid=@subid
and examdate=@maxdate
select * from result
--方式二
declare @subid int
declare @maxdate datetime
select @subid=subjectid
from subject
where subjectname=‘oop‘
select @maxdate=max(examdate)
from result
where subjectid=@subid
select studentname,等级=
case
StudentResult
when 90 then ‘A‘
when 80 then ‘B‘
when 70 then ‘C‘
when 60 then ‘D‘
else ‘E‘
end
from student,result
where student.StudentNo=result.StudentNo
and subjectid=@subid
and examdate=@maxdate
--方式二:when后面不是区间,而是定值的时候
--可以使用该方式
declare @subid int
declare @date datetime
select @subid=subjectid from subject
where subjectname=‘oop‘
select @date=max(examdate)
from result
where subjectid=@subid
select studentname,等级=
case studentresult
when 90 then ‘A‘
when 80 then ‘B‘
when 70 then ‘C‘
when 60 then ‘D‘
else ‘E‘
end
from student,result
where student.studentno=result.studentno
and subjectid=@subid
and examdate=@date
select * from result
--Go
select * from student
select * from subject
go
--go必须独占一行
create table myttttt3
(
id int identity(1,1) primary key not null,
name nvarchar(20)
)
go
select * from sysobjects where name=‘mm‘
Declare @date datetime --考试时间 select @date=max(ExamDate) from Result inner Join Subject ON Result.SubjectNo=Subject.SubjectNo where SubjectName=‘java Logic‘ select 学号=StudentResult<60 THEN ‘E‘ where StudentResult BETWEEN 60 AND 69 THEN ‘D‘ where SrudentResult BETWEEN 70 AND 79 THEN ‘C‘ where studentResult BETWEEN 80 AND 89 THEN ‘B‘ else ‘A‘ end from result inner join subject on result.SubjectNo=Subject.SubjectNo where subjectName=‘java Login‘ and ExamDate=@date
/*1.一道SQL语句面试题,关于group by
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负
如果要生成下列结果, 该如何写sql语句?
日期 胜 负
2005-05-09 2 2
2005-05-10 1 2
------------------------------------------
*/
create table tmp(rq varchar(10),shengfu nchar(1))
select * from tmp
insert into tmp values(‘2005-05-09‘,‘胜‘)
insert into tmp values(‘2005-05-09‘,‘胜‘)
insert into tmp values(‘2005-05-09‘,‘负‘)
insert into tmp values(‘2005-05-09‘,‘负‘)
insert into tmp values(‘2005-05-10‘,‘胜‘)
insert into tmp values(‘2005-05-10‘,‘负‘)
insert into tmp values(‘2005-05-10‘,‘负‘)
select * from tmp
select rq as 日期,sum
(case
when shengfu=‘胜‘ then 1
else 0
end) as 胜,sum
(
case
when shengfu=‘负‘ then 1
else 0
end
) as 负
from tmp
group by rq
作业:1.全局变量的总结
2.局部变量的经典案例:上机练习3和课上的讲解内容,(手写,写到本上)
3.while循环加分经典练习,自己下去看看,写写!
4.第四章预习
09.go关键字
批处理可以将一堆(N条SQL)一次性的发送给SQL引擎执行。
Go关键字是一个批处理结束的标识。
第四章 高级查询
四、高级查询
本章依次讲解四个问题:
01.简单子查询
02.in/not in 子查询
03.Exists子查询
04.T-SQL语句的综合应用
01.简单子查询
案例1:查询学生表中比"美洋洋"小的学员信息(姓名,地址)
--不用变量
--所想即所得
select studentname,address
from Student
where Birthday>(select Birthday from Student where StudentName=‘美洋洋‘)
案例2:查询“oop”课程至少一次考试刚好等于60分的学生(姓名,成绩)
select Studentname,studentresult
from Student,result,Subject
where Student.StudentNo=Result.StudentNo
and Result.SubjectId=Subject.SubjectId
and SubjectName=‘oop‘
and StudentResult=60
--用子查询如何实现???
--用到什么条件,交给子查询解决
select studentname,studentresult
from Student,Result
where Student.StudentNo=Result.StudentNo
and SubjectId=(select SubjectId from Subject where SubjectName=‘oop‘)
and StudentResult=60
--只检索学生姓名
select studentname
from Student
where StudentNo in
(select StudentNo
from Result
where StudentResult=60 and SubjectId=
(select SubjectId
from Subject
where SubjectName=‘oop‘
)
)
3.2 输出语句
T-SQL支持输出语句,用于输出显示处理的数据结果。输出语句分为两种:PRINT语句和SELECT语句。语法:
PRINT 局部变量或字符串
SELECT 局部变量 AS 自定义列名
其中,使用SELECT语句输出数据是查询语句的特殊应用。
示例2
PRINT ‘服务器的名称:‘+@@SERCERNAME
PRINT ‘SQL Server的版本‘ + @@VERSION
SELECT @@SERVERNAME AS ‘服务器名称‘
SELECT @version AS ‘SQL Server的版本‘
转换函数 PRINT ‘当前错误号‘+CONVERT(varchar(5)),@@ERROR
示例3
INSERT INTO Student
(StudentName,StudentNo,LoginPwd,GradeId,Sex,BornDate,IdentityCard)
VALUES (‘武松‘,10011,‘123456‘,1,0,‘1990-12-31‘,‘11010119901231001X‘)
PRINT ‘当前错误号‘+CONVER(varchar(5),@@ERROR)
UPDATE Student SET BornDate=‘1970-7-8‘ WHERE StudentNo=10011
PRINT ‘当前错误号:‘+CONVERT(varchar(5),@@ERROR)
GO
@@ERROR用于表示最近一条SQL 语句是否有错误。如果有错误,则返回非零的值。第一次INSERT语句没错,所以为0;第二条UPDATE语句违反了出生日期必须大于等于1980年1月1日的检查约束,所以错误号不为零。
3.3重点数据类型转换
3.3.1
CAST()和CONVERT()函数
与C#语言类似,在T-SQL语言中,数据类型的转换也分为隐式转换和显式转换。在T-SQL语言中 除了CONVERT()函数能够实现数据类型显式转换功能之外,T-SQL还提供CAST()函数。
示例4
DECLARE @name varchar(50) --姓名 DECLARE @Result decimal(5,2) --考试成绩 DECLARE @NO int set @NO =10000 select @name =StudentName from Student where StudentNo=@NO select @Result =StudentResult from Student Inner join Result on Student.StudentNo=Result.StudentNo Inner Join Subject on Result.SubjectNo=Subject.SubjectNo where SubjectName=‘jave Logic‘ AND Student.StudentNo=@NO AND EXAMDate==‘2.13-2-15‘ print ‘姓名:‘+@name print ‘成绩:‘+cast(@Result as varchar(10)) GO
语法
CAST(表达式AS数据类型)
CONVERT(数据类型[(长度)],表达式[ ,样式])
CAST()函数和COVERT()函数用于讲某种数据类型的表达式转换为另一种数据类型的表达式。与CAST()函数不同之处是,在将日期时间类型/浮点的数据转换为字符串数据时,CONVERT()函数可以通过第3个参数指定转换后的字符样式,不同的样式是转换后字符数据的显示格式不同. CONVERT()函数的第3个参数可以省略.有关样式的具体取值以及对应的显示样式请查SQL Server联机丛书。
3.4逻辑控制语句
顺序结构控制语句: begin-end语句
分支结构控制语句: if-else语句和case-end语句
循环结构控制语句: while 语句
3.4.1begin-end语句
语法
begin
语句和语句快
end
begin-end语句的作用类似于C#的"{}",他经常在分支结构语句和循环结构语句中出现,表示语句块的开始和结束.在一个语句块中可以包含另一个语句块
3.4.1 if-else条件语句
if-else语句属于分支结构,它于C#编程语言的if语句类似,也是根据条件是否成立来确定程序执行方向的.
语法:
if(条件)
语句或语句块1
else
语句或语句块2
当if语句中的条件表达式结果为TRUE是,执行语句或语句块1的代码;否则执行语句或语句块2.
如果多条语句则需要与begin-end结合使用,表示一个完整的语句块
if(条件)
begin
语句1
语句2
....
end
else
.......
--查询获得"JAVA longic"课程最近一次考试的日期 declare @date datetime --考试日期 select @date =MAX(ExamDate) FROM Result INNER JOIN Subject ON Result.SubjectNo=Subject.SubjectNo WHERE SubjectName=‘Java Logic‘ --查询获得本次考试的平均分 DECLARE @myavg decimal(5,2) --平均分 SELECT @myavg=AVG(StudentResult) FROM Result INNER JOIN Subject ON Result.SubjectNo=Subject.SubjectNo WHERE SubjectName ‘Java Logic‘ AND ExamDate=@date PEINT ‘平均分:‘+CONVERT(varchar(5),@myavg) IF (@myavg>70) begin print ‘考试成绩优秀,前三名的成绩‘ selcet top 3 StudentNo, StudentResult FROM Result INNER JOIN Subject ON Result.SubjectNo=Subject.SubjectNo WHERE SubjectName=‘Java Logic‘ AND ExamDate=@date ORDER BY StudentResult DESC END ELSE BEGIN print ‘考试成绩较差者,后三名的成绩‘ select top 3 StudentNo,StudentResult from Result INNER JOIN Subject ON Result.SubjectNo=Subject.SubjectNo WHERE SubjectName=‘Java Logic‘ AND ExamDate=@date ORDER BY StudentResult END
把输出的表格数据和文本消息显示在同一个窗体中,需要做如下设置。
选择Microsoft SQL Server Management Studio 菜单中的“工具”→"选择"选项,弹出"选项"对话框,选择"查询结果"→"SQL Server"→"常规"选项,将"显示结果的默认方式"设置为"以文本格式显示结果"。
3.4.3 while循环语句
while循环语句可以根据某些条件重复执行一条SQL语句或一个语句块。通过使用while关键字,可以确保只要指定的条件为TRUE,就会重复执行语句或语句块,直至指定条件为FALSE为止。
在while循环语句中可以使用continue和break语句来控制语句的执行。
语法:
while(条件)
begin
语句或语句块
[break | continue]
END
使用break语句将跳出当前循环结束while循环.使用continue语句会使循环跳过continue语句后面的语句,回到while循环的第一条语句,准备下一轮的条件判断。
Declare @date datetime --考试时间 Declare @subNo int --课程编号 select @subNo =SubjectNo from Subject where SubjectName=‘Winforms‘ select @date=max(ExamDate) from Result where SubjectNo=@subNo declare @n int while(1=1) --条件永远成立 begin select @n=count (*) from Result where SubjectNo=@subNo AND ExamDate=@date AND StudentResult<60 --统计不及格人数 IF(@n>0) --每人加2分 Update result set StudentResult=StudentResult+2 from result where SubjectNo=@subNo AND ExamDate=@date AND StudentResult<95 else break --退出循环 END print ‘加分后的成绩如下:‘ select StudentName,StudentResult from Result INner Join Student On Result.StudentNo=Student.StudentNo where SubjectNo=@subNo And ExamDate =@date
3.4.4 case多分支语句
ease-END语句计算一组条件表达式,并返回其中一个符合条件的结果
语法:
case
when 条件1 then 结果1
when 条件2 then 结果2
[else 其他结果]
END
case语句表示如果"条件1"成立,则执行"结果1",其余类推。如果when的条件都不匹配,则执行else后面的结果。else可以省略。如果省略else并且when的条件表达式的结果都不为TRUE则
case-END语句返回null.
3.5批处理
3.5.1 GO指令
示例8
--批处理1 create table punish( --创建表 StuNo int NOT NULL, --学号 StuCnt int NOT NULL, --不及格次数 StuMng varchar(50) --处理意见 ) GO --批处理2 INSERT into Punish --批量插入数据 select StudentNo 学号,count(0) 不及格次数,‘ ‘处理意见 from Result where StudentResult <60 group BY StudentNo GO --批处理3 UPDATE Punish set StuMng=‘警告‘ where StuCnt=1 --更新只有1次不及格记录的处理意见 Update Punish set StuMng=‘肄业‘ where StuCnt Between 2 and 3 --更新有2次或3次不及格记录的处理意见 UPDate Punish set StuMng=‘开除‘ where StuCnt >3 --更新3次以上不及格记录的处理建意 GO --批处理4 select * from Punish --查询更新后的结果 GO
本章总结
变量的使用是先声明,再赋值。局部变量前必须要“@”作为前缀,全局变量前必须有两个“@”作为前缀。
变量的赋值有两种方式:set语句和select语句
输出结果也有两种方式:print语句和select语句
数据类型转换的两个函数:cast()和CONVERT()
控制流语句提供了条件操作所需的顺序和逻辑
语句块使用begin-END
批处理可以提高语句执行的效率,批处理结束的标志是"GO"
23:55:24
原文:http://www.cnblogs.com/WuXuanKun/p/5245964.html