--(1)简单case表达式
use student
go
--使用简单case语句:输出“课程名”,并在”课程名“后添加“备注”
select 课程名,备注=
case 课程名
when '大学语文' then '人文学院'
when '高等数学' then '数学学院'
when '计算机基础' then '工学院'
when '数据库概论' then '工学院'
end
from 课程
go
select 课程名,备注=
case 课程名
when '大学外语' then '外国语学院'
--"大学外语“在”课程“表中没有所以后面的备注就显示null
when '高等数学' then '数学学院'
when '计算机基础' then '工学院'
when '数据库概论' then '工学院'
end
from 课程
go
--(2)搜素case表达式
use student
go
select distinct 教师编号,课程号,年级=
case
when 专业学级 ='2001' then '四年级'
when 专业学级='2002' then '三年级'
end
from 教师任课
go
--根据成绩给学生分配”优“,”良“,”中“,”差“四个等级
select distinct 姓名,课程名,等级=
case
when 成绩>80 then '优'
when 成绩>70 then '良'
when 成绩>=60 then '中'
when 成绩<60 then '差'
end
from 学生,课程,课程注册
where 学生.学号 =课程注册.学号 and
课程.课程号 =课程注册.课程号
--(3)if else语句
--第一种方法:
use student
go
begin
declare @zc varchar(10)--定义一个变量存放查到的职称
select @zc=职称 from 教师
if (@zc in ('教授','副教授'))--变量里的职称和这里的对比
begin
print'符合条件的老师有:'
select 姓名,学历,职务,职称 from 教师 where 职称='教授' or 职称='副教授'
end
else
begin
print'没有符合条件的老师'
end
end
--第二种方法:
use student
go
if exists(select * from 教师 where 职称='教授' or 职称='副教授')
begin
print'符合条件的老师有:'
select 姓名,学历,职务,职称 from 教师 where 职称='教授' or 职称='副教授'
end
else
begin
print'没有符合条件的老师'
end
--第三种方法:
use student
go
if((select COUNT(*) from 教师 where 职称 in ('教授','副教授'))>0)
begin
select 姓名,学历,职务,职称 from 教师
where 职称 in ('教授','副教授')
end
else
begin
select 姓名,学历,职务,职称 from 教师
where 职称 in ('教授','副教授')
end
--第四种方法:
use student
go
declare @a int
set @a=(select COUNT(*) from 教师 where 职称 in ('教授','副教授'))
if (@a>0)
begin
select 姓名,学历,职务,职称 from 教师
where 职称 in ('教授','副教授')
end
else
begin
select 姓名,学历,职务,职称 from 教师
where 职称 in ('教授','副教授')
end
/(4)*批处理
go语句前面的语句是一个批处理
go其实是一个批处理的结束指令*/
use student
go--第一个批结束
--第二个批开始
print'系部表包含如下信息:'
select * from 系部
print'系部表记录个数;'
select COUNT(*) 个数 from 系部
go--第二个批结束
use student
go
select 姓名,学号,出生日期
from 学生
where YEAR(出生日期) between 1970 and 1982
go
--查出不在1970-1974年出生的学生的休息
use student
go
select * from 学生
where YEAR(出生日期) not between 1970 and 1974
go
--课程号为0001成绩在70-79之间的学生的学号,成绩
use student
go
select 学号,成绩
from 课程注册
where 课程号='0001' and 成绩 >=70 and 成绩 <79
--成绩 between 70 and 79
go
--查询”课程注册“表中前4条记录
use student
go
select top 4 *
from 课程注册
go
--查找学生表中姓“周"的学生信息
use student
go
select * from 学生
where 姓名 like '周%'
go
--(8)compute by语句(每个学生的成绩明细加总成绩和平均成绩)
use school
go
select *from score
order by sno
compute sum(degree),avg(degree) by sno
go
--(9)1+++..100的和变输出
declare @a int ,@sum int
select @a=1,@sum=0
while(@a<=100)
begin
set @sum=@sum + @a
set @a =@a + 1
end
print'总和为:'print @sum
go
--(10)1加到100的和为大于1000是加到第几个数:
declare @i int ,@sum int
set @i =1
set @sum =0
while(@i<=100)
begin
set @sum =@sum +@i
if @sum >1000 break
set @i =@i +1
end
print @sum
print @i
use student
go
--使用简单case语句:输出“课程名”,并在”课程名“后添加“备注”
select 课程名,备注=
case 课程名
when '大学语文' then '人文学院'
when '高等数学' then '数学学院'
when '计算机基础' then '工学院'
when '数据库概论' then '工学院'
end
from 课程
go
select 课程名,备注=
case 课程名
when '大学外语' then '外国语学院'
--"大学外语“在”课程“表中没有所以后面的备注就显示null
when '高等数学' then '数学学院'
when '计算机基础' then '工学院'
when '数据库概论' then '工学院'
end
from 课程
go
--(2)搜素case表达式
use student
go
select distinct 教师编号,课程号,年级=
case
when 专业学级 ='2001' then '四年级'
when 专业学级='2002' then '三年级'
end
from 教师任课
go
--根据成绩给学生分配”优“,”良“,”中“,”差“四个等级
select distinct 姓名,课程名,等级=
case
when 成绩>80 then '优'
when 成绩>70 then '良'
when 成绩>=60 then '中'
when 成绩<60 then '差'
end
from 学生,课程,课程注册
where 学生.学号 =课程注册.学号 and
课程.课程号 =课程注册.课程号
--(3)if else语句
--第一种方法:
use student
go
begin
declare @zc varchar(10)--定义一个变量存放查到的职称
select @zc=职称 from 教师
if (@zc in ('教授','副教授'))--变量里的职称和这里的对比
begin
print'符合条件的老师有:'
select 姓名,学历,职务,职称 from 教师 where 职称='教授' or 职称='副教授'
end
else
begin
print'没有符合条件的老师'
end
end
--第二种方法:
use student
go
if exists(select * from 教师 where 职称='教授' or 职称='副教授')
begin
print'符合条件的老师有:'
select 姓名,学历,职务,职称 from 教师 where 职称='教授' or 职称='副教授'
end
else
begin
print'没有符合条件的老师'
end
--第三种方法:
use student
go
if((select COUNT(*) from 教师 where 职称 in ('教授','副教授'))>0)
begin
select 姓名,学历,职务,职称 from 教师
where 职称 in ('教授','副教授')
end
else
begin
select 姓名,学历,职务,职称 from 教师
where 职称 in ('教授','副教授')
end
--第四种方法:
use student
go
declare @a int
set @a=(select COUNT(*) from 教师 where 职称 in ('教授','副教授'))
if (@a>0)
begin
select 姓名,学历,职务,职称 from 教师
where 职称 in ('教授','副教授')
end
else
begin
select 姓名,学历,职务,职称 from 教师
where 职称 in ('教授','副教授')
end
/(4)*批处理
go语句前面的语句是一个批处理
go其实是一个批处理的结束指令*/
use student
go--第一个批结束
--第二个批开始
print'系部表包含如下信息:'
select * from 系部
print'系部表记录个数;'
select COUNT(*) 个数 from 系部
go--第二个批结束
use student
go
select 姓名,学号,出生日期
from 学生
where YEAR(出生日期) between 1970 and 1982
go
--查出不在1970-1974年出生的学生的休息
use student
go
select * from 学生
where YEAR(出生日期) not between 1970 and 1974
go
--课程号为0001成绩在70-79之间的学生的学号,成绩
use student
go
select 学号,成绩
from 课程注册
where 课程号='0001' and 成绩 >=70 and 成绩 <79
--成绩 between 70 and 79
go
--查询”课程注册“表中前4条记录
use student
go
select top 4 *
from 课程注册
go
--查找学生表中姓“周"的学生信息
use student
go
select * from 学生
where 姓名 like '周%'
go
--(8)compute by语句(每个学生的成绩明细加总成绩和平均成绩)
use school
go
select *from score
order by sno
compute sum(degree),avg(degree) by sno
go
--(9)1+++..100的和变输出
declare @a int ,@sum int
select @a=1,@sum=0
while(@a<=100)
begin
set @sum=@sum + @a
set @a =@a + 1
end
print'总和为:'print @sum
go
--(10)1加到100的和为大于1000是加到第几个数:
declare @i int ,@sum int
set @i =1
set @sum =0
while(@i<=100)
begin
set @sum =@sum +@i
if @sum >1000 break
set @i =@i +1
end
print @sum
print @i