SQL考试练习题及全部答案
Posted 兔老大RabbitMQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL考试练习题及全部答案相关的知识,希望对你有一定的参考价值。
一.根据员工工资计算其个人所得税,3000元为起征点,超出3000元的部分按照10%的比例征收个人所得税,例如:
员工工资表
员工编号 | 工资 | 个人所得税 |
1 | 3100 | |
2 | 3500 | |
3 | 3800 | |
. . . | . . . | . . . |
则1号员工个人所得税为10元,2号员工个人所得税为50元,3号员工个人所得税为80元…,请使用游标编写一段Transact-SQL程序段,计算每个员工的个人所得税并更新员工工资表中的个人所得税。
DECLARE @eno int, @salary float, @tax float,
DECLARE etax_cursor CURSOR FOR
SELECT 员工编号,工资,个人所得税
FROM 员工工资表 ---2分
Open etax_cursor
FETCH NEXT FROM etax_cursor
INTO @eno, @salary, @tax ---1分
WHILE @@fetch_status = 0
BEGIN
select @tax= (@salary-3000)*0.1
update 员工工资表
set 个人所得税=@tax ---1分
FETCH NEXT FROM etax_cursor
INTO @eno,@salary, @tax
END
Close etax_cursor
DEALLOCATE etax_cursor ---1分
二、按要求实现下列操作(每题2分,共20分)
现有关系数据库如下,完成下面题目:
学生(学号,姓名,性别,专业、奖学金)
课程(课程号,名称,学分)
学习(学号,课程号,分数)
1.从学生表中查询“数学”专业的学生的学号,姓名,性别。
SELECT 学号,姓名,性别
FROM 学生
WHERE 专业=‘数学’
2.查询平均成绩大于等于90分的成绩信息,输出列名为学号,平均成绩,并按照平均成绩的升序排序。
SELECT 学号,AVG(分数) AS 平均成绩
FROM 学习
GROUP BY 学号
Having AVG(分数)>=90
ORDER BY AVG(分数)[微软用户1]
3.查询没有选修课程的学生的名单。
select *
from 学生
where 学号 not in (select distinct 学号 from 学习 )
或
select A.*
from 学生 A left outer join 学习 B
on A.sno = B.sno
where B.cno is null
4.检索没有获得奖学金、同时至少有一门课程成绩在90分以上的学生信息,包括学号、姓名和专业。
SELECT学号,姓名,专业
FROM 学生
WHERE奖学金 is null AND 学号 in (select学号 from学习 where分数>90)
5.检索没有任何一门课程成绩在85分以下的所有学生的信息,包括学号、姓名和专业。
SELECT 学号,姓名,专业
FROM 学生
WHERE not exists
(SELECT *
FROM 学习
WHERE学习.学号=学生.学号and 分数<85)
6. 将各门课程的选修人数及平均成绩定义为视图V_AVG,包括课程名称,选修人数和平均成绩。
create view V_AVG(名称, 选修人数, 平均成绩)
as
select 名称,count(学号),avg(分数)
from 学习,课程
where 学习.课程号=课程.课程号
group by 学习.课程号,名称
7.请将学号为'006',课程号为'C3',分数为92的记录插入学习表。
insert into 学习
values('006', 'C3',92)
8.请删除数学专业学生的成绩记录。
delete
from 学习
where 学号 in (select 学号 from 学生 where 专业= ‘数学’)
9.请将高等数学这门课程的成绩加5分。
update 学习
set 分数 = 分数 +5
where 课程号 =
( select 课程号 from 课程 where 名称=’高等数学’)
10.请将学生表的查询权限授予张英,并允许张英传播此权限。
Grant select on 学生
To 张英
With grant option
以上是关于SQL考试练习题及全部答案的主要内容,如果未能解决你的问题,请参考以下文章