fsoooo Blog

内不欺己,外不欺人,上不欺天。君子所以慎独。

Mysql学习笔记 项目中常用的优化方法

一、EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。 下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式 k...

Mysql学习笔记 面试15问

MySQL在面试中经常被问到,本文总结了15个面试中的经典问题。 1. 数据库三大范式是什么? 第一范式:每个列都不可以再拆分。 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。 事实上我...

Mysql学习笔记 都是删除,delete、drop、truncate有什么区别?

在 MySQL 中,删除的方法总共有 3 种:delete、truncate、drop,都是删除,delete、drop、truncate有什么区别? 1.delete detele 可用于删除表的部分或所有数据,它的使用语法如下: delete from table_name [where...] [order by...] [limit...] PS:[] 中的命令为...

Mysql学习笔记 连接

多表查询经常用到连接,各种连接之间的区别应该注意总结。 本文来分享一下内连接、外连接、左连接、右连接、等值连接、自然连接和自连接之间的区别。 首先大概认识各种连接的关系和由来: 表之间的连接常有以下两种: 在SELECT语句的WHERE子句中使用比较运算符给出连接条件,对表进行连接,将这种表示形式称为连接谓词表示形式。连接谓词中的比较符可以是<、<=、...

Mysql学习笔记 踩坑的反斜杠

在MySQL中有很多特殊符号,比如字符串中有单引号(’)、双引号(”)、反斜杠(\)等等,有时候不注意就会踩坑。在我们平时操作SQL中,一不注意这些符号就会给你背上一口锅。今天来看看反斜杠(\)都有哪些坑。 INSERT语句中有反斜杠(\) 实际测试 用下面这些SQL来测试一下反斜杠(\)在INSERT语句 INSERT INTO `demo0526` (`id`, `text`...

Mysql学习笔记 能在docker 中跑 Mysql吗?

##容器 容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋。 同时也带来了一个热点问题被大家所争论不以:数据库 MySQL 是否需要容器化? 认真分析大家的各种观点,发现赞同者仅仅是从容器优势的角度来阐述 MySQL 需要容器化,几乎没有什么业务场景进行验证...

Mysql学习笔记 索引提高查询速度

#为什么索引能提高查询速度 MySQL 的基本存储结构 MySQL的基本存储结构是页(记录都存在页里边): 各个数据页可以组成一个双向链表 每个数据页中的记录又可以组成一个单向链表 每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指...

Mysql学习笔记 死锁产生原因和解决方法

#Mysql 锁类型 一、锁类型介绍: MySQL有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表...

Mysql学习笔记 时间日期字段的选择

在日常数据库设计中,几乎每张业务表都带有一个日期列,用于记录每条记录产生和变更的时间。 比如用户表会有一个日期列记录用户注册的时间、用户最后登录的时间。 又比如,电商行业中的订单表(核心业务表)会有一个订单产生的时间列,当支付时间超过订单产生的时间,这个订单可能会被系统自动取消。 日期类型虽然常见,但在表结构设计中也容易犯错,比如很多开发同学都倾向使用整型存储日期类型,同时也会忽略不同...

Mysql学习笔记 数据库设计规范

1. 规范背景与目的 MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。 2. 设计规范 2....