【MySQL数据库】----MySQL的增删查改(进阶)

本文详细探讨了MySQL中的外键约束,解释了其工作原理和作用。接着介绍了表的设计,包括一对一、一对多和多对多关系的实现。深入讲解了聚合查询,包括GROUP BY和HAVING子句的使用。联合查询部分涵盖笛卡尔积、内连接、外连接和子查询,最后讨论了SQL关键字的执行顺序。
摘要由CSDN通过智能技术生成

目录

1.外键约束 foreign key

2.表的设计

表的三种形式:

3.聚合查询

3.1.聚合函数

3.2. GROUP BY子句

3.3HAVING

4.联合查询

4.1笛卡尔积

4.2.内连接和外连接

4.3.自连接(用的并不多)

4.4.子查询

4.5.合并查询

5.sql中各个关键字执行的先后顺序


1.外键约束 foreign key

外键用于关联其他表的主键或唯一键

--语法
foreign key (字段名) references 主(列)

1.外键约束同样约束着父表,当父表的某个记录被子表中依赖着的时候,此时尝试进行删除或者修改,都会失败

2外键的工作原理:在子表中插入新的记录时,就会先根据对应的值,在父表中先查询,查询到之后,才能够执行插入


2.表的设计

根据实际的问题的场景,把表给设计出来

如何来设计表呢?

一个典型的通用办法:先找出这个场景中涉及到的“实体”,然后来分析“实体之间的关系”

实体:实体就可视为是需求中的一些关键性名词

表的三种形式:

1.一对一的关系:一个账户对应一个学生,一个学生也只能有一个账户

2.一对多的关系:一个学生处于一个班级中,一个班级也可以包含多个学生

3.多对多的关系:一个学生可以选择多个课程,一个课程也可以包含多个学生


3.聚合查询

3.1.聚合函数

--聚合函数
1.count((distinct) expr)  -- 返回查询到的数据的数量
2.sum((distinct) expr)  -- 返回查询到的数据的总和,不是数字没有意义
3.avg((distinct) expr)  -- 返回查询到的数据的平均值,不是数字没有意义
4.max((distinct) expr)  -- 返回查询到的数据的最大值,不是数字没有意义
5.min((distinct) expr)  -- 返回查询到的数据的最小值,不是数字没有意义

3.2. GROUP BY子句

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

3.3HAVING

group by子句进行分组后,不能使用where进行筛选了,而需要使用having!!!


4.联合查询

实际开发中往往数据来自不同的表,所以需要使用多表联合查询,而多表查询就是对多种表进行笛卡尔积

4.1笛卡尔积

假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。

MySQL使用笛卡尔积进行多表查询,其原理就是通过多张表进行笛卡尔积组成一个临时表,通过这个临时表去除一些不需要的数据,然后再取去除数据的基础上再加上条件最终得到 我们想要的数据

4.2.内连接和外连接

--语法(内连接))
select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;
select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;

内连接:指连接结果包含符合连接条件的就行,参与连接的两个表都应该符合连接条件

外连接:连接条件不仅包含符合连接条件的行同时也包含自身不符合条件的行

左外连接:左边表的数据行全部保留,右边表保留符合连接条件的行

右外连接:右边表的数据行全部保留,左边表保留符合连接条件的行

全外连接:左外连接 union 右外连接

想要进一步了解:内连接与外链接的区别_坤少IT之路-CSDN博客_内连接和外连接的区别

4.3.自连接(用的并不多)

自连接是指在同一张表中连接自身进行查询,其本质就是把 行与行 之间的比较变成 列与列 

4.4.子查询

嵌套在其他sql语句中的select语句,也叫嵌套查询,不做多介绍。

//详细请看这个:

SQL语句基础-子查询_livovil的博客-CSDN博客_子查询的sql语句

4.5.合并查询

1.union(去重)

--语法 
select 字段 from 表名(where) 条件
union
select 字段 from 表名(where) 条件

2.union all(不去重)

--语法 
select 字段 from 表名(where) 条件
union all
select 字段 from 表名(where) 条件

5.sql中各个关键字执行的先后顺序

from > on> join > where > group by > with > having >select > distinct > order by > limit

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

w-ib

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

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

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

打赏作者

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

抵扣说明:

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

余额充值