数据库--流程控制语句的应用

给出xxgl数据库以及学生表、课程表和选课表。进行以下查询:

Student(sno char(12),sname char(10),ssex char(2),sage tinyint,snat char(8),sdept nchar(20))

Course(cno char(3),cname nchar(20),credit tinyint)

Sc(sno char(12),cno char(3),grade tinyint)

(1)创建整型局部变量@myint1和@myint2,然后分别为其赋值10和20,并在计算机屏幕上显示出来。

(2)定义两个局部变量,分别存放常量16和student表中蒋洪的学号,并在计算机屏幕上显示出来。

(3)统计并显示“C语言程序设计”课程的平均成绩,如果在80分以上,则显示“成绩优秀”,否则显示“成绩一般”。

(4)统计并显示“C语言程序设计”课程的平均成绩,如果在80分以上,则显示“成绩优秀”,如果在60—79之间,则显示“成绩一般”否则显示“成绩不理想”。

(5)将“C语言程序设计”课程的成绩,按A、B、C、D、E五个等级显示成绩。

A级:90分以上;B级:80-89分;C级:70-79分

D级:60-69分;E级:60分以下

(6)求1~100之间的所有数之和,并输出结果。

(7)为确保选修002号课程的学生都能通过考试,制定了如下加分规则:

每人都加5分,看是否都通过,如果没有,则每人再加5分,再看是否都能通过,如此反复加分,直到所有人都能通过为止(超过100,设置100)。

student表

sno

sname

ssex

sage

snat

sdept

S1

赵无言

18

汉族

计算机系

S2

蒋洪

19

回族

通信系

S3

汪艳

18

汉族

自动化

S4

张拟

18

汉族

通信系

S5

孙瑶

19

汉族

电子系

S6

张军军

20

回族

计算机系

course表

cno

cname

credit

001

C语言程序设计

2

002

高数

3

003

大学英语

2

004

计算机网络

3

005

数据库原理

2

sc表

sno

cno

grade

S1

001

80

S1

003

75

S2

002

54

S2

003

90

S3

002

70

S3

003

30

主要代码如下:

create database JXGL1
on 
(name=JXGL,
filename='D:\sql\JXGL1.mdf',//选择自己的文件保存位置
size=10MB,
maxsize=30MB,
filegrowth=5MB)
log on
(name=xxgl_log,
filename='D:\sql\JXGL1_log.ldf',
size=4MB,
maxsize=10MB,
filegrowth=2MB)
use JXGL1
go
create table S(sno char(12)primary key,
sname char(10),
sex char(2),
age tinyint,
sdept nchar(20)
)
create table C
(cno char(3)primary key,
   cname nchar(20),
   Tname varchar(20),
   credit tinyint
   )
create table  SC
(sno char(12)references S(sno),
cno char(3)references C(cno),
grade float,
primary key(sno,cno),
)
insert into S values
('S1','程晓晴','女',21,'CS'),
('S2','吴玉江','男',20,'CS'),
('S3','姜云','女',18,'CS'),
('S4','张峰','男',19,'CS'),
('S5','张丽丽','女',21,'MA'),
('S6','李文','女',25,'MA'),
('S7','李文远','女',19,'MA'),
('S8','张峰名','男',20,'IS'),
('S9','王大力','男',21,'IS'),
('S10','张姗姗','女',22,'IS')

insert into c values
('C1','C语言程序设计','殷老师',4),
('C2','计算机网络','王老师',4),
('C3','数据结构','詹老师',4),
('C4','数据库系统','詹老师',3),
('C5','Jave Web','支老师',3)

insert into SC values
('S1','C1',96),
('S1','C2',55),
('S1','C3',84),
('S1','C5',52),
('S2','C1',84),
('S2','C2',90),
('S2','C4',85),
('S3','C5',73),
('S3','C4',Null),
('S4','C1',50)
use JXGL1
declare @myint1 char(10) ,@myint2 char(20)
select @myint1=16
select @myint2='sno=s3'
print @myint1
print @myint2

if(select AVG(grade)from SC where cno='c1')>80
   print'成绩优秀'
else
   print'成绩一般'

select avg(grade) as '平均成绩',
case
when avg(grade)>=80 then '成绩优秀'
when avg(grade)>=60 and avg(grade )<=79 then '成绩一般'
when avg(grade)<60 then '成绩不理想'
end as '成绩等级'
from S JOIN SC ON S.SNO=SC.SNO AND CNO='C1'

SELECT SNAME AS '姓名',
CASE
  WHEN GRADE>=90 THEN 'A级'
  WHEN GRADE>=80 THEN 'B级'
  WHEN GRADE>=70 THEN 'C级'
  WHEN GRADE>=60 THEN 'D级'
  WHEN GRADE<60 THEN 'E级'
  END AS '成绩等级'
  from S JOIN SC ON S.sno=SC.sno AND cno='C1'
  
DECLARE @SUM INT,@I INT
SET @SUM=0
SET @I=1
WHILE @I<=100
BEGIN
  SET @SUM=@SUM+@I
  SET @I=@I+1
END
PRINT @SUM

DECLARE @N INT
WHILE(1=1)
BEGIN
  SELECT @N=COUNT(*)
  FROM SC
  WHERE grade<60
  IF(@N>0)
  UPDATE SC
    SET grade=grade+5
  ELSE
    BREAK
END
PRINT'加分后的成绩如下:'
SELECT * FROM SC

猜你喜欢

转载自blog.csdn.net/weixin_65089091/article/details/127762332