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

在这里插入图片描述

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

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

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

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

1. 数据库设计

1.1 数据库设计基本概念

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

1.2 数据库设计的步骤

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

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

    image-20240407085211974

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

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

1.3 表设计

1.3.1 一对一

例如:人 和 身份证 的关系

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

image-20240407085627653

1.3.2 一对多

例如: 班级 和 学生 的关系

一个班级多个学生

image-20240407085731860

1.3.3 多对多

例如:学生 和 课程 的关系

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

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

image-20240407092458971

案例:

  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;
    

    image-20240407110627436

  • sum:总和

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

    image-20240407111805677

  • avg:平均值

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

    image-20240407112027574

  • 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;
    

    image-20240407112339701

  • 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;
    

    image-20240407113012629

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;
    

    image-20240407131309574

2.3 条件过滤

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

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

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

    image-20240407131726751

  • 83
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 126
    评论
### 回答1: MySQL 数据库中可以使用聚合函数来对查询结果进行统计分析。常用的聚合函数包括:COUNT()、SUM()、AVG()、MIN()、MAX()。 例如,在一个订单表中,想要统计订单总数,可以使用如下语句: ``` SELECT COUNT(*) FROM orders; ``` 如果想要统计订单总额,可以使用如下语句: ``` SELECT SUM(amount) FROM orders; ``` 若想对某个字段求平均值,可以使用AVG函数,例如: ``` SELECT AVG(price) FROM products; ``` 更多详细用法可以参考MySQL 官方文档。 ### 回答2: MYSQL数据库中的聚合函数可以对数据进行汇总和计算。聚合函数一般用于统计或者分析数据,如查询总和、平均值、最大值、最小值、计数等。 聚合函数有很多种,常用的包括SUM、AVG、MAX、MIN和COUNT等。这些函数可以用于单个列或多个列,也可以与WHERE子句一起使用,从而实现更精确的数据查询和分析。 例如,假设我们有一个名为Students的表,其中包含学生的姓名、性别、年龄和成绩等信息。我们可以使用聚合函数来查询这些学生平均年龄和成绩的总和。 查询平均年龄: SELECT AVG(age) FROM Students; 查询成绩总和: SELECT SUM(score) FROM Students; 我们还可以将聚合函数与GROUP BY子句一起使用,以对每个组进行聚合,进一步分析和统计数据。例如,我们可以按性别分组并计算每个性别的平均年龄和成绩总和。 按性别分组查询平均年龄和成绩总和: SELECT gender, AVG(age), SUM(score) FROM Students GROUP BY gender; 聚合函数在数据分析和统计方面非常有用。通过熟练掌握这些函数的使用方法,我们可以更好地理解和分析数据,以便做出更有意义的决策。 ### 回答3: MySQL数据库是一种现代的关系型数据库管理系统,常用于Web应用程序开发中存储和管理数据。在MySQL中,聚合函数可以帮助我们对数据进行统计和分析。聚合函数可以对数据库中的数据进行处理,并返回聚合数据的结果。 MySQL中常用的聚合函数包括AVG()、SUM()、COUNT()、MAX()和MIN()。这些函数可以用于单个列或多个列,以及一些特定条件和限制。 AVG()函数用于计算一个列中所有值的平均值,例如: SELECT AVG(column_name) FROM table_name; SUM()函数用于计算一个列中所有值的总和,例如: SELECT SUM(column_name) FROM table_name; COUNT()函数用于计算一个列中值的数目,例如: SELECT COUNT(column_name) FROM table_name; MAX()函数用于计算一个列中最大值,例如: SELECT MAX(column_name) FROM table_name; MIN()函数用于计算一个列中最小值,例如: SELECT MIN(column_name) FROM table_name; 在MySQL中,你可以在一个查询语句中使用多个聚合函数,并使用GROUP BY子句对结果进行分组。GROUP BY子句通常配合聚合函数使用,可对结果集按照一个或多个列进行分组。例如: SELECT column_name1, COUNT(column_name2), MAX(column_name3) FROM table_name GROUP BY column_name1; 此查询将根据column_name1对表table_name进行分组,并显示每组的计数和最大值。 总之,聚合函数是MySQL数据库中的一个强大工具,它可以帮助开发人员实现高效的数据统计和分析,以更好地理解和使用数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 126
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲代码的小杨.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值