①MySQL刷题马拉松:坚持刷题,MySQL技能大提升!

这篇具有很好参考价值的文章主要介绍了①MySQL刷题马拉松:坚持刷题,MySQL技能大提升!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🏘️🏘️个人简介:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主,CSDN内容合伙人
🎁🎁:文章末尾扫描二维码可以加入粉丝交流群,不定期免费送书。


环境

MySQL版本: 8.0.28
数据库管理工具:MySQL Workbench 8.0 CE

MySQL Workbench 8.0 CE是一款开源的、跨平台的、图形化的MySQL数据库管理工具,由MySQL AB公司开发。它提供了一个集成的开发环境,包括数据库设计、SQL开发、数据库管理和数据库维护等功能

mysql经典50习题

数据库数据:

1.学生表

-- Student(SID,Sname,Sage,Ssex)
-- --SID 学生编号,Sname 学生姓名,Sage 年龄,Ssex 学生性别
-- CREATE TABLE Student(
-- Sid VARCHAR(20),
-- Sname VARCHAR(20) NOT NULL DEFAULT '',
-- Sage VARCHAR(20) NOT NULL DEFAULT '',
-- Ssex VARCHAR(10) NOT NULL DEFAULT '',
--  PRIMARY KEY(Sid)
--  );
-- insert into Student values('01' , ' 赵 雷 ' , '1990-01-01' , ' 男 ');
-- insert into Student values('02' , ' 钱 电 ' , '1990-12-21' , ' 男 ');
-- insert into Student values('03' , ' 孙 风 ' , '1990-05-20' , ' 男 ');
-- insert into Student values('04' , ' 李 云 ' , '1990-08-06' , ' 男 ');
-- insert into Student values('05' , ' 周 梅 ' , '1991-12-01' , ' 女 ');
-- insert into Student values('06' , ' 吴 兰 ' , '1992-03-01' , ' 女 ');
-- insert into Student values('07' , ' 郑 竹 ' , '1989-07-01' , ' 女 ');
--  insert into Student values('08' , ' 王 菊 ' , '1990-01-20' , ' 女 ');

2.课程表

-- create table Course(Cid int primary key auto_increment,Cname char(20),Tid int);
-- insert into Course(Cid,Cname,Tid) values(1,'语文',2),(2,'数学',1),(3,'英语',3);

3.教师表

-- Teacher(Tid,Tname)
-- Tid 教师编号,Tname 教师姓名
-- create table Teacher(Tid int primary key auto_increment,Tname char(20));
-- insert into Teacher(Tid,Tname) values(1,'张三'),(2,'李四'),(3,'王五');

4.成绩表

-- Score(Sid,Cid,score)
-- --Sid 学生编号,Cid 课程编号,score 分数
-- CREATE TABLE Score (
--   Sid INT NOT NULL,
--   Cid INT NOT NULL,
--   score INT,
--   PRIMARY KEY (Sid, Cid)
-- );
-- insert into Score values('01' , '01' , 80);
-- insert into Score values('01' , '02' , 90);
-- insert into Score values('01' , '03' , 99);
-- insert into Score values('02' , '01' , 70);
-- insert into Score values('02' , '02' , 60);
-- insert into Score values('02' , '03' , 80);
-- insert into Score values('03' , '01' , 80);
-- insert into Score values('03' , '02' , 80);
-- insert into Score values('03' , '03' , 80);
-- insert into Score values('04' , '01' , 50);
-- insert into Score values('04' , '02' , 30);
-- insert into Score values('04' , '03' , 20);
-- insert into Score values('05' , '01' , 76);
-- insert into Score values('05' , '02' , 87);
-- insert into Score values('06' , '01' , 31);
-- insert into Score values('06' , '03' , 34);
-- insert into Score values('07' , '02' , 89);
-- insert into Score values('07' , '03' , 98);

1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数

-- select s.*,s1.score as s_score1,s2.score as s_score2
-- from Student s
-- join Score s1 on s.Sid = s1.Sid and s1.Cid =1
-- left join Score s2 on s.Sid = s2.Sid and s2.Cid = 2
-- where s1.score>s2.score;

使用了多表连接和条件筛选,目的是查询学生的基本信息和他们在语文和数学两门课中的成绩,并且只返回语文成绩高于数学成绩的学生信息。

  • SELECT:选择需要返回的列,这里选择了学生表中的所有列,以及两个成绩表中的score列(分别用别名s_score1和s_score2表示)。
  • FROM:指定需要查询的表,这里是学生表和成绩表。
  • JOIN:连接两个表,这里是学生表和语文成绩表。
  • ON:指定连接条件,这里是学生表中的学生编号和成绩表中的学生编号相等,并且成绩表中的课程编号为1。
  • LEFT JOIN:连接学生表和数学成绩表,这里使用左连接,因为不是所有学生都有数学成绩。
  • WHERE:筛选符合条件的行,这里是只返回语文成绩高于数学成绩的学生信息,即s1.score>s2.score。

2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数

-- select s.*,s1.score as s_score1,s2.score as s_score2
-- from Student s
-- join Score s1 on s.Sid = s1.Sid and s1.Cid =1
-- left join Score s2 on s.Sid = s2.Sid and s2.Cid = 2
-- where s1.score<s2.score;
  • SELECT:选择需要返回的列,这里选择了学生表中的所有列,以及两个成绩表中的score列(分别用别名s_score1和s_score2表示)。
  • FROM:指定需要查询的表,这里是学生表和成绩表。
  • JOIN:连接两个表,这里是学生表和语文成绩表。
  • ON:指定连接条件,这里是学生表中的学生编号和成绩表中的学生编号相等,并且成绩表中的课程编号为1。
  • LEFT JOIN:连接学生表和数学成绩表,这里使用左连接,因为不是所有学生都有数学成绩。
  • WHERE:筛选符合条件的行,这里是只返回语文成绩低于数学成绩的学生信息,即s1.score<s2.score。

3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩

--  select  distinct(sc.Sid),st.Sname from Score sc join Student st on sc.Sid = st.Sid 
--  where sc.Sid in(select  Sid from Score group by Sid having avg(score)>60);
  • SELECT:选择需要返回的列,这里选择了成绩表中的学生编号和学生表中的学生姓名。
  • DISTINCT:去重,保证每个学生只出现一次。
  • FROM:指定需要查询的表,这里是成绩表和学生表。
  • JOIN:连接两个表,这里是成绩表和学生表。
  • ON:指定连接条件,这里是成绩表中的学生编号和学生表中的学生编号相等。
  • WHERE:筛选符合条件的行,这里是只返回平均成绩高于60分的学生的信息。
  • IN:子查询,用于查询平均成绩高于60分的学生的学号。
  • GROUP BY:将成绩表按学生编号分组,用于计算每个学生的平均成绩。
  • HAVING:筛选符合条件的分组,这里是只返回平均成绩高于60分的学生的学号。
  • AVG:计算平均成绩。

4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩(包括有成绩的和无成绩的)

--  select  sc.Sid,st.Sname from Score sc join Student st on sc.Sid = st.Sid 
--  where sc.Sid=(select  Sid from Score group by Sid having avg(score)<60);
  • SELECT:选择需要返回的列,这里选择了成绩表中的学生编号和学生表中的学生姓名。

  • FROM:指定需要查询的表,这里是成绩表和学生表。

  • JOIN:连接两个表,这里是成绩表和学生表。

  • ON:指定连接条件,这里是成绩表中的学生编号和学生表中的学生编号相等。

  • WHERE:筛选符合条件的行,这里是只返回平均成绩低于60分的学生的信息。

  • IN:子查询,用于查询平均成绩低于60分的学生的学号。

  • GROUP BY:将成绩表按学生编号分组,用于计算每个学生的平均成绩。

  • HAVING:筛选符合条件的分组,这里是只返回平均成绩低于60分的学生的学号。

  • AVG:计算平均成绩。文章来源地址https://www.toymoban.com/news/detail-527185.html

5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩

-- select st.Sid,st.Sname,count(sc.Cid),sum(sc.score) from Student st left join Score sc 
-- on sc.Sid = st.Sid group by Sid;
  • SELECT:选择需要返回的列,这里选择了学生表中的学生编号和姓名,以及成绩表中的课程编号和成绩。
  • LEFT JOIN:连接学生表和成绩表,这里使用左连接,因为不是所有学生都选修了课程。
  • ON:指定连接条件,这里是成绩表中的学生编号和学生表中的学生编号相等。
  • GROUP BY:将结果按学生编号分组,用于计算每个学生的选修课程数和总成绩。
  • COUNT:计算选修课程数。
  • SUM:计算总成绩

到了这里,关于①MySQL刷题马拉松:坚持刷题,MySQL技能大提升!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微软CTO谈AI:逃不掉马拉松就准备好跑鞋!30秒自动化妆机;ChatGPT刷爆票圈;剪纸风格的AI绘画 | ShowMeAI资讯日报

    👀 日报合辑 | 🎡 AI应用与工具大全 | 🔔 公众号资料下载 | 🍩 @韩信子 https://blogs.microsoft.com/ai/a-conversation-with-kevin-scott-whats-next-in-ai/ 斯科特预计,AI系统的复杂性与规模将继续增长,带来生产力和创造力的显著提升,并为当前世界面临的复杂挑战提供解决方案。(本文仅呈

    2024年02月04日
    浏览(35)
  • 陆奇最新演讲高清PPT下载;AI 绘画20+工具体验汇总;我愿称MOSS为全球开源界最强;思否AIGC黑客马拉松北京站 | ShowMeAI日报

    👀 日报周刊合集 | 🎡 生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! ShowMeAI知识星球资料编号:R054 奇绩创坛创始人兼CEO 陆奇 是中国AI布道人,也是中国针对大模型最有发言权的人之一。他曾在全球巨头身居要职,先后任职于IBM、雅虎、微软、百度,曾是华人在美

    2024年02月09日
    浏览(38)
  • MySQL技能树学习

    体系结构  存储引擎  数据类型 数值类型 DECIMAL类型 在MySQL内部是以字符串的形式进行存储的,它的精度比浮点数更加精确,适合存储表示金额等需要高精度的数据 Mysql中两个整数相除,默认得到的类型是decimal类型,因为两个整数相除可能产生小数,而decimal类型,可以精确

    2024年03月12日
    浏览(34)
  • MySQL刷题

    DDL(Data Definition Language)用来定义数据库对象; DML(Data Manipulation Language)用来对数据库中的表进行增删改操作; DQL(Data Query Language)用来查询数据库中表的记录; DCL(Data Control Language)用来定义数据库的访问控制权限和安全级别; 位于用户和操作系统之间的一层数据管理软件指的是

    2023年04月15日
    浏览(22)
  • mysql并行效率提升

    下面是一个并行读取mysql数据库表的测试程序,测试结果发现,读取10个表,1个个读取,和并行读取10个,效率一样,甚至并行读取还慢很多,这是为什么? 检查一下mysql后端: 原来啊,这个outgoing network traffic一直上不去,从数据库读取出来的数据,发不出去,也就返回不了

    2024年02月11日
    浏览(50)
  • Mysql提升篇

    关联查询 内连接 :A∩B select  字段列表  from  A inner  join  B  on   A.关联字段  = B.关联字段; 外连接 :A / B select  字段列表  from  A  left  join B  on  A.关联字段 = B.关联字段;     select  字段列表  from  A  right  join B  on  A.关联字段 = B.关联字段; A U B select  字段列表

    2024年02月02日
    浏览(22)
  • Mysql系列 - 第3天:管理员必备技能(必须掌握)

    这是mysql系列第3篇文章。 环境:mysql5.7.25,cmd命令中进行演示。 在玩mysql的过程中,经常遇到有很多朋友在云上面玩mysql的时候,说我创建了一个用户为什么不能登录?为什么没有权限?等等各种问题,本文看完之后,这些都不是问题了。 介绍Mysql权限工作原理 查看所有用户

    2024年02月11日
    浏览(33)
  • 【实战】nodejs 必会技能 —— 封装 mysql 数据库连接

    [mysql - mysql中文文档翻译 - Breword 文档集合]:(https://www.breword.com/mysqljs-mysql) 安装依赖包: [mysql - npm]:(https://www.npmjs.com/package/mysql) 运行中若遇到如下报错,请检查输入信息是否正确(host、port、user、password 等),jdbc配置中拿到的相关信息尤其是密码很可能是加密后的 node -

    2024年02月10日
    浏览(45)
  • MySQL索引优化:提升查询速度的实战解析

    当涉及到大型数据库和复杂查询时,索引在MySQL中是一个重要的性能优化工具。通过使用索引,可以加速查询速度,减少查询的执行时间。下面是一个详细的MySQL添加索引的教程,使用Markdown格式进行说明。 步骤1:选择合适的列 首先,需要选择哪些列需要添加索引。通常情况

    2024年02月12日
    浏览(63)
  • Mysql 提升索引效率优化的八种方法

    目录 1. 选择唯一性索引 2. 为经常需要排序、分组和联合操作的字段建立索引 3. 为常作为查询条件的字段建立索引 4. 限制索引的数目 5. 尽量使用数据量少的索引 6. 数据量小的表最好不要使用索引 7. 尽量使用前缀来索引 8. 删除不再使用或者很少使用的索引 总结 索引的设计可

    2024年04月26日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包