数据库应用课程学生表、课程表、选课表mysql语句实战练习

news2024/9/23 2:29:55

 1、创建表结构

目录

 1、创建表结构

1.1 创建学生表

 1.2 创建课程表

 1.3创建选课表

1.4 插入学生表

 1.5 插入课程表

 1.6 插入选课表

2.以下布置操作是根据以上建立的三张表格基础上进行mysql语句的练习

2.1 查询学生信息并添加入新表

 2.1.1 查询全体学生的学号与姓名,查询结果存入新表s1。

 2.1.2查询全体学生的姓名、学号和所在系,查询结果存入新表s2。

 查询全体学生的详细记录

 2.2 查询全体学生的姓名及其出生年份

 查询计算机系全体学生

 查询所有年龄20岁以下的学生的姓名及年龄,

2.3 根据信息条件(分数范围)检索满足条件的信息

 查询成绩不及格学生的学号

 查询考试成绩在80~90之间的学生学号、课程号和成绩

 查询考试成绩不在80~90之间的学生学号、课程号和成绩

 2.4 根据所属(系别)的范围检索满足条件的信息

 查询信息管理系、通信工程系和计算机系学生的姓名和性别

​编辑等价

 查询信息管理系、通信工程系和计算机系三个系之外的其他系学生的姓名和性别

 2.5 根据部分关键字匹配检索信息

 查询姓“张”的学生详细信息

 查询姓“张”、姓“李”和姓“刘”的学生的详细信息

 查询名字的第2个字为“小”或“大”的学生的姓名和学号

 查询所有不姓“刘”的学生姓名

 在Student表中查询学号的最后一位不是2、3、5的学生信息

 查询还没有考试的学生的学号和相应的课程号

2.6 根据关键字的具体信息

 查询计算机系男生的姓名

 查询C002和C003课程中考试成绩在80~90的学生的学号、课程号和成绩

 2.7 根据降序、升序、平均值、最高、最低分

 查询修了“C002”课程的学生的学号及成绩,查询结果按成绩降序排列

 查询全体学生详细信息,结果按系名升序排列,同一个系的学生按出生日期降序排列

 统计学生总人数

 统计选修了课程的学生人数

 计算学号为“0811101”的学生的考试总成绩

 计算“0831103”学生的平均成绩

 查询“C001”课程考试成绩的最高分和最低分

 2.8 根据同一类别(group by)统计属于这个类别的数量

 统计每门课程的选课人数,列出课程号和选课人数

 统计每个学生的选课门数和平均成绩

 统计每个系的女生人数

 3.多个的条件共同筛选下的查询(进阶)

 统计每个系的男生人数和女生人数以及男生的最大年龄和女生的最大年龄

 查询选课门数超过3门的学生的学号和选课门数

 查询选课门数大于等于4门的学生的平均成绩和选课门数

 查询计算机系和信息管理系每个系的学生人数

 给不同分数段的同学评价


1.1 创建学生表

-- 创建学生表
create table  student(
sno char(7) PRIMARY key COMMENT '学号',
sname varchar(10) not null COMMENT "姓名",
ssex char(2) COMMENT '性别',
sage int  COMMENT '年龄',
dept varchar(20) COMMENT '所在系',
check( ssex in ('男','女'))
);

 显示学生表的类型

desc student;

 1.2 创建课程表

-- 创建课程表
create table course(
cno varchar(10) primary key COMMENT '课程号',
cname varchar(20) not null COMMENT '课程名',
credit int  COMMENT '学分',
semester int null COMMENT '开课学期',
check(credit>0)
);

  显示课程表的类型

describe course;

 

 1.3创建选课表

-- 创建选课表
create table sc(
sno char(7)  COMMENT '学号',
cno char(10)  COMMENT '课程号',
grade int comment '成绩',
PRIMARY key (sno,cno),
check(grade BETWEEN 0 and 100),
CONSTRAINT fk_sno FOREIGN key(sno) REFERENCES student(sno)
on UPDATE CASCADE on DELETE CASCADE,
CONSTRAINT fk_cno FOREIGN key(cno) REFERENCES course(cno)
on UPDATE CASCADE on DELETE CASCADE
);

 显示选课表的类型

desc sc;

1.4 插入学生表

insert into student(sno,sname,ssex,sage,dept)
VALUES
('0811101','李勇','男',21 ,'计算机系'),
('0811102','刘晨','男',20 ,'计算机系'),
('0811103','王敏','女',20 ,'计算机系'),
('0811104','张晓红','女',19 ,'计算机系'),
('0821101','张立','男',20 ,'信息管理系'),
('0821102','吴宾','女',19 ,'信息管理系'),
('0821103','张海','男',20 ,'信息管理系'),
('0831101','钱小平','女',21 ,'通信工程系'),
('0831102','王大力','男',20 ,'通信工程系'),
('0831103','张珊珊','女',19 ,'通信工程系');

 查询插入学生表的情况

select * from student;

 1.5 插入课程表

-- 插入课程表
insert  course
VALUES
('C001','高等数学',4,1),
('C002','大学英语',3,1),
('C003','大学英语',3,2),
('C004','计算机文化学',2,2),
('C005','Java',2,3),
('C006','数据库基础',4,5),
('C007','数据结构',4,4),
('C008','计算机网络',4,4);

  查询插入课程表的情况

select * from course;

 1.6 插入选课表

-- 插入选课表
insert into sc
VALUES
('0811101','C001',96),
('0811101','C002',80),
('0811101','C003',84),
('0811101','C005',62),
('0811102','C001',92),
('0811102','C002',90),
('0811102','C004',84),
('0811102','C006',76),
('0811102','C003',85),
('0811102','C005',73),
('0811102','C007',null),
('0811103','C001',50),
('0811103','C004',80),
('0831101','C001',50),
('0831101','C004',80),
('0831102','C007',null),
('0831103','C004',78),
('0831103','C005',65),
('0831103','C007',null);

 查询选课表情况

select * from sc;

 

2.以下布置操作是根据以上建立的三张表格基础上进行mysql语句的练习

2.1 查询学生信息并添加入新表

 2.1.1 查询全体学生的学号与姓名,查询结果存入新表s1。

-- 查询全体学生的学号与姓名,查询结果存入新表s1。
create table s1 select sno,sname from student;

 2.1.2查询全体学生的姓名、学号和所在系,查询结果存入新表s2。

-- 查询全体学生的姓名、学号和所在系,查询结果存入新表s2。
select sname,sno,dept from student;

 

 查询全体学生的详细记录

-- 查询全体学生的详细记录
select * from student;

 2.2 查询全体学生的姓名及其出生年份

-- 查询全体学生的姓名及其出生年份
select sname,year(now())-sage as 出生年份 from student;

 查询计算机系全体学生

-- 查询计算机系全体学生
select * from student where dept='计算机系';

 查询所有年龄20岁以下的学生的姓名及年龄,

-- 查询所有年龄20岁以下的学生的姓名及年龄,
select sname,sage from student where sage<20;

2.3 根据信息条件(分数范围)检索满足条件的信息

 查询成绩不及格学生的学号

-- 查询成绩不及格学生的学号
select sno from sc where grade<60;

 查询考试成绩在80~90之间的学生学号、课程号和成绩

-- 查询考试成绩在80~90之间的学生学号、课程号和成绩
select sno,cno,grade from sc where grade BETWEEN 80 and  90; 

等价

select sno,cno,grade from sc where grade >= 80 and  grade<=90; 

 查询考试成绩不在80~90之间的学生学号、课程号和成绩

-- 查询考试成绩不在80~90之间的学生学号、课程号和成绩

select sno,cno,grade from sc where grade not BETWEEN 80 and  90; 

等价

select sno,cno,grade from sc where grade>=0 and grade < 80 or  grade<=100 and grade>90;

 2.4 根据所属(系别)的范围检索满足条件的信息

 查询信息管理系、通信工程系和计算机系学生的姓名和性别

-- 查询信息管理系、通信工程系和计算机系学生的姓名和性别
select sname,ssex from student where dept in ('信息管理系','通信工程系','计算机系');

等价

select sname,ssex from student where dept='信息管理系' or dept='通信工程系' or dept='计算机系';

 我们再插入几个同学的数据

insert into student(sno,sname,ssex,sage,dept)
VALUES
('0811111','李佳均','男',99 ,'美术系'),
('0811122','张某龙','男',20 ,'建工系'),
('0811133','王假杰','男',20 ,'机械系'),
('0811144','杨某男','男',20 ,'机械系');

 查询信息管理系、通信工程系和计算机系三个系之外的其他系学生的姓名和性别

-- 查询信息管理系、通信工程系和计算机系三个系之外的其他系学生的姓名和性别

select sname,ssex from student where dept not in 
(select dept from student where dept in ('信息管理系','通信工程系','计算机系'));
--下面等价

select sname,ssex from student where dept not in ('信息管理系','通信工程系','计算机系');

 2.5 根据部分关键字匹配检索信息

 查询姓“张”的学生详细信息

-- 查询姓“张”的学生详细信息
SELECT * from student where sname LIKE '张%';

 

 查询姓“张”、姓“李”和姓“刘”的学生的详细信息

-- 查询姓“张”、姓“李”和姓“刘”的学生的详细信息
SELECT * from student where sname LIKE '张%' or sname LIKE '李%' or sname LIKE '刘%';

 查询名字的第2个字为“小”或“大”的学生的姓名和学号

-- 查询名字的第2个字为“小”或“大”的学生的姓名和学号
SELECT sname,sno from student where sname LIKE '_小%' or sname LIKE '_大%';

 查询所有不姓“刘”的学生姓名

-- 查询所有不姓“刘”的学生姓名
select sname from student where sname not like '刘%';

 

 在Student表中查询学号的最后一位不是2、3、5的学生信息

-- 在Student表中查询学号的最后一位不是2、3、5的学生信息
select * from student where sno not like '%2' or sno not like '%3' or sno not like '%5';

 查询还没有考试的学生的学号和相应的课程号

-- 查询还没有考试的学生的学号和相应的课程号
SELECT sno,cno from sc where grade is null;

2.6 根据关键字的具体信息

 查询计算机系男生的姓名

-- 查询计算机系男生的姓名
select sname from student where dept='计算机系' and ssex='男';

 查询C002和C003课程中考试成绩在80~90的学生的学号、课程号和成绩

-- 查询C002和C003课程中考试成绩在80~90的学生的学号、课程号和成绩
select sno,cno,grade from sc where cno in('C002','C003') and  grade BETWEEN 80 and 90;

 2.7 根据降序、升序、平均值、最高、最低分

 查询修了“C002”课程的学生的学号及成绩,查询结果按成绩降序排列

-- 查询修了“C002”课程的学生的学号及成绩,查询结果按成绩降序排列,

select sno ,grade from sc where cno ='C002' order by grade desc;

 查询全体学生详细信息,结果按系名升序排列,同一个系的学生按出生日期降序排列

-- 查询全体学生详细信息,结果按系名升序排列,同一个系的学生按出生日期降序排列
select * from student order by dept,year(now())-sage  desc;

 统计学生总人数

-- 统计学生总人数
select count(*) from student;

 统计选修了课程的学生人数

-- 统计选修了课程的学生人数
select count(DISTINCT sno) as count from sc ;

 计算学号为“0811101”的学生的考试总成绩

--  计算学号为“0811101”的学生的考试总成绩
select sum(grade) from sc where sno='0811101';

 计算“0831103”学生的平均成绩

-- 计算“0831103”学生的平均成绩
select round(avg(grade),1) as avg from sc where sno like '0831103';

 查询“C001”课程考试成绩的最高分和最低分

-- 查询“C001”课程考试成绩的最高分和最低分
select cno,max(grade),min(grade) from sc where cno='C001';

 2.8 根据同一类别(group by)统计属于这个类别的数量

 统计每门课程的选课人数,列出课程号和选课人数

-- 统计每门课程的选课人数,列出课程号和选课人数

select cno,count(sno)as count from sc GROUP BY cno;

 统计每个学生的选课门数和平均成绩

-- 统计每个学生的选课门数和平均成绩
select sno,count(cno),avg(grade) from sc group by sno;

 统计每个系的女生人数

-- 统计每个系的女生人数
select dept,count(sno) from student where ssex='女' group by dept;

 3.多个的条件共同筛选下的查询(进阶)

 统计每个系的男生人数和女生人数以及男生的最大年龄和女生的最大年龄

-- 统计每个系的男生人数和女生人数以及男生的最大年龄和女生的最大年龄
select dept, ssex, count(sno),max(sage) from student group by dept,ssex order by CONVERT(dept using gbk) desc;

 查询选课门数超过3门的学生的学号和选课门数

-- 查询选课门数超过3门的学生的学号和选课门数

select sno,count(cno) from sc group by sno HAVING count(cno)>3;

 查询选课门数大于等于4门的学生的平均成绩和选课门数

-- 查询选课门数大于等于4门的学生的平均成绩和选课门数

select sno,AVG(GRADE),count(cno) from sc group by sno HAVING count(cno)>=4;

 查询计算机系和信息管理系每个系的学生人数

-- 查询计算机系和信息管理系每个系的学生人数

select dept,count(sno) from student where dept in('计算机系','信息管理系') group by dept;

 给不同分数段的同学评价

-- 查询“C001”课程的考试情况,列出学号和成绩,对成绩进行如下处理:
-- 如果成绩大于等于90,则在查询结果中显示“优”;
-- 如果成绩在80到89分之间,则在查询结果中显示“良”;
-- 如果成绩在70到79分之间,则在查询结果中显示“中”;
-- 如果成绩在60到69分之间,则在查询结果中显示“及格”;
-- 如果成绩小于60分,则在查询结果中显示“不及格”。
-- CASE WHEN THEN
select sno,
CASE  
when grade>=90 then '优' 
when grade >=80 and grade<89 then '良'
when grade >=70 and grade<79 then '中'
when grade >=60 and grade<69 then '及格'
else '不及格'
end as '等级'
 from sc where cno='C001';

统计计算机系每个学生的选课门数,包括没有选课的学生。
列出学号、选课门数和选课情况,其中对选课情况的处理为:
如果选课门数超过4,则选课情况为“多”;
如果选课门数在2~4,则选课情况为“一般”;
如果选课门数少于2,则选课情况为“少”;
如果学生没有选课,则选课情况为“未选”。
并将查询结果按选课门数降序排序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1353692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ECharts配置个性化图表:圆环、立体柱状图

官网调试地址&#xff1a;调试 效果图&#xff1a; 配置&#xff1a; option {color: [#29BEFF, #A2DC00, #FFC400, #FF7F5C, #CA99FC],// 提示窗tooltip: {trigger: item,show: false},// 图例legend: {top: 5%,left: center,show: false},// 数据series: [{name: Access …

23年中科院1区算法|开普勒优化算法原理及其利用(Matlab/Python)

CEC2017中的测试 本文作者将介绍一个2023年发表在中科院1区期刊《Knowledge -Based Systems》上的优化算法——开普勒优化算法(Kepler optimization algorithm&#xff0c;KOA)[1] 算法性能上&#xff0c;与鹈鹕、黏菌、灰狼和鲸鱼等一众优化算法在CEC2014、CEC2017、CEC2020和…

SRC中的一些信息收集姿势

目录 前言 搜索引擎 Google、bing、baidu Fofa、360q、鹰图 提炼图标 提炼标题 提炼Body 提炼特殊路由 提炼特殊服务 GIT提炼 总结 本文由掌控安全学院 - 杳若 投稿 前言 前前后后挖了四个月的EDUSRC&#xff0c;顺利从路人甲升到了网络安全专家&#xff0c;从提交…

技术扫盲:如何优雅的使用 java -jar

java -jar xxx.jar java -jar 是一个用于在命令行界面中执行 Java 可执行 JAR 文件的命令。它的语法如下&#xff1a; java -jar <JAR 文件路径> [参数]其中&#xff1a; java 是 Java 运行时环境的可执行文件。-jar 是一个选项&#xff0c;表示要执行的文件是一个 JA…

南昌本地人才招聘网站有哪些

南昌吉鹿力招聘网是一家南昌本地人才招聘网站&#xff0c;真正专属于年轻人的移动社交招聘平台&#xff0c;提供职业档案、人脉、求职、聊天等功能。主要优点是扩大招聘渠道&#xff0c;通过社区招聘平台找到工作机会&#xff0c;并为用户提供职业建议和职位发布等服务。 吉鹿…

技术资讯:Vue 3.4 新版本发布,1分钟快速看看改了啥!

大家好&#xff0c;我是大澈&#xff01; 本文约1000字&#xff0c;整篇阅读大约需要1分钟。 感谢关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费领取"面试礼包"一份&#xff0c;然后免费加入问答群&#xff0c;从此让解决问题的你不再孤单&#xff01…

【办公软件】修改U盘的默认盘符

在工作中我们可能会因为有一些大型软件设置了库文件路径&#xff08;如Z盘&#xff09;。在家办公时通过U盘的方式将库拷入在U盘中&#xff0c;但是到家里的电脑上&#xff0c;U盘插入后会默认一个盘符&#xff08;如E盘&#xff09;&#xff0c;那么应该怎么操作呢&#xff1f…

【HBase】——安装部署

1 规划&前提 Zookeeper 、HDFS 正常部署规划如下 2 解压并重命名 cd /opt/software/ tar -zxvf hbase-2.4.11-bin.tar.gz -C /opt/module/ cd /opt/module mv hbase-2.4.11/ hbase3 修改配置文件 3.1 hbase-env.sh #!/usr/bin/env bash # #/** # * Licensed to the Apa…

你可能不知道的5款好用封面设计工具,快来一探究竟吧!

我相信每个作者和出版商都希望在一部作品完成后有一个醒目的封面&#xff0c;这样潜在的读者就会有足够的好奇心拿起这本书&#xff0c;你的书的销量就会上升。这就是封面设计软件的使用&#xff0c;专业的封面设计软件可以增加前沿效果&#xff0c;呈现最适合书籍内容的创意布…

UniversalTransformer with Adaptive Computation Time(ACT)

原论文链接&#xff1a;https://arxiv.org/abs/1807.03819 Main code import torch import numpy as npclass PositionTimestepEmbedding(torch.nn.Module):def forward(self, x, t):device x.devicesequence_length x.size(1)d_model x.size(2)position_embedding np.arr…

(学习打卡2)重学Java设计模式之六大设计原则

前言&#xff1a;听说有本很牛的关于Java设计模式的书——重学Java设计模式&#xff0c;然后买了(*^▽^*) 开始跟着小傅哥学Java设计模式吧&#xff0c;本文主要记录笔者的学习笔记和心得。 打卡&#xff01;打卡&#xff01; 六大设计原则 &#xff08;引读&#xff1a;这里…

AIGC带给开发者的冲击

未来会有两种开发者&#xff0c;一种是会使用AIGC工具的开发者另一种是不会使用AIGC的开发者&#xff0c;AIGC的出现提高了开发效率和代码质量&#xff0c;对开发者意味着需要不断学习和适应新的技术和工作范式&#xff0c;开发者可以把更多的精力放在高级抽象的定义以及更高维…

(16)Linux 进程等待 wait/waitpid 的 status 参数

前言&#xff1a;我们开始讲解进程等待&#xff0c;简单地讲解 wait 函数&#xff0c;然后我们主要讲解 waitpid 函数。由于 wait 只有一个参数 status&#xff0c;且 waitpid 有三个参数且其中一个也是 status&#xff0c;我们本章重点讲解这个 status 参数。 一、进程等待&a…

学习笔记240102 --- 表单无法输入,是否data中没有提前声明导致的

前端框架 &#xff1a;vue2.x 第三方ui组件&#xff1a;ElementUI 操作系统&#xff1a;windows 浏览器&#xff1a;chrome 谷歌 问题描述 表单使用中&#xff0c;没有在data中提前声明参数&#xff0c;当数据回显时&#xff0c;表单无法输入 <el-form :model"queryPa…

Oracle-数据库迁移之后性能变慢问题分析

问题背景&#xff1a; ​一套Oracle11.2.0.4的RAC集群&#xff0c;通过Dataguard switchover方式迁移到新机器之后&#xff0c;运行第一天应用报障说应用性能慢&#xff0c;需要进行性能问题排查 问题分析&#xff1a; 首先&#xff0c;登陆到服务器&#xff0c;用TOP看一眼两个…

CMake入门教程【基础篇】CMake+Linux gcc构建C++项目

文章目录 1.概述2.GCC与CMake介绍3.安装CMake和GCC4.代码示例 1.概述 在Linux环境下&#xff0c;使用CMake结合GCC&#xff08;GNU Compiler Collection&#xff09;进行项目构建是一种常见且高效的方法。CMake作为一个跨平台的构建系统&#xff0c;可以生成适用于不同编译器的…

CentOS 7 实战指南:文件操作命令详解

写在前面 想要快速掌握 CentOS 7 系统下的文件操作技巧吗&#xff1f;不用担心&#xff01;我为你准备了一篇详细的技术文章&#xff0c;涵盖了各种常用的文件操作命令。无论您是初学者还是有一定经验的用户&#xff0c;这篇文章都能帮助您加深对 CentOS 7 文件操作的理解&…

海外住宅IP代理的工作原理和应用场景分析,新手必看

海外住宅IP代理作为一种技术解决方案&#xff0c;为用户提供了访问全球网络资源和维护隐私安全的方法。本文将介绍海外住宅IP代理的工作原理和应用场景&#xff0c;帮助读者更好地理解和利用这一技术。 一、工作原理 海外住宅IP代理的工作原理基于代理服务器和IP地址的转发。它…

阿里云系统盘测评ESSD、SSD和高效云盘IOPS、吞吐量性能参数表

阿里云服务器系统盘或数据盘支持多种云盘类型&#xff0c;如高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘、ESSD PL-X云盘及ESSD AutoPL云盘等&#xff0c;阿里云百科aliyunbaike.com详细介绍不同云盘说明及单盘容量、最大/最小IOPS、最大/最小吞吐量、单路随机写平均时延等性…

HackTheBox - Medium - Linux - BroScience

BroScience BroScience 是一款中等难度的 Linux 机器&#xff0c;其特点是 Web 应用程序容易受到“LFI”的攻击。通过读取目标上的任意文件的能力&#xff0c;攻击者可以深入了解帐户激活码的生成方式&#xff0c;从而能够创建一组可能有效的令牌来激活新创建的帐户。登录后&a…