数据库精选习题
1、
2、
创建数据库 MYDB
解答:create database MYDB
创建学生表 student
(sno,sname,ssex,sage,sclass)
解答:create table student
(sno int primary key ,
sname varchar(8),
ssex varchar(3),
sage int ,
sclass varchar (6))
3、
创建课程表 course(cno,cname,ccredit)
解答:create table course
(cno int primary key,
cname varchar(20),
ccredit int )
4、
创建选课表 SC(sno,cno,grade)
解答:create table sc
(sno int foreign key references
student(sno),
cno int foreign key references
course(cno),
grade int)
5、
添加数据(student)
1
2
3
4
李勇
刘晨
王敏
张力
男
男
女
男
20
21
19
25
Y01
Y02
Y02
Y05
解答:insert into student values (1,'李勇','
男',20,'y01')
insert into student values (2,'刘
晨','男',21,'y02')
insert into student values (3,'王
敏','女',19,'y02')
insert into student values (4,'张
力','男',20,'y05')
添加数据(course
6、
1
2
3
C 语言
数据库
开发模式_VB
5
5
5
答:insert into course values (1,'数据库',5)
insert into course values (2,'C 语言',5)
insert into course values (3,'开发模式
-VB',5)
7、
添加数据(SC)
1
1
2
4
1
2
1
3
90
95
55
null
解答:insert into SC values (1,1,5)
insert into SC values (1,2,5)
insert into SC values (1,1,5)
insert into SC values (1,3,5)
查询全体同学的学号,姓名
解答:select sno,sname from student
查询全体同学的姓名学号班级(按顺序输出)
解答:select sname,sno,sclass from
student
8、
9、
10、 查询全体同学的记录(显示所有行)
解答:select *from student
11、 查询全体同学的姓名及出生年份
解答:select sname,2006-sage 出生年份
from student
12、 查询全体同学姓名出生年份班级(班级要用小写
字母 LOWER 函数)
解答:select sname,2006-sage 出生年
份 ,lower(sclass) from student
13、 查询全体同学的姓名/出生年份/所在班级列为
YearOfBirth
解答:select sname,2006-sage
YearOfBirth ,sclass from student
14、 查询选课中学员的学号并且去掉重复行用
distinct
解答:select distinct sno from sc
15、 查 Y02 班全体同学名单
解答:select sno from student where
sclass='y02'
16、 查所有年龄在 20 岁以下的同学姓名及年龄
解答:select sname,sage from student
where sage<20
17、 查考试不合格的同学学号
解答:select sno from sc where grade<60
18、 查年龄在 19-20 岁(包括 19-20)之间的同学姓名
班级年龄
解答:select sname,sclass,sage from
student where sage>=19 and sage<=20
19、 查年龄不在 19-20 岁之间的同学的姓名,班级,年
龄
解答:select sname,sclass,sage from
student
and 20
where sage not between 19
20、 查 Y02 班和 Y05 班的同学姓名,性别
解答:select sname ,ssex from student
where sclass='y02' or sclass='y05'
21、 查不是 Y02 班和 Y05 班的同学的姓名,性别
解答:select sname,ssex from
student where
not sclass='y02' and not
sclass='y05'
22、 查所有姓刘的同学的姓名,学号,性别
解答:select sname,sno,ssex from student
where sname like '刘%'
23、 查所有姓张且全名为 2 个汉字的学生姓名
解答:select sname,sno,ssex from student
where sname like '张_'
24、 某些学生未考试查缺少成绩的同学的学号和课程
号
解答:select sno,cno from sc where grade
is null
25、 查所有成绩的同学的学号,课程号,和成绩
解答:select sno,cno from sc where grade
is not null
26、 查 Y02 班年龄在 20 岁以下的姓名和年龄
解答:select sname,sage from student
where sclass='y02' and sage<20
27、 查选修 1 号课程的同学的学号和成绩,按降序排
列
解答:select sno,grade from sc where
cno=1 order by grade desc
28、 查全体同学信息查询结果按所在班级的班级名称
按降序排列,同班同学按年龄升序排列
解答:select *from student order by
sclass desc , sage asc
29、 查学员总人数
解答:select count(*) from student
30、 查选修课程学员人数
解答:select count(*) from sc
31、 统计 1 号课的学员平均成绩
解答:select avg(grade) from SC where
cno=1
32、 查选修 1 号课和同学最高成绩
解答:select max(grade) from SC where
cno=1
33、 求各个课程号及相应选课人数
解答:select count(*) from SC group by cno
34、 查选取 1 门以上课程的同学学号
解答:select sno from SC group by sno
having count(cno)>1
35、 查每个学员及其选修,课程情况
解答:select sno,cno from SC
36、 查每个学员及其选修课程情况对没有选课的也要
输出
其姓名,学号,性别,班级
解答:select
a.sno,a.sname,a.sage,a.ssex,a.sclass,sc.
cno,sc.grade
from student a left outer join sc on
a.sno=sc.sno order by a.sname
37、 查选取 2 号课程且成绩在 90 分以上同学
解答:select *from SC where cno=2 and
grade>9
38、 查询每个同学学号姓名,选课程名称及成绩
解答:select
a.sno,a.sname,sc.cno,sc.grade from
student a left outer join SC on
a.sno=SC.sno order by SC.sno
39、 查与刘晨在一个班的同学
解答:select sname from student where
sclass in
(select sclass from student
where sname='刘晨')
40、 选取 C 语言的同学学号和姓名
解答:select sno,sname from student
where sno in (select sno from SC