MySQL约束与查询操作详解

需积分: 9 0 下载量 123 浏览量 更新于2024-09-04 收藏 11KB MD 举报
"这篇资源是关于JavaWeb基础学习的一部分,主要涵盖了MySQL数据库的约束和一些基本的查询操作,包括排序查询、聚合函数以及分组查询。作者分享了学习笔记,旨在方便个人复习和与他人交流,同时适用于初学者进阶MySQL知识。" 在JavaWeb开发中,MySQL是一个常用的数据库系统,其约束机制对于数据完整性和一致性至关重要。MySQL约束主要包括以下几种: 1. 主键(Primary Key):用于唯一标识表中每一行数据,不允许有重复且不能为空。一个表只能有一个主键。 2. 唯一约束(Unique):与主键类似,确保某一列的值在整个列中是唯一的,但允许存在NULL值。 3. 非空约束(Not Null):指定列的值不能为NULL,确保数据的完整性。 4. 外键(Foreign Key):用于建立和加强两个表之间的关联,通常用于实现参照完整性。 5. 检查约束(Check):限制列中的值必须满足特定条件,但MySQL不直接支持,通常通过触发器来实现。 接下来,我们来看一下DQL查询语句中的关键点: 1. 排序查询:通过`ORDER BY`子句实现,可以指定一个或多个排序字段,以及升序(ASC)或降序(DESC)排序方式。排序是多级的,当前面的条件相同时,才会考虑后面的条件。 2. 聚合函数:这些函数用于对一组值进行统计计算。 - `COUNT()`:计算非空值的数量,可以用于计算总行数(`COUNT(*)`)。 - `MAX()`:返回一列的最大值。 - `MIN()`:返回一列的最小值。 - `SUM()`:计算一列的总和。 - `AVG()`:计算一列的平均值。聚合函数会忽略NULL值,若要包含NULL值,可以使用`IFNULL()`函数。 3. 分组查询:通过`GROUP BY`子句将数据按指定的字段进行分组,分组后的查询通常结合聚合函数使用,如计算每个分组的平均值或总数。`WHERE`子句用于在分组前过滤数据,而`HAVING`子句则在分组后过滤满足特定条件的分组。 举例说明: - 按性别分组,查询男女学生的平均数学成绩:`SELECT sex, AVG(math) FROM student GROUP BY sex;` - 添加分组后的人数统计:`SELECT sex, AVG(math), COUNT(id) FROM student GROUP BY sex;` - 限制只有数学成绩超过70分的分组:`SELECT sex, AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex;` - 进一步限制分组后人数需大于2人的结果:`SELECT sex, AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;` 通过这样的学习和实践,可以更好地理解和掌握MySQL数据库的基本查询和约束机制,为后续的JavaWeb开发打下坚实的基础。