当前位置:网站首页>MySQL数据库高级使用
MySQL数据库高级使用
2022-08-03 10:30:00 【Ding Jiaxiong】
24. MySQL数据库高级使用
文章目录
24.1 条件查询
24.1.1 聚合函数
作用
- 把当前所在表当做一个组进行统计
24.1.2 group 分组查询
group by
将查询结果按照1个或多个字段进行分组,字段值相同的为一组
concat 可以查询同组中的数据
知识要点
group by
- 将查询结果按照1个或多个字段进行分组,字段值相同的为一组
group by + group_concat()
- 根据分组结果,使用group_concat()来放置每一个分组中某字段的集合
group by + 聚合函数
group by + having
group by + with rollup
- 在数据表中新增一行,记录操作结果(一般是汇总结果)
24.1.3 limit 分页(限制)查询
24.1.4 连接查询(数据来自多张表)
内连接
- 查询的结果为两个表符合条件匹配到的数据
外连接
左外连接
- 查询的结果为两个表匹配到的数据和左表特有的数据(对于右表中不存在的数据使用null填充)
右外连接
- 查询的结果为两个表匹配到的数据和右表特有的数据(对于左表中不存在的数据使用null填充)
自连接
只需要使用一个表
- 加快查询速度,减少数据表占用空间
24.1.5 子查询
把一个查询的结果当做另一查询的条件
分类
- 标量子查询
- 列子查询
- 行子查询
24.2 外键
24.3 视图
一个能够把复杂SQL语句的功能封装起来的一个虚表
24.3.1 优点
- 方便操作
- 减少复杂sql语句
- 增强可读性
- 增强复用性
24.3.2 视图的使用
创建
查看
使用
24.4 事务
作为一个基本工作单元执行的一系列SQL语句的操作,要么完全地执行,要么完全地不执行。
24.4.1 四大特性 ACID
A 原子性
- 一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚
C 一致性
- 数据库总是从一个一致性的状态转换到另一个一致性的状态
I 隔离性
- 一个事务所做的修改在最终提交之前,对其他事务是不可见的
D 持久性
- 一旦事务提交,则其所做的修改会永久保存到数据库
24.4.2 事务的使用
开启
- begin
- start transaction
提交
- commit
回滚
- rollback
24.5 索引
快速查找数据的线索
24.5.1 本质
- 一种特殊的文件,包含着对数据表里所有记录的位置信息
24.5.2 使用
查看
创建
删除
24.5.3 优缺点
优点
- 加快数据的查询速度
缺点
- 创建索引会浪费时间和占用磁盘空间,并且随着数据量的增加所耗费的时间会越来越多
24.5.4 使用原则
- 经常发生数据更新的表避免使用过多的索引
- 数据量小的表没有必要使用索引
- 数据量较大同时不会频繁发生数据更改的表可以使用索引
24.6 设计范式
不同的规范要求被称为不同的范式
各种范式呈递次规范,越高的范式数据库冗余越小
24.6.1 划分
第一范式 1NF
- 字段的原子性,即一个字段不能够再分成其他几个字段
第二范式 2NF
满足1NF 的基础上
- 表必须有一个主键
- 非主键字段必须完全依赖于主键,而不能只依赖于主键的一部分
第三范式 3NF
满足2NF 的基础上
- 非主键字段必须直接依赖于主键,不能存在传递依赖
巴斯-科德范式 BCNF
第四范式 4NF
第五范式 5NF
24.7 E-R模型
实体-关系模型
- 描述数据库存储数据的结构模型
24.7.1 表现形式
- 实体 矩形
- 属性 椭圆
- 关系 菱形
24.7.2 三种关系
- 一对一
- 一对多
- 多对多
24.8 Python 连接MySQL数据库
pymysql 模块
使用步骤
- 导包
- 创建连接对象
- 获取游标对象
- 增删改查
- 关闭游标和连接
24.9 SQL语句参数化
24.9.1 SQL 注入
- 用户提交带有恶意的数据与SQL语句进行字符串方式的拼接,从而影响SQL语句的语义,最终产生数据泄漏的现象
24.9.2 防止SQL注入
24.9.3 参数化
- SQL语句中的参数使用%s来占位
- 将SQL语句中%s占位所需要的参数存在一个列表中,把参数列表传递给execute()方法
边栏推荐
猜你喜欢
随机推荐
go中select语句
进入 SQL Client 创建 table 后,在另外一个节点进入 SQL Client 查询不到
GoogLeNet系列解读「建议收藏」
Mysql OCP 28题
SQL教程之递归 CTE Common Table Expression
57.【全排列的详细分析】
简述设计的意义是什么_定义和概念的最大区别
全新的Uber App设计
夏季整治百日行动进行时:700余交通安全隐患被揪出
Recursive training
金先生谈长效生长激素出海与产品力
流水线设计的方法和作用「建议收藏」
如何将Oracle/MySQL中的数据迁移到GBase 8c中?
对话 | AI、机器学习在材料科学研究中能发挥哪些作用?
Mysql OCP 73题
4G采集ModbusTCP转JSON接MQTT云平台
error C2872: “flann”: 不明确的符号 解决方法
LeetCode_多叉树_中等_429.N 叉树的层序遍历
QT with OpenGL(Shadow Mapping)(面光源篇)
CRT command keys