MySQL学习笔记(十八)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL学习笔记(十八)

10.4 三范式总结


  • 第一范式: 有主键,具有原子性,字段不可分割
  • 第二范式:完全依赖, 没有部分依赖
  • 第三范式: 没有传递依赖
  • 【注意】:数据库设计尽量遵循三范式,但是还是根据实际情况进行取舍,有时可能会拿冗余换速度,最终用目的要满足客户需求。
  • 一对一设计,有两种设计方案:
  • 第一种设计方案:主键共享 (较少)
  • 第二种设计方案:外键唯一
  • 一对多设计:两张表,多 的表加外键
  • 多对多设计:三张表,关系表两个外键


【注意】:设计是理论上的,实践和理论都是为了满足客户的需求,有的时候会拿冗余换速度。实际开发中,一切以客户需求为准。


五、34道作业题


5.1 — 5.5


【习题1】取得每个部门最高薪水的人员名称
 ····// 先取得每个部门的最高薪资作为一张表 , 再和emp连接查询等值等部门的人员名称
  select e.ename , a.sal , e.deptno from (select max(sal) sal , deptno from emp group by deptno) as a join emp e on a.sal = e.sal and a.deptno = e.deptno ;
 【习题2】哪些人的薪水在部门的平均薪水之上
  select distinct e.ename , e.sal from  (select avg(sal) as sal , deptno from emp group by deptno) as a join emp e on (e.sal > a.sal and a.deptno = a.deptno);
 【习题3】取得部门中(所有人的)平均的薪水等级
  select e.deptno , avg(s.grade) from emp e join salgrade s on e.sal between s.losal and s.hisal group by deptno order by deptno asc ;
 【习题4】不准用组函数( Max),取得最高薪水(给出两种解决方案)
  方案一: select sal from emp order by sal desc limit 1 ;
  方案二: select sal from emp where sal not in(select distinct a.sal from emp a join emp b on a.sal < b.sal);  
 【习题5】取得平均薪水最高的部门的部门编号(至少给出两种解决方案)
  方案一: select deptno from emp group by deptno order by avg(sal) desc limit 1 ;
  方案二: select deptno  from emp group by deptno having avg(sal) = (select max(e.sal) from (select deptno , avg(


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
19天前
|
存储 关系型数据库 MySQL
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
66 0
|
19天前
|
关系型数据库 MySQL 数据库
Linux C/C++ 开发(学习笔记七):Mysql数据库C/C++编程实现 插入/读取/删除
Linux C/C++ 开发(学习笔记七):Mysql数据库C/C++编程实现 插入/读取/删除
59 0
|
11天前
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(3)——连接和嵌套查询
简简单单 My SQL 学习笔记(3)——连接和嵌套查询
|
11天前
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(2)——分组和简单数据的查询
简简单单 My SQL 学习笔记(2)——分组和简单数据的查询
|
11天前
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(1)——表中数据的整删改查
简简单单 My SQL 学习笔记(1)——表中数据的整删改查
|
19天前
|
关系型数据库 MySQL
MySQL学习笔记
MySQL学习笔记
|
19天前
|
安全 关系型数据库 MySQL
某教程学习笔记(一):09、MYSQL数据库漏洞
某教程学习笔记(一):09、MYSQL数据库漏洞
22 0
|
19天前
|
存储 关系型数据库 MySQL
《高性能Mysql》学习笔记(二)
《高性能Mysql》学习笔记(二)
139 0
|
19天前
|
存储 SQL 关系型数据库
《高性能Mysql》学习笔记(一)
《高性能Mysql》学习笔记(一)
98 0
|
19天前
|
关系型数据库 MySQL Linux
Linux C/C++ 开发(学习笔记六):MySQL安装与远程连接
Linux C/C++ 开发(学习笔记六):MySQL安装与远程连接
59 0