`

数据库练习题(学生课程表)

    博客分类:
  • SQL
SQL 
阅读更多
创建表
DROP TABLE IF EXISTS student;
CREATE TABLE student(
sno int auto_increment primary key,
sname varchar(8),
ssex varchar(3),
sage int ,
sclass varchar(6)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO student(sname,ssex,sage,sclass) VALUES('李勇','男',20,'y01');
INSERT INTO student(sname,ssex,sage,sclass) VALUES('刘晨','男',21,'y02');
INSERT INTO student(sname,ssex,sage,sclass) VALUES('王敏','女',19,'y02');
INSERT INTO student(sname,ssex,sage,sclass) VALUES('张力','男',25,'y05');

DROP TABLE IF EXISTS course;
CREATE TABLE course(
cno int auto_increment primary key,
cname varchar(20),
ccredit int
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO course(cname,ccredit) VALUES('C语言',5);
INSERT INTO course(cname,ccredit) VALUES('数据库',5);
INSERT INTO course(cname,ccredit) VALUES('开发模式_VB',5);

DROP TABLE IF EXISTS sc;
CREATE TABLE sc(
sno int references student(sno) on delete cascade,
cno int references course(cno) on delete cascade,
grade int
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO sc VALUES(1,1,90);
INSERT INTO sc VALUES(1,2,95);
INSERT INTO sc VALUES(2,1,55);
INSERT INTO sc VALUES(4,3,null);


练习加总结:
			
1、查出全体同学的学号、姓名
select sno,sname from student;
2、查询全体同学的姓名学号班级(按顺序输出)
select sname,sno,sclass from student;
3、查询全体同学的记录(显示所有行)
select * from student;
4、查询全体同学的姓名及出生年份
select sname,(2010-sage) as '出生年份' from student ;
5、查询全体同学姓名出生年份班级(班级要用小写字母lower函数)
select sname,2010-sage as '出生年份',lower(sclass) from student;
6、查询全体同学的姓名/出生年份/所在班级列为YearOfBirth
select sname,2010-sage YearOfBirth,sclass from student;
7、查询选中学员的所在班级并且去掉重复行用distinct
select distinct sclass from student;
8、查询Y02班全体同学名单
select * from student where sclass='y02';
9、查询所有年龄在20岁一下的同学姓名及年龄
select sname,sage from student where sage<20;
10、查询考试不及格的同学的姓名及成绩
select s.sname,sc.grade from student s,sc where s.sno = sc.sno and sc.grade <60;
11、查询年龄在19-20岁(包括19、20)之间的同学姓名、班级、年龄
select sname,sclass,sage from student where sage in (19,20);(19、20 比较特殊选项少可以使用 in)
select sname,sclass,sage from student where sage between 19 and 20;
select sname,sclass,sage from student where sage>=19 and sage<=20;
12、查询年龄不在19-20岁之间的同学姓名、班级、年龄
select sname,sclass,sage from student where sage not in (19,20);
select sname,sclass,sage from student where sage not between 19 and 20;
select sname,sclass,sage from student where sage<19 or sage>20;
13、查询y02班级和y05班的同学的姓名、性别
select sname,sclass from student where sclass in ('y02','y05');
select sname,sclass from student where sclass='y02' or sclass='y05';
14、查询不是y02或者y05班的同学的姓名、性别
select sname,sage from student where sclass not in('y02','y05');
select sname,sage from student where sclass!='y02' and sclass!='y05';
select sname,sage from student where not sclass='y02' and not sclass='y05';
15、查所有姓刘的同学的姓名、学号、性别( " % "表示一个或者多个," _ "表示只占一个字符)
select sname,sno,ssex from student where sname like'刘%';
16、查所有姓张且全名只有2个汉子的同学的所有信息
select * from student where sname like'张_';
17、某些学生未考试查缺成绩的同学的学号和课程号
select sno,cno,grade from sc where grade is null;
18、查询所有成绩的同学的学号、课程号和成绩
select sno,cno,grade from sc where grade is not null;
19、查y02班年龄在20岁一下的姓名和年龄
select sname,sage from student where sclass='y02' and sage<20;
20、查选修1号课程的同学的学号和成绩,按成绩降序排序
select sno,grade from sc where cno=1 order by grade desc;
21、查全体同学信息查询结果按所在班级的班级名称按降序排列,同班同学按年龄升序排列
select * from student order by sclass desc,sage asc; 
22、查询学员的总人数
select count(sno) from student; 
23、查选修课程学院人数
select count(*) from sc;
24、统计1号课的学院平均成绩
select avg(grade) 平均成绩 from sc where cno=1;
25、查选修1号课和同学最高成绩
select max(grade) from sc where cno=1;
26、求各个课程号及相应选课人数
select cno,count(*) 选课人数 from sc group by cno;
27、查选取1门以上课程的同学学号和课程个数
select sno,count(cno) from sc group by sno having count(cno)>1;
28、查每个学员及其选修课程情况
select sno,cno from sc;
29、查每个学员及其选修课程情况对没有选课的也要输出其姓名、学号、性别、班级(注意:是作外连接student是主表)
select st.sname,st.sno,st.ssex,st.sclass,sc.cno,sc.grade 
from student st left join sc on
st.sno = sc.sno order by st.sname;
30、查选取2号课程且成绩在90分以上的同学
select * from sc where cno=2 and grade>90;
31、查询每个同学学号姓名,选课程名称及其成绩
select stu.sno,stu.sname,c.cname,sc.grade
from student stu join sc on stu.sno = sc.sno
join course c on c.cno = sc.cno;
或者
select stu.sno,stu.sname,c.cname,sc.grade
from student stu,course c,sc
where stu.sno=sc.sno and c.cno= sc.cno
order by sc.cno  desc;
32、查与刘晨在一个班的同学
select * from student where sclass=(select sclass from student where sname='刘晨');
33、选取C语言的同学学号和姓名
select s.sno,s.sname 
from student s join sc on s.sno=sc.sno
join course c on sc.cno=c.cno
where c.cname='C语言';
或者
select sno,sname from student where sno in 
(select sno from sc where cno in
(select cno from course where cname='C语言'));
34、查其他班级中比y02班某一同学大的同学姓名和年龄
select sname,sage from student
where sclass<>'y02' and
sage > (select min(sage) from student where sclass='y02');
或者(加入 any 关键字)
select sname,sage from student
where sclass<>'y02' and
sage >any (select sage from student where sclass='y02');
35、查其他班中比y02班同学全部都大的同学姓名和年龄
select sname,sage from student
where sclass!='y02' and
sage > (select max(sage) from student where sclass='y02');
或者(加入 all 关键字)
select sname,sage from student
where sclass!='y02' and
sage >all (select sage from student where sclass='y02');
36、查选取1号课程的学员的姓名
(在与查询的集合的包含关系时,最好使用 in 、any、all)
select s.sname from student s,sc
where s.sno = sc.sno and sc.cno=1;
或者(子查询)
select sname from student where sno in
(select sno from sc where cno=1);
37、查没有选取1号课程的学员的姓名(注意:要过滤已经选取过1号的同学,因为可能某同学多选修课程)
说明:如果是过滤集合,就只能用 in/all/any
select sname from student where sno not in
(select sno from sc where cno=1);
38、查y02班同学及年龄不大于19岁的学员(union)
select * from student where sclass='y02' union
select * from student where sage<=19;
解析:y02班级的同学与全年纪年龄不大于19岁的学生,而(sage<=19 and sclass='y02')表示为
y02班级同学“且”年龄不大于19岁的同学,与题意不符。所以下面的语句是错误的,因为范围没有确定好
select * from student where sclass='y02' and sage<=19;
说明:union 用来两个集合求并集(合并两个集合,并且除去重复的记录)
39、查询选取1号课程或者2号课程的同学学号
select distinct sno from sc where  cno=1 or cno=2;
或者
select distinct sno from sc where cno in (1,2);
40、将4号学员的年龄改为23岁
update student set sage=23 where sno=4;
41、将所有同学的年龄增加1岁
update student set sage=sage+1;
42、y02班的同学的成绩改为100
update sc set grade=100 where sno in (select sno from student where sclass='y02');
43、删除学号为1的同学记录
delete from student where sno=1;
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    数据库练习题.docx

    2.课程表 Course(CID,Cname,TID) --CID --课程编号,Cname 课程名称,TID 教师编号 3.教师表 Teacher(TID,Tname) --TID 教师编号,Tname 教师姓名 4.成绩表 SC(SID,CID,score) --SID 学生编号,CID 课程编号,score 分数

    SQL数据库练习题

     课程表:由课程号、课程名、先修课程号、学时、学分五个属性组成,关系模式为:C(Cno,Cname,Cpno,Ctime,Ccredit), 其中 Cno 为主码。  选修表:有学号、课程号、成绩三个属性组成,关系模式为:SC(Sno,Cno,...

    数据库练习题

    数据库练习题,都是一些经典的题型,对学习数据库很有帮助

    信息系统开发与管理——数据库练习题.doc

    教学管理涉及的实体有: 教员:职工号、姓名、年龄、职称 学生:学号、姓名、年龄、性别 课程:课程号、课程名、学时数 这些实体间的联系如下:一个教员只讲授一门课程,一门课程可由多个教员讲授;一 个学生学习多...

    SQL数据库操作语句习题数据库

    SQL数据库操作语句习题,三个基本表:学生表(Student)、课程表(Course)、学生选课表(SC)。

    数据库编程基础知识习题答案

    数据库编程基础知识习题答案数据库编程基础知识习题答案数据库编程基础知识习题答案

    数据库习题(二)1.pdf

    《数据库原理与应用》第二章习题。试述关系模型的三个组成部分。定义并理解下列术语,说明它们之间的联系与区别: (1)域,笛卡尔积,关系,元组,属性; (2)主码,候选码; (3)关系模式,关系,关系数据库...

    广工数据库系统~期末习题.docx

    数据库系统~期末习题案例解析 设计题: 1.图书出版管理数据库中有两个基本表: 图书 (书号,书名,作者编号,出版社,出版日期); 作者 (作者编号,作者名,年龄,地址); 试用SQL语句写出下列查询:检索年龄低于...

    mysql 数据库练习50题

    sql语句练习,支持mysql. 表包含:老师、学生、课程、成绩、年级、班级、老师教的班级表 多表数据查询的sql练习。

    数据库概论习题参考答案.docx

    三个实体型之间的多对多联系和三个实体型两两之间的三个多对多联系等价吗为什么 (17页) 课程联系学生 课程 联系 学生 联系联系 联系 联系 教室 教室 课程联系学生教室 课程 联系 学生 教室 mn m n l l 语义不同 12...

    数据库实验三答案

    2.在数据库university中创建学生表student、课程表course、选课表sc和教课表sections。要求为每个属性定义恰当的数据类型和长度,并为每张表指主键。 3.将相应的数据用INSERT命令输入到相应的表中。 4.完成实验后将...

    数据库精选习题及答案

    这是一个word文本很有用的,希望大家喜欢

    计算机二级mysql数据库程序设计练习题(五).doc

    计算机二级mysql数据库程序设计练习题(五)- 卷面总分:60分 答题时间:60分钟 试卷题量:30题 一、单选题(共29题,共58分) 1.要消除查询结果集中的重复值,可在SELECT语句中使用关键字______。 A.UNION B....

    数据库原理(第5版)

    学生能否运用所学的知识非常重要,因此每章都提供了重要术语表(本版新增)、复习题、练习题(包括针对“Access工作台”的练习题)和三个贯穿本书始终的项目。如果学生阅读并理解了每一章的内容,就应能掌握每个重要术语...

    《MySQL数据库入门》教学设计.docx

    三、归纳总结,随堂练习,布置作业 (1)对课堂上讲解的知识点进行总结,使用博学谷系统中的随堂练习题巩固本节课的知识点。 (2)让学生课下动手体验,安装MySQL。 第二课时 (MySQL的启动、登陆、相关命令以及...

    sql数据库设计课程习题管理系统.doc

    " "课程 "课程号 "字符型6"课程表存放课程有关信息 " "测验卷 "试卷号 "字符型8"测验卷的详细信息填入此表中 " "课程负责"职工号 "字符型8"课程负责人表所存放的是课程负 " "人 " " "责人的信息 " 二、概念结构设计...

    数据库表习题

    学生成绩管理有三个表,学生跟课程是一对多的关系; S(Sno,Sname)学生关系,Sno为学号,Sname为姓名 C(Cno,Cname,Cteacher)课程关系,Cno为课程号,Cname为课程名,Cteacher为任课老师 SC(Sno,Cno,Scgrade...

    网络数据库课件ppt(web数据库ppt)

    《网络数据库技术》目的是通过本课程的学习使学生能了解网络数据库的基本知识、基本原理和基本技术,学会网络数据库应用系统的设计方法和步骤。 本课程的学习任务是,掌握网络数据库系统一些基础知识和基本要点,...

Global site tag (gtag.js) - Google Analytics