MySQL查询与约束详解:排序、聚合、分组与数据库管理
需积分: 6 5 浏览量
更新于2024-08-05
收藏 11KB MD 举报
"MySQL约束课堂笔记.md"
MySQL是世界上最流行的开源关系型数据库管理系统之一,它提供了丰富的功能来确保数据的一致性和完整性。这篇笔记主要涵盖了DQL(Data Query Language)查询语句以及数据库设计的一些基本概念。
## DQL: 查询语句
### 排序查询
在SQL中,我们可以使用`ORDER BY`子句对查询结果进行排序。默认是升序(ASC),如果需要降序排列,可以添加`DESC`关键字。当有多个排序条件时,如果第一个条件相同,才会考虑第二个条件。
### 聚合函数
聚合函数用于处理一组数据并返回单一值。常见的聚合函数包括:
- `COUNT()`:计算非空值的个数,可选参数`*`表示计算所有行。
- `MAX()`:找出列中的最大值。
- `MIN()`:找出列中的最小值。
- `SUM()`:计算所有非空值的总和。
- `AVG()`:计算平均值,忽略NULL值。可以使用`IFNULL()`函数处理可能存在的NULL值。
### 分组查询
`GROUP BY`语句用于将数据按一个或多个列进行分组。分组后,只能查询分组字段或聚合函数的结果。`WHERE`子句用于在分组前过滤数据,而`HAVING`子句则用于在分组后过滤数据,它可以与聚合函数一起使用。
例如,要按性别分组,查询男女学生的平均分和人数,可以使用以下语句:
```sql
SELECT sex, AVG(math), COUNT(id) FROM student GROUP BY sex;
```
如果希望只显示数学成绩高于70分的男女学生平均分和人数,可以添加`WHERE`和`HAVING`条件:
```sql
SELECT sex, AVG(math), COUNT(id)
FROM student
WHERE math > 70
GROUP BY sex
HAVING COUNT(id) > 2;
```
这里`HAVING`限制了分组后的结果,即只有人数大于2的性别才会被显示。
## 约束
在数据库设计中,约束是确保数据完整性的规则。MySQL支持多种类型的约束:
- **NOT NULL**:确保列中的值不能为空。
- **UNIQUE**:确保列中的每个值都是唯一的,不允许重复。
- **PRIMARY KEY**:一个表中的唯一标识,通常由一个或多个NOT NULL且UNIQUE的列组成。
- **FOREIGN KEY**:定义表间关系,确保引用完整性。
- **CHECK**:限制列中的值必须满足特定条件。
- **DEFAULT**:为列提供默认值,当插入新行时如果没有指定该列的值,就会使用默认值。
## 多表之间的关系
在关系数据库中,表之间的关系主要有以下几种:
- **一对一 (1:1)**:一个表的记录对应另一个表的一个记录。
- **一对多 (1:N)**:一个表的记录对应另一个表的多个记录。
- **多对多 (N:M)**:两个表的记录之间可以相互对应多个记录,通常通过中间表来实现。
## 范式
范式是数据库设计的一种规范化原则,目的是减少数据冗余和提高数据一致性。常见的范式有:
- **第一范式 (1NF)**:确保每一列的原子性,不允许有组合数据。
- **第二范式 (2NF)**:在1NF的基础上,消除部分依赖。
- **第三范式 (3NF)**:在2NF的基础上,消除传递依赖。
- **BCNF(Boyce-Codd范式)**:更严格的范式,消除了非平凡的函数依赖。
- **第四范式 (4NF)**:消除多值依赖。
## 数据库的备份和还原
备份数据库是防止数据丢失的重要措施。MySQL提供了`mysqldump`工具来创建数据库的备份文件。还原数据库则是将备份文件中的数据导入到数据库中。此外,还可以利用`mysql`命令行客户端或者图形界面工具来完成这个过程。
了解并熟练掌握这些知识点对于进行有效的数据查询和数据库设计至关重要。通过合理地使用约束和遵循良好的数据库设计原则,可以确保数据的准确性和系统的稳定性。
2023-08-02 上传
2023-05-01 上传
2023-10-27 上传
2023-05-30 上传
2023-09-18 上传
2023-10-14 上传
ygd666
- 粉丝: 1
- 资源: 1
最新资源
- AD元件库3D模型SMD元件模型.zip
- 24点ip地理位置查询程序(PHP+TXT) v0.9
- 基于中国移动cmpp3协议开发的短信网关
- bunner_pyGmae_python_游戏_pgzero_
- 行业文档-设计装置-用于人体健康咨询的服务平台.zip
- 基于Java的视频会议系统(程序+论文).rar
- Vue.js Element UI Mock.js 2020 电子商城后台管理项目实战视频
- ARSystem plugins for Pentaho Kettle:适用于Pentaho Data Integration Kettle V5的AR系统步骤和数据库插件-开源
- AD元件库3D模型按钮.zip
- 网络安全经典数据集NSL-KDD
- 卡尔曼滤波-2020_目标跟踪_卡尔曼滤波_
- 行业文档-设计装置-教学辅助书架.zip
- CMD-toe-开源
- 基于ssm框架实现的药品管理系统(技术栈spring+springmvc+mybatis+mysql+tomcat+jsp)
- C#鼠标改变ROI窗口大小源码.zip
- 专治无法删除文件文件夹,实用的文件解锁工具.rar