【MySQL探索之旅】数据库设计以及聚合查询

这篇具有很好参考价值的文章主要介绍了【MySQL探索之旅】数据库设计以及聚合查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

📚博客主页:爱敲代码的小杨.

✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!

【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

1. 数据库设计

1.1 数据库设计基本概念

  • 数据库设计就是根据业务的具体需求,结合我们所学的 DBMS ,为了这个业务构造最优的数据存储模型。
  • 建立数据库中的表结构以及表与表之间的关联关系的过程。

1.2 数据库设计的步骤

  1. 需求分析(数据是什么?数据具有哪些属性?数据和属性之间的特点是什么)

  2. 逻辑分析(通过 ER图对数据库进行逻辑建模)

    【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

  3. 物理设计(根据数据库自身的特点把逻辑设计转换为物理设计)

  4. 维护设计(1. 对新的需求进行建表;2. 表优化)

1.3 表设计

1.3.1 一对一

例如:人 和 身份证 的关系

一个人只能对应一个身份证号

【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

1.3.2 一对多

例如: 班级 和 学生 的关系

一个班级多个学生

【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

1.3.3 多对多

例如:学生 和 课程 的关系

一个学生可以选择多个课程

一个课程可以被多个学生选择

【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

案例:

  1. 创建学生表:学生 id ,姓名

    create table student(
    	id int primary key auto_increment,
    	name varchar(20)
    );
    
  2. 创建课程表:课程表,课程名

    create table course(
    	courseId int primary key auto_increment,
    	courseName varchar(20)
    );
    
  3. 创建关联表:学生和课程之间的关系,需要包含学生id 和课程id 作为外键。

    create table student_course(
    	student_id int, 
     	course_id int,
     	primary key (student_id, course_id), 
     	foreign key (student_id) references student(id), 
     	foreign key (course_id) references course(courseId)
     );
    

2. 聚合查询

2.1 聚合函数

常见的统计总数、计算平局值等操作,可以使用聚合函数来实现,常见的聚合函数有:

函数 说明
COUNT([DISTINCT] expr) 返回查询的数据的数量
SUM([DISTINCT] expr) 返回查询到的数据的总和,忽略非数值
AVG([DISTINCT] expr) 返回查询到的数据的平均值,忽略非数值
MAX([DISTINCT] expr) 返回查询到的数据的最大值,忽略非数值
MIN([DISTINCT] expr) 返回查询到的数据的最小值,忽略非数值

案例:

  • count:计数

    -- 统计有多少位学生
    select count(*) from student;
    
    -- 统计学生表有多少个姓名,姓名为 NULL 不会计入结果
    select count(name) from student;
    

    【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

  • sum:总和

    -- 统计分数的总和
    select sum(score) from score;
    
    -- 统计分数小于70的总分,如果没有返回null
    select sum(score) from score where score<70;
    

    【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

  • avg:平均值

    -- 查询分数的平均值
    select avg(score) from score;
    
    -- 查询分数小于70的平均值,如果没有则返回 NULL
    

    【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

  • MAX:最大值

    -- 查询分数的最大值
    select max(score) from score;
    
    -- 查询60到90之间的最大值
    select max(score) from score where score>60 and score<90;
    
    -- 查询大于90的最大值,如果没有则返回 NULL
    select max(score) from score where score>90;
    

    【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

  • MIN:最小值

    -- 查询分数的最小值
    select min(score) from score;
    
    -- 查询分数在60到90之间的最小值
    select min(score) from score where score>60 and score<90;
    
    -- 查询分数在60以下的最小值,如果没有则返回 NULL
    select min(score) from score where score<60;
    

    【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

2.2 分组查询

select 中使用 group by 子句可以对指定列进行分组查询。需要满足:使用 group by 进行分组查
询时,select 指定的字段必须是“分组依据字段”,其他字段若想出现在 select 中则必须包含在聚合函
数中。

select column1, sum(column2), .. from table group by column1,column3;

案例:

测试表:职工表 id,name(姓名),role(职位),salary(工资)

create table emp(id int, name varchar(20), role varchar(20), salary int);


insert into emp values (1,'张三','Java开发',10000);
insert into emp values (2,'李四','Java开发',9000);
insert into emp values (3,'王五','Web开发',8000);
insert into emp values (4,'赵六','Web开发',9000);
insert into emp values (5,'王麻子','运维',8500);
insert into emp values (6,'玛晕','老板',100000);
  • 查询每个岗位的最高工资、最低工资和平均工资

    select role,max(salary),min(salary),avg(salary) from emp group by role;
    

    【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

2.3 条件过滤

group by 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 where 语句,而需要用
having

  • 查询平均工资低于9000的职位和它的平均工资

    select role,max(salary),min(salary),avg(salary) from emp group by role having avg(salary)<9000;
    

    【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql

【MySQL探索之旅】数据库设计以及聚合查询,MySQL探索之旅,数据库,mysql,sql文章来源地址https://www.toymoban.com/news/detail-845499.html

到了这里,关于【MySQL探索之旅】数据库设计以及聚合查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • MySQL数据库,聚合查询

    目录 1、聚合查询 1.1聚合函数 1.1.1count函数 1.1.2sum函数 1.1.3avg函数 1.1.4max函数 1.1.5min函数 1.2group by子句 1.3having 聚合函数查询又叫函数查询,它是通过一些特定的函数根据需求来查询相关的信息,常见的聚合函数为: COUNT - 求总数,不包含某字段为null值 SUM - 求和,不包含某字

    2023年04月21日
    浏览(39)
  • 【MySql】数据库的聚合查询

    写在最前面的话         哈喽,宝子们,今天给大家带来的是MySql数据库的聚合查询。在前面CRUD章节我们学习了表达式查询,表达式查询是针对列和列之间进行运算的,那么如果想在行和行之间进行运算,那么就需要用到聚合查询。 聚合查询除了包含聚合函数外(count,

    2024年02月09日
    浏览(39)
  • 探索Apache Hive:融合专业性、趣味性和吸引力的数据库操作奇幻之旅

    本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权利人所有。本博客的目的仅为个人学习和交流之用,并非商业用途。 我在整理学习笔记的过程中尽力确保准确性,但无法保证内容的完整性和时效性。本博客的

    2024年02月09日
    浏览(33)
  • 从 Oracle 到 MySQL 数据库的迁移之旅

    目录 引言 一、前期准备工作 1.搭建新的MySQL数据库 2 .建立相应的数据表 2.1 数据库兼容性分析 2.1.1 字段类型兼容性分析 2.1.2 函数兼容性分析 2.1.3 是否使用存储过程?存储过程的个数?复杂度? 2.1.4 是否使用触发器?个数?使用的场景? 2.2 建表过程中其他需要注意的事项

    2024年04月11日
    浏览(37)
  • MySQL数据库增删改查及聚合查询SQL语句学习汇总

    目录 数据库增删改查SQL语句 MySQL数据库指令 1.查询数据库 2.创建数据库 3.删除数据库 4.选择数据库 创建表table   查看所有表 创建表 查看指定表的结构 删除表 数据库命令进行注释 增删改查(CRUD)详细说明 增加 SQL库提供了关于时间的函数:now()  查询 查询表作列与列之间进

    2024年02月09日
    浏览(64)
  • 【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

    在上次学习的内容中,我们讲解了: 使用DDL语句来操作数据库以及表结构(数据库设计) 使用DML语句来完成数据库中数据的增、删、改操作(数据库操作) 我们今天还是继续学习数据库操作方面的内容:查询(DQL语句)。 查询操作我们分为两部分学习: DQL语句-单表操作

    2024年02月02日
    浏览(64)
  • 【MySQL数据库】--- 初识数据库以及MySQL数据库在Linux云服务器下载(详细教程)

    🍎 博客主页:🌙@披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 MYSQL数据库 🌙请不要相信胜利就像山坡上的蒲公英一样唾手可得,但是请相信,世界上总有一些美好值得我们全力以赴,哪怕粉身碎骨!🌙 🍉一起加油,去追寻、去成为更好的自

    2024年02月03日
    浏览(42)
  • 【MySQL数据库】--- 初始数据库以及MySQL数据库在Linux云服务器下载(详细教程)

    🍎 博客主页:🌙@披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 MYSQL数据库 🌙请不要相信胜利就像山坡上的蒲公英一样唾手可得,但是请相信,世界上总有一些美好值得我们全力以赴,哪怕粉身碎骨!🌙 🍉一起加油,去追寻、去成为更好的自

    2023年04月24日
    浏览(39)
  • 【MySQL】探索MySQL存储过程的魔力,初学者的数据库编程秘笈(内含实战SQL脚本)

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:重温MySQL MySQL存储过程作为一种服务器端的 数据库编程方式 ,提供了高效、可重用的方法来执行相对复杂的数据库操

    2024年02月15日
    浏览(43)
  • Mysql 数据库DQL 数据查询语言 SELECT 基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询——包含DQL所有查询语句。吐血分享。

    DQL:数据查询语言; 用来对表内的数据进行查找 。Database Query Language SQL语句分为:基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询。  可以发现name字段就只剩下一个张三了;   条件: 条件查询—比较运算符 比较运算符 功能 大于 = 大于等于 小于 = 小于等

    2024年01月19日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包