mysql练习

  • 一、题目:
  • 二、创建学生,课程,选课表并插入数据
  • 三、习题答案

环境: win10系统,MySQL数据库

一、题目:

已知关系:
S(Sno,Sname,Sage,Ssex,Sdept)
C(cno,cname,cpno,ccredit)
SC(sno,cno,grade)
(其中sno:学号;sname:姓名;Ssex:性别;Sdept:系别;Sage :年龄;cno:课程号;cname:课程名;
cpno: 直接先行课;ccredit:学分;grade:成绩),
1、查询“CS”系学生的基本信息;2、查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;3、查询学生中的最大年龄;4、找出“计算机”系年龄最大的学生,显示其学号、姓名;5、统计各系学生的人数,结果按升序排列;6、按系统计各系学生的平均年龄,结果按降序排列;7、查询选修了“1”或“2”号课程的学生学号和姓名;8、查询选修了课程名为“数据库”且成绩在60分以下的学生的学号、姓名和成绩;9、查询选修了3门以上课程的学生学号;10、查询选修课程成绩至少有一门在80分以上的学生学号;11、查询选修课程成绩均在80分以上的学生学号;12、查询选修课程平均成绩在80分以上的学生学号13、找出各系年龄最大的学生,显示其学号、姓名;

二、创建学生,课程,选课表并插入数据

首先选择数据库,然后直接执行下面代码 【设置字符集为utf8】

CREATE DATABASE IF NOT EXISTS test DEFAULT CHARSET utf8;
use test;
#创建学生表:包括学号,姓名,年龄,性别,院系
CREATE TABLE s
(
Sno VARCHAR(7)PRIMARY KEY,
Sname VARCHAR(10)NOT NULL,
Sage INT,
Ssex VARCHAR(2),
Sdept VARCHAR(20) DEFAULT '计算机系'
);#创建课程表:包括课程号,课程名,选修课课程号,学分
CREATE TABLE c
(
Cno VARCHAR(10)PRIMARY KEY,
Cname VARCHAR (20)NOT NULL,
Cpno VARCHAR(10),
Ccredit INT
);#创建选课表
CREATE TABLE sc
(
Sno VARCHAR(7),
Cno VARCHAR(10),
grade INT,
FOREIGN KEY (sno) REFERENCES s(Sno),
FOREIGN KEY (cno) REFERENCES c(cno)
);#  向学生表S中插入数据
INSERT INTO s(Sno,Sname,Sage,Ssex,Sdept)
VALUE("10001","张三",20,'男','计算机'),("10002","李梅",19,'女','计算机'),("10003","王五",18,'男','CS'),("10004","小明",21,'男','计算机'),("10006","黎明",18,'男','艺术表演'),("10008","杰克",21,'男','计算机'),("10005","小红",22,'女','CS');#  向课程表C中插入数据
INSERT INTO c(Cno,Cname,Cpno,Ccredit)
VALUE("1","离散数学",NULL,5),("2","线性代数",'3',6),("3","高等数学",NULL,4),("4","数据结构",'3',6),("5","操作系统",'1',4),("6","数据库",'4',5);#  向选课表SC中插入数据
INSERT INTO sc(Sno,Cno,grade)
VALUE("10001","1",70),("10001","6",56),("10003","4",90),("10003","5",83),("10004","1",75),("10004","3",90),("10008","1",70),("10008","5",70),("10008","6",88),("10002","1",85),("10002","6",89);

三、习题答案

# 1、查询“CS”系学生的基本信息;
SELECT * FROM s WHERE Sdept="CS";# 2、查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;
SELECT Sno,Sname,Sage,Sdept
FROM s
WHERE (Sage<19 OR Sage>21) AND Sdept = "CS";# 3、查询学生中的最大年龄;
SELECT MAX(Sage) FROM s;# 4、找出“计算机”系年龄最大的学生,显示其学号、姓名;
SELECT Sno, Sname
FROM s
WHERE Sdept="计算机"
ORDER BY Sage DESC
LIMIT 1;# 5、统计各系学生的人数,结果按升序排列;
SELECT Sdept,COUNT(*) '人数'
FROM s
GROUP BY Sdept
ORDER BY '人数';# 6、按系统计各系学生的平均年龄,结果按降序排列;
SELECT Sdept,AVG(Sage) '平均年龄'
FROM s
GROUP BY Sdept
ORDER BY '平均年龄'DESC;# 7、查询选修了“1”或“2”号课程的学生学号和姓名;
SELECT s.Sno,Sname
FROM s JOIN sc ON s.`Sno`=sc.`Sno`
WHERE Cno IN ("1","2");# 8、查询选修了课程名为“数据库”且成绩在60分以下的学生的学号、姓名和成绩;
SELECT s.Sno,Sname
FROM s JOIN sc ON s.`Sno`=sc.`Sno`
JOIN c ON sc.`Cno`=c.`Cno`
WHERE Cname ="数据库" AND grade<60;# 9、查询选修了3门以上课程的学生学号;
SELECT sno
FROM sc
GROUP BY sc.Sno
HAVING COUNT(*)>=3;# 10、查询选修课程成绩至少有一门在80分以上的学生学号;
SELECT sno
FROM sc
GROUP BY sc.Sno
HAVING MAX(grade)>80;# 11、查询选修课程成绩均在80分以上的学生学号;
SELECT sno
FROM sc
GROUP BY sc.Sno
HAVING MIN(grade)>80;# 12、查询选修课程平均成绩在80分以上的学生学号
SELECT sno
FROM sc
GROUP BY sc.Sno
HAVING AVG(grade)>80;# 13、找出各系年龄最大的学生,显示其学号、姓名;
SELECT sno,Sname
FROM s JOIN (SELECT Sdept,MAX(Sage) SageFROM sGROUP BY Sdept) a
ON (s.`Sage`=a.Sage AND s.`Sdept` = a.Sdept) ;

如果对你有帮助,请点个赞。

MySQL练习(学生表,课程表,选课表)超详解相关推荐

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

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

  2. Oracle课表查询系统,Oracle SQL基础练习(一)(学生表-课程表-选课表)

    一 使用CREATE TABLE语句和INSERT INTO语句创建表和插入数据. student表 course表 sc表 二 操作数据库 1.分别查询学生表和学生修课表中的全部数据. SELECT ...

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

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

  4. MySQL 数据库 User表权限以及用户授权详解

    转载:https://blog.mimvp.com/article/27956.html MySQL 常用权限操作 1)本机登陆mysql: mysql -u root -p (-p一定要有):改变数 ...

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

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

  6. Mysql 删除数据表的三种方式详解

    用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, 用 delete. 删除程度可从强到 ...

  7. win10下MYSQL的下载、安装以及配置超详解教程

    下载MYSQL  官网下载MYSQL5.7.21版本,链接地址https://www.mysql.com/downloads/.下载流程图如下:  进入官网点击Community,下载社区版.  找到 ...

  8. mysql实验学生表_数据库实验(学生信息表)

    数据库实验(学生信息表) 实验一 创建数据库以及学生信息表.课程信息表.选课表 create Table student (Sno char(9) primary key, Sname char(20 ...

  9. 超级课程表导入课程显示服务器繁忙,超级课程表 导入不了课表怎么办详解导入课程表教程...

    超级课程表 导入不了课表怎么办详解导入课程表教程文章由XP7编辑网络收集整理,希望大家喜欢!不知道小编分享的内容是否让你有了新的悸动,或许你的心里已经有了一万个骚点子,也欢迎各位来评论来XP7下载进一 ...

  10. [Python从零到壹] 八.数据库之MySQL和Sqlite基础知识及操作万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. 为了我心中的女神,我竟然转行做了程序员
  2. Linux -- cal/bc/LANGE与帮助文档
  3. 类脑芯片怎么搞?三星哈佛:直接复制粘贴神经元 | Nature子刊
  4. 简单的全连接神经网络(tensorflow实现)
  5. Android 7.0 SystemUI 之启动和状态栏和导航栏简介
  6. ubuntu20.04下面matlabR2015b的夜间模式设置
  7. 当同时使用bootstrap-datepicker.js和jquery.validate.js这两款插件,至少要选择两次时间,才能验证成功的问题...
  8. 安卓欢迎界面和activity之间的跳转问题
  9. Docker版本Jenkins的使用
  10. 腾讯TIM自动回复内容怎么自定义添加
  11. 用python海龟画图_天呐!python 的乌龟绘图怎么用啊!?
  12. 【评测机】评测时报错cc1plus: fatal error: /xx/xx/main.cpp: Permission denied compilation terminated.的解决方法...
  13. Qt学习笔记——打开并显示图片
  14. vue中点击加号_零基础入门vue开发
  15. 如何跨越线程调用窗体控件?(3)
  16. 无线基础知识学习(一)
  17. UFS/EMMC压力测试
  18. 网易云音乐python爬虫(Js破解)
  19. 车载显示屏刷鸿蒙系统,华为智能品鉴会如期进行,鸿蒙系统车载显示屏首次亮相...
  20. vue的安装与基本使用

热门文章

  1. 基于单片机的数控直流电流源设计
  2. C语言while循环语句 do while语句 for循环语句
  3. 职高学生计算机学情分析,高职学生学情分析
  4. Pulsar 社区周报|2021-07-12 ~ 2021-07-18
  5. 用创业舞动飞扬的青春
  6. [LeetCode]Buy and Sell Stocks 买卖股票问题
  7. 电容笔买什么牌子好?2022电容笔品牌排行榜
  8. 武汉理工大学计算机学院导师联系方式,武汉理工大学计算机学院班主任(班导师)工作条例.doc...
  9. 状语从句不是简单句_英语简单句、从句分类及解析
  10. 【DOS】通过for命令截取字符串