SQL中的一些基础题目及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题38列出选修了“C801”课程并且成绩在90分以上学生的学号、姓名、所在院系和班级名Select 学生表.学号,姓名,所在院系,班级名
From 学生表,成绩表
Where 学生表.学号=成绩表.学号And 课程号='c801' and 成绩>90
题39 查询某一学生所在班级的所有学生名单(任意指定一个学生名)
Select 学号,姓名
From 学生表
Where 班级名in (select 班级名
From 学生表
Where 姓名='肖竹一')
题40 列出“肖竹一”同学同在一个院系并且同一入学年份的学生名单
Select *
From 学生表
Where 所在院系= (select 所在院系From 学生表Where 姓名='肖竹一')
And 入学年份= (select 入学年份From 学生表Where 姓名='肖竹一')
题41 列出选修了“离散数学”的学生的学号;姓名和所在院
SELECT 成绩表.学号,姓名,所在院系
From 学生表,成绩表
Where 学生表.学号=成绩表.学号and 课程号in (select 课程号
From 课程表
Where 课程名='离散数学')
题42 列出选修…C803‟最高成绩的学生学号,课程号,成绩
Select 学号,课程号,成绩
From 成绩表
Where 成绩=(select max(成绩) From 成绩表Where 课程号='c803')
And 课程号='c803'
题43 列出所有院系中比计算机系最小年龄大的学生清单
Select *
From 学生表
Where 年龄> any(select 年龄
From 学生表
Where 所在院系='计算机')
题44 学号是“200206002”学生, 查询同班同学大于该学生最低成绩的学生,例出学号,课程号,成绩。
Select 学生表.学号,课程号,成绩
From 学生表,成绩表
Where 成绩表.学号=学生表.学号and 班级名=(select 班级名
From 学生表
Where 学号='200206002') and 成绩> Any(select 成绩From 成绩表Where 学号='200206002') 题45 列出没有参加任何选修课的学生清单
Select *
From 学生表
Where not exists(select *
From 成绩表
where 成绩表.学号=学生表.学号)
题46 列出没有选修了课程‟C801‟的学生清单
Select *
From 学生表
Where not exists(select *
From 成绩表
Where 成绩表.学号=学生表.学号and 课程号='c801')
题47 列出年龄最大的学生名单
Select学号,姓名
From学生表
Where年龄=(select max(年龄)
From学生表
)
题48 按顺序显示年龄超过平均年龄的学生名单
Select*
From学生表
Where年龄>(select avg(年龄)
From学生表)
Order By 年龄
题49 显示计算机系学生或选修…C803‟的学生名单
Select *
From 学生表
Where 所在院系='计算机'
Union
Select 学生表.*
From 学生表,成绩表
Where 成绩表.学号=学生表.学号and 课程号='c803'
题50列出每一门课的最高成绩
Select 课程号,max(成绩) '最高成绩'
From 成绩表
Group by 课程号
题51列出姓名重复的学生姓名和每一重名人数
Select 姓名,COUNT(姓名) '重名人数'
From 学生表
group by 姓名
Having count(*)>1
题52按每门课显示成绩顺序
Select 课程号,成绩
From 成绩表
Order by课程号,成绩
题53显示软件2班…C语言‟的成绩顺序
Select 学生表.学号,姓名,课程名,成绩
From 成绩表,学生表,课程表
Where 成绩表.学号=学生表.学号and 课程表.课程号=成绩表.课程号and 课程名='c语言' and 班级名='软件2班'
Order By 成绩Desc
题54查询即选修了…C801‟也选修了…C802‟课程的学生学号
Select A.学号
From 成绩表A,成绩表B
Where A.学号= B.学号And A.课程号='C801' and B.课程号='C802'
题55 查询学生成绩,要求输出学号,姓名,课程名,成绩,教师名
Select Distinct 学生表.学号,姓名,课程表.课程名,成绩,教师名
From 学生表,成绩表,授课表,课程表
Where 学生表.学号=成绩表.学号and 成绩表.课程号=授课表.课程号and 课程表.课程号=授课表.课程号
题56 查询选修了全部课程的学生名
select 姓名,count(课程号) '所选课数'
from 学生表,成绩表
where 学生表.学号=成绩表.学号
group by 成绩表.学号,姓名
having count(课程号)=(select count(课程号)
from 课程表)
题57 查询选修了C801成绩大于80并且也选修了C802成绩大于90的学号
Select A.学号
From 成绩表A,成绩表B
Where A.学号= B.学号And A.课程号='C801' And A.成绩>80
And B.课程号='C802' And B.成绩>90
题58 创建一个新学生表,要求有4个子段,学生学号,学生姓名,学生性别,所在院系.将学生表中计算机系或女生写入到该表中,并显示
--创建新学生表
CREATE TABLE 新学生表
(学生学号char(9) NOT NULL PRIMARY KEY,
学生姓名char(8),
学生性别char(2),
所在院系char(10),
)
GO
--插入记录
INSERT
INTO 新学生表(学生学号,学生姓名,学生性别,所在院系) SELECT 学号,姓名,性别,所在院系
FROM 学生表
WHERE 所在院系='计算机' OR 性别='女'
GO
--显示信息
SELECT *
FROM 新学生表
题59 将计算机系的学生成绩加1分
Update 成绩表
Set 成绩=成绩+1
Where '计算机'=(Select 所在院系
From 学生表
Where 学生表.学号=成绩表.学号)
题60 将数据库原理课程成绩加1分
Update成绩表
Set成绩=成绩+1
Where'数据库原理'=(select课程名
from课程表
where课程表.课程号=成绩表.课程号)题61 删除软件2班学生成绩小于60分的记录
delete
From 成绩表
where 学号in (select 学号
from 学生表
where 班级名='软件2班') and 成绩<60
题62 在学生分类表中创建学号的聚簇索引
Create clustered index 学号on 学生表(学号)
题63 在学生表中创建…姓名‟的非聚簇索引\
Create index 姓名on 学生表(姓名)
题64 在课程表中建立…课程名‟的唯一索引
Create unique index 课程名on 课程表(课程名)
题65 在学生表中创建…学号‟与…姓名‟的复合索引
Create index 学号姓名on 学生表(学号,姓名)
题66 在学生表中创建…入学年份‟与…年龄‟的复合索引Create index 入学年份年龄on 学生表(年龄,入学年份)。