书上原表

 --1.查询选课表的全部内容select * from SC;--2.查询计算机系的学生的姓名、年龄SELECT Sname,Sage FROM Student where Sdept='计算机系';--3.查询成绩在70~80分之间的学生的学号、课程号和成绩select Sno,Cno,Grade from SC where Grade between 70 and 80;--4.查询计算机系学生年龄在18~20之间且性别为男的学生的姓名、年龄select Sname,Sage from Student where Sage between 18 and 20 and Sdept='计算机系' and Ssex='男';--5.查询课程号为‘c001’的课程号的最高分数select max(Grade) from SC where Cno='c001';--6.查询计算机系学生的最大年龄和最小年龄select max(Sage),min(Sage) from Student where Sdept='计算机系';--7.统计每个系的学生人数select Sdept,count(*)人数 from Student Group by Sdept;--8.统计每门课程的选课人数和考试最高分。select Cno,count(*)选课人数,max(Grade) from SC Group by Cno;--9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。select Sno,count(*)选课门数,sum(Grade)总成绩 from SC  Group by Sno order by count(*)asc;
--10.查询总成绩超过200分的学生,要求列出学号、总成绩。
select Sno,sum(Grade)总成绩 from SC Group by Sno  having sum(Grade)>200;
--11.查询选修“C002”号课程的学生的姓名·所在系。
select Sname,Sdept from Student  s join SC on s.Sno=SC.Sno where Cno='c002';
--12.查询成绩80分以上:的学生的姓名。课程号和成绩,并按成绩降序排列结果。
select Sname,Cno,Grade from Student,SC where Student.Sno=SC.Sno and Grade>80 order by Grade;
select Sname,Cno,Grade from Student s join SC on s.Sno=SC.Sno where Grade>80 order by Grade;
--13.查询哪些课程没有学生选修,要求列出课程号和课程名。
--select Cname,Course.Cno from Course,SC  where Course.Cno!=SC.Cno;
SELECT Student.Sno, Student.Sname, Student.Sdept FROM StudentLEFT JOIN SC ON SC.Sno = Student.SnoWHERE SC.Cno IS NULL
--14、查询与Java在同一学期开设的课程的课程名和开课学期。
SELECT Cname, Semester FROM CourseWHERE Semester IN (SELECT Semester FROM Course WHERE Cname = 'Java')AND Cname != 'Java'
--15.查询与李勇年龄相同的学生的姓名。所在系和年龄。
select Sname,Sdept,Sage from Student where Sage =(select Sage from Student where Sname='李勇');
--( 1)查询选修了“c001”号课程的学生的姓名·所在系。
select Sname,Sdept from Student where Sno in(select Sno from SC where Cno='c001');--in
--(2)查询数学系成绩80分以上的学生的学号、姓名。课程号和成绩。
--select SC.Sno,Student.Sname,SC.Cno,SC.Grade from SC,Student where Student.Sno=SC.Sno and Student.Sdept='数学系' and SC.Grade>=80;
SELECT S.sno,sname,SC.Cno,SC.Grade
FROM student S
JOIN Sc ON S.sno=Sc.sno
WHERE sdept='数学系' and Grade>=80
--(3)查询计算机系考试成绩最高的学生的姓名.
--select Sname from Student,SC where Student.Sdept='计算机系' and SC.Grade=(select max(Grade) from SC ) and Student.Sno=SC.Sno;
SELECT S.sname FROM Student S
JOIN Sc ON S.sno=Sc.sno
where  grade = (select MAX(grade) from sc where S.Sdept = '计算机系'
)
--(4)查询年龄最大的男学生的姓名·年龄。
select Sname,Sage from Student where Ssex='男' and Sage= (select max(Sage) from Student);
--(5)查询数据结构考试成绩最高的学生的姓名。所在系、性别和成绩。
select Sname,Sdept,Ssex,Grade from Student,SC where  Student.Sno=SC.Sno and Grade=(select max(Grade)from SC,Course where SC.Cno=Course.Cno and Course.Cname='数据结构') ;
--17.查询没有选修Java课程的学生的姓名·所在系。
select Sname,Sdept from Student,SC,Course where Student.Sno=SC.Sno and Course.Cno=SC.Cno and Course.Cname='java';
--18.查询计算机系没有选课的学生的姓名·性别。
select Sname, Ssex from Student S
left join SC on S.Sno = SC.Sno
where Sdept = '计算机系' and SC.Cno is NULL
--select Sname,Ssex from Student where Sdept='计算机系' and (Sno  not in (select Sno from SC));
--19.创建一个新表,表名为test_t,其结构为(COLl,COL2, COL 3),其中,
-------COL1:整型,允许空值。
-------COL2:字符型,长度为10,不允许空值。
-------COL3:字符型,长度为10,允许空值。
------试写出按行插入如下数据的语句Create table test_t(COL1    int,COL2    char(10) not null,COL3  char(10))
insert into test_t(COL2) values('B1');
insert into test_t values(1,'B2','C2');
insert into test_t values(2,'B3',null);
drop table test_t;------------------------------还原
--20.删除考试成绩低于50分的学生的选课记录。
delete from SC where Grade<50;
insert into SC values(1531101, 'c007', 45);------还原
--21.删除没人选的课程的基本信息。
delete from Course where Cno not in (select Cno from SC);---c010没了
insert  into    Course values('c004','大学英语',6,2)----------------------还原
insert  into    Course values('c010','计算机网络',5,6)
--22.删除讣算机系Java成绩不及格学生的Java选课记录。
delete from SC where Grade<60 and Sno in(select Sno from Student where Sdept='计算机系') and Cno in(select Cno from Course where Cname='java');
--------无需复原
--23.将第2学期开设的所有课程的学分增加2分
update Course set Credit=Credit+2 where Semester =2;
update Course set Credit=Credit-2 where Semester=2;----还原
--24.将Java 课程的学分改为3分。
update Course set Credit=3 where Cname='java';
update Course set Credit=2 where Cname='java';-------还原
--25.将计算机系学生的年龄增加1岁。
update Student set Sage=Sage+1 where Sdept='计算机系';
update Student set Sage=Sage-1 where Sdept='计算机系';---还原
--26.将信息系学生的“计算机文化学”课程的考试成绩加5分。
update SC set Grade=Grade+5 where Cno =(select Cno from Course where Cname='计算机文化学') and Sno in(select Sno from Student where Sdept='信息系');
update SC set Grade=Grade-5 where Cno =(select Cno from Course where Cname='计算机文化学') and Sno in(select Sno from Student where Sdept='信息系');---还原
--多表连接
--update SC set Grade = Grade+ 5
--from SC join Student S on SC.Sno = S.Sno
--join Course C on SC.Cno = C.Cno
--where Sdept = '信息系' and Cname = '计算机文化学'--27.查询每个系年龄大于等于20的学生人数,并将结果保存到一个新永久表Dept_Age 中。
/*
select Sdept, count(*) 学生人数 into Dept_Age from Student
where Sage>= 20
group by Sdept
drop table Dept_Age;*/
--28.查询计算机系每个学生的JAVA考试情况,列出学号、姓名。成绩和成绩情况,其中成绩
--------情况的显示规则为:
--------如果成绩大于等于90,则成绩情况为“好”;
--------如果成绩在80~89,则成绩情况为“较好”;
--------如果成绩在7O~79,则成绩情况为“一殷”;
--------如果成绩在60~-69,则成绩情况为“较差”;
--------如果成绩小于60,则成绩情况为“差”。select Student.Sno, Sname, Grade, 成绩情况=case when grade>= 90 then '好'when grade between 80 and 89    then '较好'when grade between 70 and 79    then '一般'when grade between 60 and 69    then '较差'else '差'endfrom Student,SC where Student.Sno=SC.Sno and Sdept='计算机系' and SC.Cno=(select Cno from Course where Cname='java');--from Student right join SC on Student.Sno = SC.Sno--join Course on Course.Cno = SC.Cno--where Sdept = '计算机系' and Cname = 'Java'--29.统计每个学生的选课门数(包括没有选课的学生),列出学号、选课门数和选课情况,其
--中选课情况显示规则为:
----如果选课门数大于等于6门,则选课情况为“多”;
----如果选课门数超过在3~~5门,则选课情况为“般”;
----如果选课门数在1~2门,则选课情况为“偏少”。
----如果没有选课,则选课情况为“未选课”。select S.Sno, count(Cno) 选课门数, casewhen count(Cno)>= 6        then '多'when count(Cno)>= 3        then '一般'when count(Cno)>= 1        then '偏少'else '未选课'
end 选课情况
from Student S left join SC on S.Sno = SC.Sno
group by S.Sno
order by count(Cno) desc--30.修改全部课程的学分,修改规则如下:
-------如果是第1~-2学期开设的课程,则学分增加5分:
-------如果是第3~-4学期开设的课程,则学分培加3分;
-------如果是第5~6学期开设的课程,则学分培加l分;
-------对其他学期开设的课程,学分不变。update Course set Credit = Credit+ casewhen Semester between 1 and 2    then '5'when Semester between 3 and 4    then '3'when Semester between 5 and 6    then '1'else '0'endupdate Course set Credit = Credit- case  -------还原when Semester between 1 and 2    then '5'when Semester between 3 and 4    then '3'when Semester between 5 and 6    then '1'else '0'end--31.查询“李勇”和“王大力”所选的全部课程,列出课程名、开课学期和学分,不包括重复的结果。--select Cname,Semester,Credit from Course
--where Cno in (select Cno from SC where Sno in(select Sno from Student where Sname='李勇' or Sname='王大力'))select Cname, Semester, Credit
from Course join SC on Course.Cno = SC.Cno
join Student on Student.Sno = SC.Sno
where Sname = '李勇'
union
select Cname, semester, Credit
from Course join SC on Course.Cno = SC.Cno
join Student on Student.Sno = SC.Sno
where Sname = '王大力'--32.查询在第3学期开设的课程中,“李勇”选了但“王大力”没选的课程,列出课程名和学分。--select Cname,Credit from Course
--where Semester=3 and Cno in(select Cno from SC where Sno =(select Sno from Student where Sname='李勇' ))
--and Cno not in(select Cno from SC where Sno =(select Sno from Student where Sname='王大力'))
select Cname, Credit
from Course join SC on Course.Cno = SC.Cno
join Student on Student.Sno = SC.Sno
where Sname = '李勇' and Semester= 3
except
select Cname, Credit
from Course join SC on Course.Cno = SC.Cno
join Student on Student.Sno = SC.Sno
where Sname = '王大力'--33.查询在学分大于3分的课程中,“李勇”和“王大力”所选的相同课程,列出课程名和学分。--select Cname,Credit from Course
--where Credit>3 and Cno in(select Cno from SC where Sno =(select Sno from Student where Sname='李勇'))
--and Cno  in(select Cno from SC where Sno =(select Sno from Student where Sname='王大力'))select Cname, Credit
from Course join SC on Course.Cno = SC.Cno
join Student on Student.Sno = SC.Sno
where Sname = '李勇' and Credit> 3
intersect
select Cname, Credit
from Course join SC on Course.Cno = SC.Cno
join Student on Student.Sno = SC.Sno
where Sname = '王大力' 

不一定对,但请大家有误必纠

数据库的应用(四):书上习题相关推荐

  1. 数据库查询语句(书上例题)

    /*[例3.11]向Student表增加"入学时间"列,其数据类型为日期型*/ alter table Student add Student_entrance DATE; /*[ ...

  2. c++primer书上习题date类的部分源代码(待整理)

  3. 数据库杂谈(四)——关系演算和E-R数据模型

    文章目录 3 形式化关系查询语言 3.2 关系演算和E-R数据模型 3.2.1 概述 3.2.2 元组关系演算 3.2.2.1 概述 3.2.2.2 形式化定义 3.2.2.3 表达式的安全性 3.2 ...

  4. 《数据库原理实验指导书》

    <数据库原理实验指导书> 河南科技大学软件学院 目录 实验规则 基本实验方法 实验环境 实验一 数据定义 实验二 数据更新 实验三 数据查询-简单查询和连接查询 实验四 数据查询-分组查询 ...

  5. 《数据库系统概论》第四版课后习题答案

    第1章 绪论 1 .试述数据.数据库.数据库系统.数据库管理系统的概念. 答: ( l )数据( Data ) :描述事物的符号记录称为数据.数据的种类有数字.文字.图形.图像.声音.正文等.数据与其 ...

  6. 数据库系统概论(第四版)习题解答

    数据库系统概论(第四版) 第1章 绪论 1 .试述数据.数据库.数据库系统.数据库管理系统的概念. 答:( l )数据( Data ) :描述事物的符号记录称为数据.数据的种类有数字.文字.图形.图像 ...

  7. 《机器学习》西瓜书课后习题9.4——python实现K-means算法

    <机器学习>西瓜书课后习题9.4--python实现K-means算法 9.4 试编程实现k均值算法,设置三组不同的k值.三组不同的初始中心点,在西瓜数据集4.0上进行实验比较, 并讨论什 ...

  8. GZFramwork数据库层《四》单据主从表增删改查

    同GZFramwork数据库层<三>普通主从表增删改查 不同之处在于:实例 修改为: 直接上效果: 项目源码下载地址:https://github.com/GarsonZhang/GZFr ...

  9. PHP将数组存入数据库中的四种方式

    最近突然遇到了一个问题,如何用PHP将数组存入到数据库中,经过自己的多方查找和研究,总结了以下四种方法: 1.implode()和explode()方式 2.print_r()和自定义函数方式 3.s ...

最新文章

  1. eureka心跳_Eureka工作原理及心跳机制
  2. hdu2435最大流最小割
  3. 小甲鱼Python课程18课课后题
  4. QCustomPlot使用手册(一)
  5. GetOpenFileName的简单使用实例
  6. linux redis可视化工具,几款开源的图形化Redis客户端管理软件
  7. HiveQL: 数据定义
  8. CY7C68013 USB接口相机开发记录 - 第一天:资料下载
  9. 修正的判定条件覆盖例题_硬核:嵌入式代码覆盖率统计方法和经验
  10. ATC空管系统的实时控制软件系统分析
  11. 【学堂在线数据挖掘:理论方法笔记】第二天(3.18)
  12. sicily 1295. 负权数
  13. ValueError: output parameter for reduction operation logical_and has too many dimensions ?
  14. wgs84坐标转换,地图拾取wgs84坐标工具推荐
  15. 减法公式运算法则_小学所有的运算定律和什么叫加法什么叫减法,乘法a+b=c什么的公式也要...
  16. 有关上传到APPStore上iphone5,5c,4s下载应用,出现该APP与设备不兼容问题
  17. 触动千亿电商市场 BitCherry星耀雅加达
  18. 东秦OJ_1841: 超级密码
  19. Hey AI,请写一首披头士风格的歌给我
  20. 机器人涂装工程师岗位英文缩写_公司职位及英文缩写大全

热门文章

  1. # 重要-即时通讯IM开源项目OpenIM关于版本管理及v2.3.0发布计划
  2. linux安装powerline字体,CentOS 7.3安装配置Powerline
  3. Excel中IF函数和AND函数结合使用进行多条件判断
  4. 给大家普及下 IP地址分类和网段区分的知识。
  5. 【论文笔记】基于Control Barrier Function的二次规划(QP)控制
  6. modbusTCP如何接入kepserver
  7. 有关微信分享,点击取消之后回调没有错误码返回的问题
  8. unipp怎么打包微信公众号_uni-app 打包 app
  9. 解决问题最有效的方法和技巧就是---花钱
  10. 卓越游戏体验,选择它吃鸡联盟都不在话下!