【Mysql进阶语句】


学习相关内容

通过这篇博客,我们将了解关于Mysql数据库的约束和一些高级查询,一些相关的函数表达式.


一、什么是数据库约束

关于数据库约束是用来确保数据满足业务规则的手段,防止无效的数据进入到表中,以保护数据的实体完整性。

1.约束的六大分类

1.NOT NULL (非空约束)指某列不能为空
2.UNIQUE (唯一约束)保证某列的值必须唯
3.DEFAULT (默认值约束)规定没有给列赋值时的默认值
4.PRIMARY KEY (主键约束)是NOT NULL 和UNIQUE的结合,用来确保某一列有唯一标识,可以没有,但至多一个
5.FOREIGN KEY (外键约束)外键约束经常和主键约束一起使用,用来确保数据的一致性,用于限制两个表的关系
6.CHECK (检查约束)用来检查数据表中,字段值是否有效

2.约束归类

主要归类为列级约束和表级约束

列级约束:NOT NULL | DEFAULT | PRIMARY KEY | UNIQUE | CHECK
表级约束:PRIMARY KEY | UNIQUE | CHECK | FOREIGN KEY

实例
列约束:在字段名和类型后面追加约束类型即可
表约束:在各个列字段的最下面

CREATE TABLE 表名(
    字段名 字段类型 列级约束,
    字段名 字段类型,
    表级约束
  )

二、聚合查询

1.聚合函数

AVG() - 返回集合的平均值
COUNT() - 返回集合中的项目数
MAX() - 返回集合中的最大值
MIN() - 返回集合中的最小值
SUM() - 返回集合中所有或不同值的总和

部分函数举例(当用到count函数时,数据为NULL不会计入结果)
count函数实例
查询班级个数(可以使用去重(distinct))
在这里插入图片描述

2.Group By

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

例如查询每个班级有多少个学生(先使用group by 根据班级分组)

在这里插入图片描述

3.Having

GROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,(重点)不能使用 WHERE 语句,而需要用HAVING

原表
在这里插入图片描述
我们的目的是统计各班人数,但是要排除班级人数大于等于3的(即要求拿到人数少于3的班级)(必须是查询结果中的存在的值用来做条件)
在这里插入图片描述

三、联合查询(多表查询)

1.内连接

比如我们要查询许仙同学的成绩(分为两个表,一个是学生表,一个是成绩表)(有两种)
在这里插入图片描述
在这里插入图片描述

1.select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件

在这里插入图片描述

2.select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;

在这里插入图片描述

2.外连接

外连接分为左外连接和右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接。

– 左外连接,表1完全显示 select 字段名 from 表名1 left join 表名2 on 连接条件;
– 右外连接,表2完全显示 select 字段 from 表名1 right join 表名2 on 连接条件;

比如下面的查询(""老外学中文"同学并没有成绩表,可是如果学生表完全显示,也会打印这个学生)

左连接

在这里插入图片描述

右连接(分数表完全显示),所以没了"老外学中文这个同学"

在这里插入图片描述

3.自连接

同一张表连接自己查询

显示所有计算机原理比java成绩高的成绩信息(首先拿到这两学科id)

在这里插入图片描述

4.子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询
1.单行子查询

查询与"许仙"同学的同班同学

在这里插入图片描述
2.多行子查询

查询语文或者java课程的成绩信息

在这里插入图片描述
在这里插入图片描述

5.合并查询

在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all。使用UNION
和UNION ALL时,前后查询的结果集中,字段需要一致。

union 该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行

在这里插入图片描述

union all 该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行

在这里插入图片描述

6.一点小补充

1.去重:DISTINCT
2.排序:ORDER BY
3.模糊匹配: LIKE
4. 范围查询: BETWEEN …AND…
5. 分页查询: LIMIT n OFFSET s
6. 别名: AS

总结

通过写这篇博客,对一些复杂查询有了更深刻的了解,对以前的知识有了不同的理解

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值