create database Stu;
go
use Stu
create table stuInfo(
StuNo varchar(20) not null primary key,
StuName varchar(20) not null,
StuSex char(2) not null,
StuAge int not null,
StuSeat int not null
)
go
use Stu
insert into stuInfo values('S2001','张三丰','男',17,1),('S2002','张无忌','男',15,2),('S2003','梅超风','女',20,3)
go
use Stu
--查找张无忌前后同桌
--定义一个表示学生座位号的变量
declare @Seat int
--使用select将查询的结果赋予变量@Seat
select @Seat = StuSeat from stuInfo where StuName = '张无忌'
--查询@Seat的值
select @Seat
--根据‘张无忌’的座位号找到前后的同桌
select * from StuInfo where (StuSeat=@Seat+1) or (StuSeat=@Seat-1)
GO
--查询表中年龄最小的学生姓名
declare @StuName varchar(10)
select @StuName = StuName from StuInfo order by StuAge Desc
print @StuName
--最后一个T-SQL错误的错误号
print @@Error
--最后一次插入的标识值
print @@identity
--当前使用的语言的名称
print @@language
--可以创建的同时连接的最大数目
print @@max_connections
--受上一个SQL语句影响的行数
print @@rowcount
--本地服务器的名称
print @@servername
--当前连接打开的事务数
print @@TRANSCOUNT
--SQL Server的版本信息
print @@version
--print 变量或表达式
print '数据库服务器名:'+@@servicename
--select变量或表达式
select 15*8
--显示自动编号
insert into StuInfo(StuName,StuSex,StuBirth) values('诸葛亮','true','2002-03-14')
print '当前自动编号的值:' + convert(varchar(10),@@identity)
use Stu
create table stuScore(
StuID varchar(20) not null primary key,
StuSex char(2) not null,
Chinese int not null,
English int not null,
Math int not null
)
go
use Stu
insert into stuScore values('S2001','男',75,80,90),('S2002','男',76,56,54),('S2003','女',90,92,70),('S2004','女',70,72,80)
go
--统计分析本班男生的平均成绩和女生的平均成绩
--定义变量
declare @maleScore float
declare @femaleScore float
--第一步,分别统计男生和女生的平均成绩并存入局部变量中
select @maleScore=avg((Chinese+English+Math)/3) from StuScore where StuSex='男'
select @femaleScore=avg((Chinese+English+Math)/3) from StuScore where StuSex='女'
print '男生平均成绩:'+convert(varchar(5),@maleScore)
print '女生平均成绩:'+convert(varchar(5),@femaleScore)
--第二步,用if-else结构判断,输出结果
IF @maleScore > @femaleScore
BEGIN
PRINT '男生成绩优于女生,男生第一名是:'
select top 1 * from stuScore where StuSex='男' order by (Chinese+English+Math) DESC
END
ELSE
BEGIN
PRINT '女生成绩优于男生,女生第一名是:'
select top 1 * from stuScore where StuSex='女' order by (Chinese+English+Math) DESC
END
--循环语句案例
--如果学生平均成绩没有达80分,便给每位学生数学成绩加1分,然后再次判断是否达80分,否则继续加分,直到其平均成绩超过80、
declare @score float
select @score = avg((Chinese+English+Math)/3) from StuScore
--print @score
WHILE(@score<80)
BEGIN
update StuScore set Math=Math+1 where Math<=100
select @score = avg((Chinese+English+Math)/3) from StuScore
END
print @score
--CASE-END案例
--将StuScore成绩表中的学生成绩用五分制显示
select StuID,语文=CASE
WHEN Chinese <=19 THEN '1'
WHEN Chinese <=39 THEN '2'
WHEN Chinese <=59 THEN '3'
WHEN Chinese <=79 THEN '4'
ELSE '5'
END
from stuScore
网友评论