一 使用CREATE TABLE语句和INSERT INTO语句创建表和插入数据。

student表

course表

sc表

二 操作数据库

1.分别查询学生表和学生修课表中的全部数据。

SELECT * FROM student;

SELECT * FROM course;

2.查询成绩在70到80分之间的学生的学号、课程号和成绩。

SELECT sno,cno,grade FROM sc WHERE grade BETWEEN 70 AND 80;

3.查询100号课程成绩最高的分数。

SELECT MAX(grade) FROM sc WHERE cno = 100;

4.查询学生都选修了哪些课程,要求列出课程号。

SELECT DISTINCT c.cno,cname FROM course c,sc WHERE c.cno = sc.cno;

SELECT DISTINCT c.cno,cname FROM course c INNER JOIN sc on c.cno = sc.cno;

5.查询修了200号课程的所有学生的平均成绩、最高成绩和最低成绩。

SELECT AVG(grade),MAX(grade),MIN(grade) FROM sc WHERE cno = 200;

6.统计每个系的学生人数。

SELECT sdept,count(*) FROM student GROUP BY sdept;

7.统计每门课程的修课人数和考试最高分。

SELECT cno,count(*),MAX(grade) FROM sc GROUP BY cno ORDER BY cno;

8.统计每个学生的选课门数,并按选课门数的递增顺序显示结果。

SELECT sno,count(*) FROM sc GROUP BY sno ORDER BY count(*) ASC;

9.统计选修课的学生总数和考试的平均成绩。

SELECT COUNT(DISTINCT sno) stu_count,AVG(grade) FROM sc;

10.查询选课门数超过2门的学生的平均成绩和选课门数。

SELECT AVG(grade),COUNT(*) FROM sc GROUP BY cno HAVING count(*)>2;

11.列出总成绩超过200分的学生,要求列出学号、总成绩。

SELECT sno,SUM(grade) FROM sc GROUP BY sno HAVING SUM(grade) > 200;

12.查询选修了c02号课程的学生的姓名和所在系。

SELECT sname,sdept FROM student WHERE sno IN(SELECT sno FROM sc WHERE cno = 200);

13.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。

SELECT sname,cno,grade FROM student,(SELECT * FROM sc WHERE grade > 80) scc

WHERE student.sno = scc.sno ORDER BY scc.grade DESC;

SELECT sname,cno,grade FROM student INNER JOIN(SELECT * FROM sc WHERE grade > 80) scc

ON student.sno = scc.sno ORDER BY scc.grade DESC;

14.查询计算机系男生修了"数据库基础"的学生的姓名、性别、成绩。

SELECT sname,ssex,grade FROM student,(SELECT sno,grade FROM sc WHERE cno IN(SELECT cno FROM course WHERE cname = '高等数学')) newsc

WHERE student.sno = newsc.sno AND sdept = '計算机系' AND ssex = '男';

SELECT sname,ssex,grade FROM (SELECT sno,sname,ssex FROM student WHERE sdept = '計算机系' AND ssex = '男') newstu,

(SELECT sno,grade FROM sc WHERE cno IN(SELECT cno FROM course WHERE cname = '高等数学')) newsc

WHERE newstu.sno = newsc.sno;

15.查询哪些课程没有人选,要求列出课程号和课程名。

SELECT cname,cno FROM course WHERE cno NOT IN(SELECT cno FROM sc GROUP BY cno);

16.查询有考试成绩的所有学生的姓名、修课名称及考试成绩,要求将查询结果放在一张新的永久表(假设新表名为new-sc)中。

CREATE TABLE new_sc AS

SELECT sname,cname,grade FROM course,student,(SELECT * FROM sc WHERE grade is not NULL) nsc WHERE

course.cno = nsc.cno AND student.sno = nsc.sno;

17.分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,并要求将这两个查询结果合并成一个结果集,并以系名、姓名、性别、修课名称、修课成绩的顺序显示各列。

SELECT sdept,sname,ssex,cname,grade FROM course,(SELECT * FROM sc,(SELECT * FROM student WHERE sdept = '計算机系') nsc WHERE

sc.sno = nsc.sno) sc_stu WHERE course.cno = sc_stu.cno

UNION

SELECT sdept,sname,ssex,cname,grade FROM course,(SELECT * FROM sc,(SELECT * FROM student WHERE sdept = '情報系') nsc WHERE

sc.sno = nsc.sno) sc_stu WHERE course.cno = sc_stu.cno;

18.用子查询实现如下查询:

(1) 查询选修了100号课程的学生的姓名和所在系。

SELECT sname,sdept FROM student WHERE sno IN(SELECT sno FROM sc WHERE cno = 100);

(2) 查询数学系成绩80分以上的学生的学号、姓名。

SELECT sno,sname FROM student WHERE sno IN(SELECT sno FROM sc WHERE grade >80) AND sdept = '数学系';

(3) 查询计算机系学生所选的课程名。

SELECT cname FROM course WHERE cno IN(SELECT cno FROM sc WHERE sno IN(SELECT sno FROM student WHERE sdept = '計算机系'));

19.将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现:

(1) 在插入数据过程中建表。

CREATE TABLE sc_info1 AS

SELECT * FROM sc WHERE sno IN(SELECT sno FROM student WHERE sdept = '計算机系') AND grade > 80;

(2) 先建一个新表,然后再插入数据。 创建表SC_Info1 往表SC_info2插入查询得到的结果

CREATE TABLE sc_info2(

sno NUMBER,

cno NUMBER,

grade NUMBER

);

INSERT INTO sc_info2(

SELECT * FROM sc WHERE sno IN(SELECT sno FROM student WHERE sdept = '計算机系') AND grade > 80

);

--下面这种方法更容易理解一些

INSERT INTO sc_info2(

sno,

cno,

grade

)

SELECT * FROM sc WHERE sno IN(SELECT sno FROM student WHERE sdept = '計算机系') AND grade > 80

;

20.删除修课成绩小于50分的学生的修课记录。

DELETE FROM sc WHERE grade < 50;

21.将所有选修了'100'课程的学生的成绩加10分。

UPDATE sc SET grade = grade+10 WHERE cno = 100;

三 附加题 1.

SELECT s1.storeno,s1.store_name

FROM store s1,

(SELECT storeno,MAX(start_date) AS start_date

FROM store

WHERE start_date <= TO_DATE('2016011','YYYYMMDD')

AND over_date >= TO_DATE('2016011','YYYYMMDD')

GROUP BY storeno) s2

WHERE s1.storeno = s2.storeno

AND s1.start_date = s2.start_date;

Oracle课表查询系统,Oracle SQL基础练习(一)(学生表-课程表-选课表)相关推荐

  1. 学生-课程数据库建表代码(三张表:学生表 课程表 选课表SC)

    第一步:点击新建查询建立数据库 create database _10lzhangsan//先建立数据库 第二步:建表 学生表(包括学号,姓名,性别,年龄,所在系) create table stud ...

  2. 课表查询系统java数据库_教务管理系统-学生查询个人课表

    学生模块-查看个人课表 效果图: 数据库表设计(前期的表设计,实际稍微有改动): 实际的排课表实体类: package com.edu.entity; import java.io.Serializa ...

  3. 数据库常用操作语句(学生表、选课表、成绩表)

    例1:查询全体学生的学号与姓名. SELECT Sno, Sname FROM Student 例2.查询全体学生的姓名.学号.所在系 SELECT Sname, Sno, Sdept FROM St ...

  4. SQL数据库语言基础之SqlServer数据库原理与设计课程期末复习-条件查询实例练习【学生表、选课表、家庭作业表】

    文章目录 1.简单查询 2.查询在1999年出生的学生学号.姓名.出生日期 3.三次作业成绩都在60分以上的学生学号.课程号 4.查询姓张学生学号.姓名和专业班级 5.查询03级的男生信息 6.查询没 ...

  5. oracle sq语句查询时间,Oracle实现查询时间段的Sql语句两法

    Oracle实现查询时间段的Sql语句两法,相比ORacle要查询时间段的Sql语句还是与Sql Server的Sql语句有区别的,下面举两种方法来说明在ORacle是如何查询时间段的: 第一种方法: ...

  6. 东南大学课表查询系统

    社团作业,每人做了一个东南大学课表查询系统,不得不感叹,python确实厉害(那我还学MFC干什么..)! 这是搜索的主窗体,用来获取用户输入的信息(search.py). import tkinte ...

  7. python课表查询系统_东南大学课表查询系统

    社团作业,每人做了一个东南大学课表查询系统,不得不感叹,python确实厉害(那我还学MFC干什么..)! 这是搜索的主窗体,用来获取用户输入的信息(search.py). import tkinte ...

  8. 1.JSP课表查询系统

    想要源码的私信cue我即可,无偿!!! 文章目录 一.任务描述: 二.考核内容: 三.系统功能要求 四.实验报告 1 系统功能 2 相关技术 3 数据库设计 4 系统操作界面 一.任务描述: 遵循轻 ...

  9. 课表 php源码,php+excel通用课表查询系统 v2.2

    php+excel通用课表查询系统更新日志: 原先只支持windows,现在兼容linux可以(SAE赞不支持) php+excel通用课表查询系统简介 php+excel通用课表查询系统widows ...

最新文章

  1. 有奖话题讨论:你的互联网从业故事
  2. 关于Pulsar与Kafka
  3. 知识点030-邮件告诉自己备份是否成功
  4. CodeForces - 628D Magic Numbers(数位dp)
  5. linux gpt引导分区,linux 引导gpt分区windows及clover
  6. php表单中姓名必须使用汉字,我想在表单验证中加入中文姓名合法性模糊匹配判断?...
  7. EJB3.0学习笔记-----Stateful Session Bean的原理
  8. h2database源码浅析:TransactionMap、MVMap、MVStore
  9. 【洛谷1962】 斐波那契数列
  10. 注册事件的两种方式(传统注册事件、方法监听注册事件)
  11. 基于AD9361的ASK调制与解调
  12. 几何画板椭圆九种画法_最全的几何画板绘制椭圆教程
  13. cadvisor详解
  14. linux桌面不能打开终端,Ubuntu无法用快捷键或图标打开终端
  15. crm客户管理系统总结
  16. c语言的论文,C语言论文
  17. 6、IOC操作Bean管理[外部Bean、内部Bean、级联Bean、注入集合类型属性]
  18. 开源数值计算软件OCTAVE 、SCILAB、R、Matlab简介
  19. 计算机加密防止文件外泄,电脑文档加密系统哪个好?文档加密软件如何防止文件流通使用泄密...
  20. Dijkstra 路径规划算法原理详解及 Python 代码实现

热门文章

  1. 三个男人一台戏,为云原生应用和OpenShift写了一本书
  2. 电脑主机由哪几个重要的组成部分
  3. MySQL中dd::columns表结构转table过程以及应用
  4. 尝试自己制作一个网页版的单机冒险岛!!
  5. Javaweb 实现简单的用户注册登录(含数据库访问功能)
  6. Qt设置按钮背景图片,点击不显示背景
  7. pythonplt制作饼状图_4.5Python数据处理篇之Matplotlib系列(五)---plt.pie()饼状图
  8. 算法导论 3.2-1 关于单调递增函数的证明
  9. 计算机重启恢复系统怎么操作,电脑只要关机重启系统就会自动还原?-电脑怎么系统还原...
  10. 《程序员的成长课》:少走5年弯路