数据库题库.docx
- 文档编号:13960669
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:18
- 大小:27.60KB
数据库题库.docx
《数据库题库.docx》由会员分享,可在线阅读,更多相关《数据库题库.docx(18页珍藏版)》请在冰点文库上搜索。
数据库题库
数据库题库
设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询计算机系学生的姓名、所选的课程号和成绩。
selectsname,cno,gradefromstudentjoinscon=wheresdept=‘计算机系’ 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询计算机系年龄大于20的学生详细信息。
select*fromstudentwheresdept=‘计算机系’andsage>20 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询第3学期开设的学分为4的课程名。
selectcnamefromcoursewheresemester=3andcreidt=4 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询第2~4学期开设课程的课程名、学分和开课学期。
selectcname,credit,semesterfromcoursewheresemesterbetween2and4 设有课程表:
Course(Cno,Cname,Credit,Semester)。
写出在Course表中插入一行新数据的SQL语句,课程号为C100,课程名为Java,开课学期未定,学分为3。
insertintocoursevalues(‘C100’,’Java’,3,null) ’设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询奇数学期开设的课程名、开课学期和学分。
selectcname,credit,semesterfromcoursewheresemesterin(1,3,5,7) 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询计算机系成绩在80~90之间的学生姓名、课程名和成绩。
selectsname,cname,gradefromStudentjoinSCon=joinCourseon= wheresdept=‘计算机系’andgradebetween80and90 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 写出在Student表中插入一行新数据的SQL语句,学号为S100,姓名:
新生,性别:
男,年龄:
19,所在系未定。
insertintoStudentvalues(‘S100’,’新生’,’男’,19,null) 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 统计每个系的女生人数,列出系名和女生人数。
selectsdept,count(*)女生人数fromstudentwheressex=‘女’groupbysdept 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 统计每个系的选课人数,列出系名和选课人数。
selectsdept,count(distinct)选课人数fromstudentsjoinscon=groupbysdept 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept)将计算机系学生年龄加1。
updatestudentsetsage=sage+1wheresdept=‘计算机系’ 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 统计计算机系每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。
select,count(*)选课门数,sum(grade)总成绩fromstudentsjoinscon= wheresdept=‘计算机系’groupbyorderbycount(*)asc 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询选修了Java课程的学生姓名和所在系。
selectsname,sdeptfromstudentsjoinscon=joincoursecon=wherecname=‘Java’ 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果。
selectsname,cno,gradefromstudentsjoinscon=wheregrade>80orderbygradedesc 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询选课门数最多的前2位学生,列出学号和选课门数。
selecttop2sno,count(*)选课门数fromscgroupbysnoorderbycount(*)desc 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询选课人数最少的2门课程,列出课程号和选课人数。
selecttop2withties,Count()选课人数fromcoursecleftjoinscon= groupbyorderbycount()asc 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询哪些课程没有学生选,列出课程号和课程名。
select,cnamefromcoursecleftjoinscon=whereisnull 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询计算机系哪些学生没有选课,列出学生姓名。
selectsnamefromstudentsleftjoinscon=wheresdept=‘计算机系’andisnull 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询计算机系Java考试成绩最高的前3名学生的姓名和Java成绩。
selecttop3withtiessnamefromstudentsjoinscon=joincoursecon=wherecname=‘Java’andsdept=‘计算机系’orderbygradedesc 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade)查询年龄最大的男生姓名和年龄。
selectsname,sagefromstudentwheresagein(selectmax(sage)fromstudentwheressex=‘男’)andssex=‘男’ 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询C001课程的考试成绩高于该课程平均成绩的学生的学号和C001课成绩。
selectsno,gradefromscwherecno=‘c001’andgrade>(selectavg(grade)fromscwherecno=‘c001’) 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 删除Java考试成绩小于50的学生的全部选课记录。
(请用子查询形式实现)deletefromscwheregrade 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 删除计算机系Java成绩不及格学生的Java选课记录。
(请用子查询形式实现)deletefromsc wheresnoin(selectsnofromstudentwheresdept=‘计算机系’) andcnoin(selectcnofromcoursewherecname=‘Java’) andgrade 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 删除选课人数少于10人的课程。
deletefromcoursewherecnoin(selectcnofromcoursecleftjoinscon=groupbyhavingcount() 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询计算机系每个学生的Java考试情况,列出学号、姓名、Java成绩和成绩情况,其中成绩情况的显示规则为:
如果成绩大于等于90,则成绩情况为“好”;如果成绩在80~89,则成绩情况为“较好”;如果成绩在70~79,则成绩情况为“一般”;如果成绩在60~69,则成绩情况为“较差”;如果成绩小于60,则成绩情况为“差”。
select,sname,grade,成绩情况=casewhengrade>=90then‘好’ whengradebetween80and89then‘较好’whengradebetween70and79then‘一般’whengradebetween60and69then‘较差’whengrade fromstudentsjoinscon=joincoursecon=wherecname=‘Java’ 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 统计每个学生的选课门数,列出学号、选课门数和选课情况,其中选课情况显示规则如下:
如果选课门数大于等于6,则选课情况为“多”;如果选课门数在3~5,则选课情况为“一般”;如果选课门在1~2,则选课情况为“偏少”。
如果没有选课,则选课情况为“未选课”。
select,count()选课门数,选课情况=casewhencount()>=6then‘多’ whencount()between3and5then‘一般’whencount()between1and2then‘偏少’else‘未选’end fromstudentsleftjoinscon=groupby 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 统计每个系Java课程的考试情况,列出系名和考试情况,其中考试情况为:
如果Java平均成绩大于等于90,则考试情况为“好”;如果Java平均成绩在80~89分,则考试情况为“良好”;如果Java平均成绩在70~79分,则考试情况为“一般”;如果Java平均成绩低于70分,则考试情况为“较差”。
selectsdept,考试情况=case whenavg(grade)>=90then‘好’ whenavg(grade)between80and89then‘良好’whenavg(grade)between70and79then‘一般’whenavg(grade) fromstudentsjoinscon=joincoursecon=wherecname=‘Java’groupbysdept 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 修改全部课程的学分,修改规则如下:
如果是第1~2学期开设的课程,则学分增加5分;如果是第3~4学期开设的课程,则学分增加3分;如果是第5~6学期开设的课程,则学分增加1分;其他学期开设的课程学分不变。
updatecoursesetcredit=credit+casewhensemesterin(1,2)then5whensemesterin(3,4)then3whensemesterin(5,6)then1else0End 为描述乘客对车票的订票情况,定义了三张表:
车票表、乘客表和订票情况表,各表结构如下:
1.乘客表 乘客编号:
小整型,主键。
姓名:
普通编码定长字符型,10位长,非空。
身份证号:
普通编码定长字符型,6位长,第一位取值为1,后五位取值均为0~9的整数。
2.车票表 车次:
普通编码定长字符型,4位长,主键。
票价:
整数,非空。
起点:
普通编码定长字符型,最多存4个汉字。
终点:
普通编码定长字符型,最多存4个汉字。
种类:
统一字符编码定长字符型,最多存2个汉字,取值范围为:
{直达、特快、普快、慢车}。
; 发车时间:
普通编码定长字符型,5位长,取值格式为:
2位时:
2位分,其中时和分可以是任何字符。
3.订票表 乘客编号:
小整型,非空。
车次:
普通编码定长字符型,4位长,非空。
订票日期:
日期型,非空。
订票数量:
小整型,默认值为1。
其中:
为主键。
乘客编号为引用乘客表的外键,车次为引用车票表的外键。
写出创建这三张表的SQL语句,要求在创建表时定义表中的全部约束。
CREATETABLE乘客表( 乘客编号smallintprimarykey,姓名char(10)notnull, 身份证号char(6)check(身份证号like‘1[0-9][0-9][0-9][0-9][0-9]’)) createtable车票表( 车次char(4)primarykey,票价intnotnull,起点char(8),终点char(8), 种类nchar
(2)check(种类in(‘直达’,’特快’,’普快’,’慢车’)),发车时间char(5)check(发车时间like‘__:
__’)) createtable订票表( 乘客编号smallintnotnull,车次char(4)notnull, 订票日期smalldatetimenotnull,订票数量smallintdefault1, primarykey(乘客编号,车次,订票日期), foreignkey(乘客编号)references乘客表(乘客编号),foreignkey(车次)references车票表(车次)) 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询Java考试成绩最高的前三个成绩,列出学生姓名、所在系和成绩。
selecttop3withtiessname,sdept,gradefromstudentsjoinscon= joincoursecon= wherecanme=‘Java’orderbygradedesc 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 统计每个学生的选课门数,并按选课门数降序显示结果。
select,count()选课门数fromStudentsleftjoinSCon= groupbyorderbycount()asc 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询计算机系总成绩超过200分的学生的学号和总成绩。
select,sum(grade)总成绩fromstudentsjoinscon=groupbyhavingsum(grade)>200 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 列出“Java”考试成绩前三名的学生的学号、姓名、所在系和Java考试成绩。
selecttop3withties,sname,sdept,gradefromstudentsjoinscon= joincoursecon= wherecname=‘Java’orderbygradedesc 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询第3学期开设的没人选的课程,列出课程名和学分。
selectcname,creditfromcourse wherecnonotin(selectcnofromsc)andsemester=3 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade)查询计算机系学生中,考试成绩高于计算机系学生总平均成绩的学生的姓名、考试的课程名和成绩。
selectsname,cname,gradefromstudentsjoinscon= joincoursecon= wheresdept=‘计算机系’andgrade selectavg(grade)fromscjoinstudentson=wheresdept=‘计算机系’) 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC(Sno,Cno,Grade) 查询Java考试成绩最低的学生的姓名、所在系和Java成绩。
selecttop1withtiessname,sdept,gradefromstudentsjoinscon= joincoursecon= wherecname=‘Java’orderbygradeasc 设有学生表:
Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:
Course(Cno,Cname,Credit,Semester), 选课表:
SC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 题库
![提示](https://static.bingdoc.com/images/bang_tan.gif)