MySQL精简笔记

news2025/1/28 1:02:11
  • 基础类型
    • 整型:bit,tinyint,smallint,int,bigint
    • 浮点:fload,double(M:整数+小数的位数,D:小数的位数)
    • 无符号: decimal,numeric(M,D)(正数)
    • 字符串:char(255),varchar(64kb),text(64kb),mediumtext(16MB),blob(字节,64kb)
    • 时间:datatime(8),timestamp(4,70-38年)
  • 基础命令
    • 数据库
      • create if not exists database 库 set utf8mb4
      • drop if exists 库
      • show databases
      • create table 表(字段 类型)
      • drop table 表
      • show tables
      • desc 表
      • 新增列:alter table 表 add 字段 类型
      • 修改列:alter table 表 modify 字段 新类型
      • 修改列:alter table 表 change 旧字段 新字段 新类型
      • 删除列:alter table 表 drop column 字段
    • 行和列
      • 新增或替换:replace into 表(字段) values(值)
      • 仅新增:insert into 表(字段) values(值)
      • 有则不增:insert ignore 表(字段) values(值)
      • 导入文件:load data infile 路径 into table 表
      • delete from 表 where 条件
      • select 字段 from 表
      • update 表 set 字段1=x,字段2=y
  • 进阶查询
    • 去重:select distinct 字段 from 表
    • 排序:select * from 表 order by 字段 (ASC升/DESC降)
    • 分页:select * from 表 limit n / n,s / n offset s(s起始,n个数)
    • 条件:select * from 表 where 表达式
  • 聚合查询
    • COUNT,SUM,MAX,MIN,AVG
    • group by 字段 having 条件
  • 多表查询
    • 内连接:select 字段 from 表1 别名1 join 表2 别名2 on 条件
    • 内连接:select 字段 from 表1 别名1,表2 别名2 where 条件
    • 左连接:select 字段 from 表1 left join 表2 on 条件
    • 右外连接:select 字段 from 表1 right join 表2 on 条件
    • 子查询:(语句)别名
    • 合并查询:union(并集),union all(并集),intersect(交集,mysql不支持),in(交集),exists(交集)
  • 数据库三范式
    • 表中的每个列都应该是不可分割的最小单元
    • 表中的每一列都完全依赖于主键
    • 每一列都直接依赖于主键,并且不传递依赖于其他列
  • 约束
    • 非空:not null
    • 唯一:unique
    • 默认:default
    • 主键:primary key 字段 auto-increment
    • 外键:foreign key
    • 检查:check (x>1 and x<3)
  • 索引
    • 底层原理

      • B树,B+树
      • B树:多路平衡查找树,叶子节点在同层,数据存在每个节点,节点中的键按照升序排序
      • B+树:在B树的基础上,数据只存在叶子节点,叶子节点之间相互连接
    • 创建索引

      • 主键,唯一,外键
      • create index 索引名 on 表(字段1,字段2,...)
      • show index from 表
      • drop index 索引名 on 表
    • 索引类型

      • 数据结构:B+树索引、Hash索引、Full-text 索引(使用倒排索引)
      • 物理存储:聚簇索引(聚集索引)、二级索引(辅助索引)
      • 索引字段:主键索引、唯一索引、普通索引、前缀索引
      • 字段数量:单列索引、联合索引
    • 索引覆盖和回表查询

      • 索引覆盖:索引包括了查找的所有列,不需要回表查询
      • 回表查询:从二级索引获取到主键,再根据主键去聚簇索引查询数据
    • 创建原则
      在这里插入图片描述

    • 索引失效
      在这里插入图片描述

  • 事务
    • AICD

      • 原子性:要么全部完成,要么全部不做
      • 一致性:结果一致,A->B,A减B增,总量不变
      • 隔离性:不同事务互不干扰,也不可见
      • 持久性:执行完的数据保存到磁盘中
    • 脏读,不可重复读,幻读

      • 脏读:读未提交数据,因事务回滚而数据失效
      • 不可重读读:同一个数据,每次读的结果不一样
      • 幻读:旧数据没有改变,但是新插入的数据导致事务出现问题(快照读,MVCC只能看到数据的改变,看不到数据的插入)
  • 相关锁
    • 行锁:指对表中的某一行数据进行锁定,粒度最细,并发性能影响最小。
    • 表锁:指对整张表进行锁定
    • 间隙锁:索引范围中的“空隙”进行锁定,防止其他事务在这个范围内插入新数据。间隙锁用于解决幻读问题
  • 分析慢查询
    • 慢查询日志
      • slow_query_log=1(开启慢日志)
      • long_query_time=2(超过2s)
    • Skywalking,Prometheus,Arthas等工具
  • explain/desc(seleect信息)
    • 可能使用的索引:possible_keu
    • 命中索引:key
    • 索引长度:key_len
    • 优化建议:Extran(Using where/Index, condition)
    • 读取行数:rows
    • 索引等级:type

在这里插入图片描述

  • SQL优化
    • 使用集群

    • 分库分表

    • 表优化

      • 合适的数据类型
    • 索引优化

      • 索引要符合创建原则
    • SQL语句优化

      • select指定列
      • 尽可能的使用索引,避免索引失效
      • 多表连接要以小表为驱动
      • union all > union > or

在这里插入图片描述

  • MySQL的存储引擎
    • MyISAM(早期,表锁)
    • InnoDB(默认,事务,表行锁,外键)
    • MEMORY(内存,表锁)
  • 相关日志
    • 回滚日志:undo log(反向操作,原子性,一致性)
    • 重做日志:redo log(内存缓冲池,数据页16kb,持久性)
    • 二进制日志:bin log(DDL数据定义,DML数据操纵语句)
    • 中继日志:relay log(主从结构,同步数据)
    • 错误日志:error log
    • 慢查询日志:show query log
    • 一般查询日志:general log
  • MVCC(多版本并发控制,隔离性)
    • 针对修改操作:一行数据的隐藏字段(最近事务ID,回滚指针,隐藏主键)和undo log构成此数据的版本链

    • 针对读操作:生成ReadView,RC(读已提交)每次读都生成新的,RR(读未提交)只用第一次读生成的

      • ReadView:(活跃事务的ID集合,最小活跃事务ID,预分配事务ID,快照创建事务ID)
      • 根据ReadView到数据的版本链中比对:读取符合规则的(两种版本可读:当前事务中,非活跃的其它事务)

在这里插入图片描述

  • 集群
    • 主从结构,读写分离
    • 主节点的bin log日志记录了所有定义和操作语句
    • 从节点获取主节点的bin log,写入到relay log
    • 从节点执行relay log中的语句
  • 分库分表
    • 垂直分库:不同业务分到不同库(用户,订单,商品)
    • 垂直分表:不同字段放入不同表(text,blob,不常用字段)
    • 水平分库:一个库变多个库(1100w,100w200w)
    • 水平分表:一张表变多张表(1100w,100w200w)
  • 分库分表后出现的问题
    • 分布式一致性
    • 跨节点查询、分页,排序
    • 主键避重
    • 使用MyCat等工具解决上述问题
  • 分库分表后如何生成全局ID
    • UUID
    • redis
    • 雪花算法(1符号位,41时间戳,10机器号,12序列号)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977632.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++类和对象知识巩固:相关习题解析

目录 1&#xff0c;求下面析构的顺序 2&#xff0c;以下调用了多少次拷贝构造 3&#xff0c;计算日期到天数的转换 4&#xff0c;日期差值 5&#xff0c;打印日期 6&#xff0c;累加天数 7&#xff0c;求123...n&#xff0c;要求不能使用乘除法、for、while、if、else、…

springboot2自定义starter

1.创建maven项目。首先根据springboot 约定规范&#xff0c;Starter项目的命名规范如下&#xff1a; 建议自定义的starter 以 xxx-spring-boot-starter 命名&#xff0c;官方的Starter一般都是以spring-boot-starter-为前缀。这样做的目的是为了避免与官方或其他第三方提供的St…

C#-读取测序数据的ABI文件并绘制svg格式峰图

本地环境&#xff1a;win10&#xff0c;visual studio 2022 community 目录 前言问题描述实现效果解决思路实现要点ABI文件的组织方式svg绘制问题变色碱基值 动态设置svg图像宽度 前言 本文是在已有的代码基础上进行的开发&#xff0c;前期已经实现&#xff1a; ABI文件的解析…

8090怀旧视频素材去哪里找?怀旧童年的素材库分享给你

在这个充满活力的现代社会中&#xff0c;对80和90年代的复古风情的怀旧情感愈加浓厚。那些年的音乐、电影、日常生活乃至街头巷尾的景象&#xff0c;总能唤起人们的美好回忆。对于视频创作者而言&#xff0c;制作一部带有80和90年代怀旧风格的视频&#xff0c;不仅能触动观众的…

cgroup:Linux的资源控制机制

文章目录 1 cgroup 的主要功能1.1 资源限制1.2 优先级控制1.3 资源隔离1.4 资源监控 2 cgroup 的层次结构3 cgroup 子系统4 示例&#xff1a;使用 cgroup 控制 CPU 和内存4.1 创建 cgroup4.2 设置资源限制4.3 将进程添加到 cgroup 5 使用 systemd 管理 cgroup6 总结参考链接封面…

【人工智能】NLP入门指南:自然语言处理基础全解析

文章目录 前言一、NLPNLP&#xff08;自然语言处理&#xff09;NLU&#xff08;自然语言理解&#xff09;NLG&#xff08;自然语言生成&#xff09; 二、分词1.什么是分词2.常见的分词工具3.jieba分词 三、词向量1.什么是词向量2.文本张量表示方法3.常见的词向量模型3.1 ont-ho…

QT键盘和鼠标事件

这些事件都在QWidget 中的保护成员方法中 都是虚函数在头文件中声明了 需要类外重现实现 如果头文件中声明 类外无实现就会报错 void Widget::keyPressEvent(QKeyEvent *event) {switch (event->key()) {//获取按键case Qt::Key_W://按键wqDebug()<<"按下w"…

【Linux】网络基础_4

文章目录 十、网络基础5. socket编程网络翻译服务 未完待续 十、网络基础 5. socket编程 网络翻译服务 基于UDP&#xff0c;我们实现一个简单的翻译。 我们导入之前写的代码&#xff1a; InetAddr.hpp&#xff1a; #pragma once#include <iostream> #include <sys…

2000-2022年各地级市能源消费数据(夜间灯光ArcGIS计算)

2000-2022年各地级市能源消费数据&#xff08;夜间灯光ArcGIS计算&#xff09; 1、时间&#xff1a;2000-2022年 2、指标&#xff1a;城市、省份、年份、能源消费总量(百吨标准煤) 3、范围&#xff1a;337个地级市 4、计算方法&#xff1a; 利用ArcGIS计算各地级市的DN总和…

【python案例】基于Python 爬虫的房地产数据可视化分析设计与实现

引言 研究背景与意义 房地产行业在我国属于支柱性产业&#xff0c;在我国社会经济发展中一直扮演着重要角色。房价问题&#xff0c;尤其是大中城市的房价问题&#xff0c;一直是政府、大众和众多研究人员关注的热点。如何科学地预测房价是房价问题的研究方向之一。随着互联网…

[WUSTCTF2020]朴实无华1

打开题目 扫目录用dirsearch扫&#xff0c;为节省建议只扫常见的目录&#xff0c;配置是&#xff1a; ./dirsearch.py -e bak,zip,txt,tgz,php -u http:..... -s 3 -t 20 访问一下 根据提示&#xff0c;再访问一次 提示不在这&#xff0c;抓包看看 根据提示&#xff0c;改ge…

(免费领源码)java#springboot#mysql大学校园旧物捐赠网站 25109-计算机毕业设计项目选题推荐

摘 要 在网络信息的时代&#xff0c;众多的软件被开发出来&#xff0c;给用户带来了很大的选择余地&#xff0c;而且人们越来越追求更个性的需求。在这种时代背景下&#xff0c;企业只能以用户为导向&#xff0c;按品种分类规划&#xff0c;以产品的持续创新作为企业最重要的竞…

cocos creator绘制网格背景(基于矢量绘图)

在2D游戏开发中&#xff0c;设计2D地图的背景实现通常有以下几种方式&#xff1a; 静态背景图&#xff1a; 最简单的方式是使用静态背景图&#xff0c;即将整个背景作为一个静态图像加载到游戏中。这种方式适用于简单的游戏或者背景不需要变化的场景。 平铺背景图&#xff1a;…

Mathematica 矩阵基础操作指南

使用 Mathematica 进行矩阵操作的指南 目录 使用 Mathematica 进行矩阵操作的指南引言创建矩阵矩阵运算加法与减法 矩阵乘法矩阵转置逐元素运算 矩阵的行列式与逆行列式逆矩阵 矩阵分解LU 分解QR 分解特征值与特征向量 矩阵的可视化矩阵的热图矩阵的网格图 末 引言 最近笔者在…

分布式事务-使用队列实现最终一致性

分布式事务-扣减库存 一、最终一致性架构图 1、服务 左侧&#xff1a;创建订单服务Server1 右侧&#xff1a;扣减库存服务Server2 中间&#xff1a;独立消息服务Server3 2、中间件&#xff1a; Kafka-MQ、MySQL-db 二、步骤 0、定义MQ&#xff0c;三个状态 prepareconf…

spring原理(自学第八天)

aop的实现原理 AOP 底层实现方式之一是代理&#xff0c;由代理结合通知和目标&#xff0c;提供增强功能 除此以外&#xff0c;aspectj 提供了两种另外的 AOP 底层实现&#xff1a; 第一种是通过 ajc 编译器在编译 class 类文件时&#xff0c;就把通知的增强功能&#xff0c;织…

传输层_计算机网络

文章目录 运输层UDPTCPTCP连接管理TCP三次握手TCP四次挥手 可靠机制流量控制拥塞控制 QUIC 运输层 网络层提供了主机之间的逻辑通信 运输层为运行在不同主机上的进程之间提供了逻辑通信 UDP(用户数据报协议)提供一种不可靠、无连接的服务&#xff0c;数据报 TCP(传输控制协议)…

【Linux详解】基础IO:软硬连接 | 动静态库管理

目录 软硬链接 1. 介绍 2.理解 2.1 如何理解硬链接&#xff1f; 2.2 如何理解软连接&#xff1f; 动静态库 1.介绍 1.1 使用 1.2 什么是库&#xff1f; 2.生成 2.1 静态库 2.2 动态库&#xff1a; 软硬链接 1. 介绍 1.1 软连接 是一个独立文件&#xff0c;具有独…

Stable Diffusion绘画 | 文生图-高分辨率修复-Hires.fix

开启「高分辨率修复」的作用是&#xff0c;提高图片分辨率&#xff0c;增加细节&#xff0c;从而让画面变得更清晰。 之所以不采取直接通过调整宽高来提高分辨率&#xff0c; 是因为绝大多数模型在训练时&#xff0c;精度都是 512x512&#xff0c;如果生成图片时&#xff0c;直…

云仓酒庄新纪元:雷盛红酒LEESON 401澳洲赤霞珠盛大发布

云仓酒庄新纪元&#xff1a;雷盛红酒LEESON 401澳洲赤霞珠盛大发布 在全球酒业市场的激烈竞争中&#xff0c;云仓酒庄始终以其敏锐的市场洞察力和卓越的产品品质引领行业潮流。近日&#xff0c;云仓酒庄宣布其精心筹备的雷盛红酒LEESON 401系列——澳洲原瓶进口赤霞珠正式上线…