MYSQL
文章平均质量分 62
JarvanStack
保持简单
展开
-
[MySQL]性能分析优化工具
我们需要先找到需要优化的 sql 然后优化show logexplainshow profiles找到慢sql开发自己统计 sql metric (推荐)设置 慢sql 阈值打印到 MySQL 自己的阈值有些 sql 可能因为数据小挺快但是没有用到索引, MySQL 能记录没有用到索引的语句解决慢sql观察90%: 大部分慢 sql 很快就能看出性能瓶颈问题, InnoDB 多半就是索引问题, 就是索引失效了数据太多了啥的explain: sql 分析各个字段能分原创 2022-02-07 21:23:23 · 629 阅读 · 0 评论 -
[MySQL] InnoDB 锁详解
除非有什么特别的原因必须使用其他储存引擎, 不然 MySQL 就应该优先考虑 InnoDB锁的分类按照锁的细粒度分为行级锁页级锁(分段锁)表级锁乐观锁和悲观锁锁的分类按照使用方式分为乐观锁和悲观锁, 乐观锁和悲观锁是 2 钟思想, 跟编程语言和数据库没有关系乐观锁: 乐观锁不会上锁, 只是在数据更新的时候数据是否被并发改变, 如果改变了就放弃操作悲观锁: 悲观锁就是一般的锁, 会上锁, 上锁期间其他人不能修改数据乐观锁主要有 2 种实现方式, CAS 和 版本号1. CAS原创 2022-02-07 20:05:12 · 827 阅读 · 0 评论 -
mysql保存微信昵称特殊字符异常解决方法(已解决)
1.问题描述项目中的一个问题,微信用户注册的时候,微信用户的名称导致 MySQL 数据库插入异常Incorrect string value: '\xF0\x9F\x98\x82\xE6\x81...' for column 'nick_name' at row 1;这是一个用特殊字符的用户用了奇怪的账户名称比如????2. 问题原因因为 utf8 一个字符 3 个字节,但是特殊字符要占用 4 个字节,就是所 utf8 不够用了建议使用 utf8mb4 字符集3. 问题解决建议在特原创 2021-03-17 15:17:59 · 1256 阅读 · 0 评论 -
文章的评论及回复表的数据库设计方法
需求:可以评论文章,可以恢复评论,可以多级的互相回复1.思路一:做层级的关系做出来是效果就是只能一次层一层展示## 【文章】大家对大一开学有没有什么问题? A: 请问军训的枪是自己带还是学校里发?点击展开评论## 【文章】大家对大一开学有没有什么问题? A: 请问军训的枪是自己带还是学校里发? -B回复A:自己带 -C回复A:学校发点击展开评论## 【文章】大家对大一开学有没有什么问题? A: 请问军训的枪是自己带还是学校里发? -B回复A:自己带原创 2021-03-04 20:42:15 · 1720 阅读 · 6 评论 -
(重点)MySQL(入门篇25)MySQL BTree索引背后的数据结构及算法原理
目录BTree俗称B树,MySQL数据库支持多种索引,但是我们平时主要使用B树索引,所以本文重点介绍B树索引,这是文章目录一、MySQL数据库索引的原理(数据结构及算法层面)二、聚集索引和非聚集索引的区别(结合InnoDB和myISAM)三、如何正确且高性能地使用索引?一、数据库索引的原理1. 索引的本质数据结构(一种高效获取的数据的数据结构)2.索引的背景数据库的主要功能之一i就是数据库查找,如何能查找的更快就是关键,最基本的查找算法就是顺序查找(挨个遍历,等于就取出),但是当数据量十分原创 2020-06-10 19:32:20 · 624 阅读 · 0 评论 -
(重点)MySQL(入门篇26)聚簇索引和非聚簇索引的区别
innodb的主键就是聚簇索引,myISAM 主键还是二级索引都是非聚簇索引。1.非聚簇索引:表和所有是分2部分储存的,通过索引的查找找需要的表的数据的地址2. 聚簇索引:主键的叶子下包含了数据,其他索引指向主键:所以InnoDB所有表一定要有主键,如果你自己没有显式定义主键,MySQL会自动选择一个可以唯一标识的数据作为主键,如果没有unique的列,那mysql会自动创建一个隐式主键还有一件事就是关于添加一个自增主键在磁盘上会,自动开辟新的连续的页,极大的方便的查询,速度增加,可维护原创 2020-06-10 19:09:22 · 483 阅读 · 0 评论 -
(重点)MySQL(入门篇24)自制数据库连接池(DateSource数据源)
数据库连接池和线程池类似,主要是,Connection 相当浪费时间和内存(比新建线程慢多了)。一、连接池的背景1. jdbc的背景(1)成立背景:每个数据库厂商都有自己的数据库驱动,为了实现我们可以方便地连接到到不同数据库,(比如你的账户信息在MySQL数据库,头像图片在Oracle数据库),(2)jdbc定义:jdbc是一个接口规范,数据库驱动(Driver)由数据库厂商自己来完成。关系如图所示。(3)回顾连接的步骤:启动Driver,连接获得connection,获取statemen.原创 2020-06-08 17:27:58 · 543 阅读 · 0 评论 -
MySQL(入门篇23)如何使用IDEA连接MySQL数据库?
目录结构一、如何使用IDEA连接MySQL数据库?二、遇到的问题1.没有驱动2.没有设置时区一、如何使用IDEA连接MySQL数据库?1. 打开数据库连接窗口(1)(2)点击加号然后点击Date Source选择MySQL(3)2.测试连接这样就算成功,这可能有不少坑,在二、点里会详细介绍,可直接调至二、点查看。3.改变使用的数据库(1)选择数据库,选择配置(2)更换使用的数据库(2。2)更换使用的数据库 – 方法24.可视化 操作1.查看表(1)依次点开原创 2020-06-07 15:18:29 · 2169 阅读 · 0 评论 -
(重点)MySQL(入门篇22)JDBC下载和驱动教程 ,第一个JDBC程序,驱动步骤的解析。
一、JDBC驱动教程1. 下载JDBC jar 包1.下载8,0的jar包可以支持之前的 5.6, 5.7, 8.0 mydql版本,请对应你自己的版本2.下载链接如下https://dev.mysql.com/downloads/connector/j/3.选这个4.下载zip2. 配置教程1,解压并复制 jar包2.idea软件你的项目和src同级的目录新建 lib目录3.将jar包复制粘贴到lib目录,(注意这里是jar包不是整个zip文件)4.右键添加到Librar原创 2020-06-06 14:51:25 · 3271 阅读 · 2 评论 -
MySQL(入门篇21)三大范式,性能和规范的问题.
三大范式1.第一范式:原子性1.原子性:每一列的数据不可再拆分(1)错误例子.这里的age,和nane列应该分开(2)正确例子:第二范式:1.满足第一范式的前提下2.每张表只描述一件事情,(1)错误的例子你不能再用户表里添加用户发布的文章列(每张表只描述一件事情)(2)正确:改为2找张表:3.第三范式:1.满足1,2范式的前提下2.表中的数据直接和主键相连,不能间接相连(1)错误例子:(2)正确例子:公司可以分出去一张表。二、性能和规范的问题.1.阿原创 2020-06-06 09:36:05 · 317 阅读 · 0 评论 -
MySQL(入门篇18)SQLyog 的用户权限管理 ; SQL语句的用户权限管理。
一、SQLyog 的用户权限管理1. 创建用户2. 修改账号和密码1.登入刚拿创建的jarvan2改账号和密码.3. 查看和修改权限4. 点击历史SQL代码就能看到图形化界面对应的SQL语句。方便学习二、 SQL语句的用户权限管理。1. 创建一个用户(1)创建用户(确保你登录的账号有创建用户的权限grant,比如root)CREATE USER jarvar2 IDENTIFIED BY '111111';FLUSH PRIVILEGES; -- 刷新权限(2)给原创 2020-05-28 09:33:41 · 5291 阅读 · 0 评论 -
(重点) MySQL(入门篇17) 索引的介绍;索引的使用(在100万条数据下的查询效果)
一、索引的介绍:1.索引的分类索引介绍1.主键索引 (primary key)一般建表的时候添加,非空 ,比如 id,不能取名.2.唯一索引(unique key)表中的值必须唯一不能重复,比如账户名称,3.默认索引(key )没有限制,可空,可重复4.全文索引(fulltext)配合match against 操作而不是 where,先放数据在全文索引速度快些5.组合索引就是在多个字段上创建索引,但是只有查询第一个字段(最左)的时候索引才会生效原创 2020-05-27 19:42:18 · 1400 阅读 · 0 评论 -
(重点) MySQL(入门篇16)事务,事务案例,事务隔离级别
一、事务事务有ACDI原则1.原子性(Atomicy)要么都成功,要么都失败2. 一致性(Consistency)事务前后的数据保持一致3.持久性(Durability) – 事务提交事务一旦提交不可逆4.隔离性 (Isolation)多个人,同时给张三转钱的时候,每一笔转账开启一个事务,多个事务相互隔离就是隔离性二、隔离性产生的数据问题多个用户都在操作数据产生的数据问题。1.脏读 :一个事务读取了了另一个事务没有提交的 数据1.比如张三和李四同时区银行取相同账号的钱,此时账户上有原创 2020-05-27 15:21:47 · 403 阅读 · 0 评论 -
MySQL(入门篇15) 信息摘要算法 -- MD5算法
一、常用MD5加密1,什么是MD5加密?称呼:Message Digest Algorithm 5 信息摘要算法5代2. 信息摘要算法 和 加密算法的区别1.加密算法指的是通过一个加密的手段,可逆,通过算法反推原数据,2.信息摘要算法是一种字典,不可逆,字典的生成是随机的二、Mysql中如何使用MD5加密信息?1.创建一个学生表CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键学号',原创 2020-05-27 13:11:50 · 746 阅读 · 1 评论 -
(重点) MySQL(入门篇14) 常用聚合函数和分组过滤
一、常用聚合函数1.函数意义sum()总合avg()平均max()最大值min()最小值count()计数意义count(student)记录学生的个数null值不计数count(1)计算索引数量count(*)计算所有数据数量二、案例:分组过滤查询.查询不同课程的学生的成绩的平均分,最高分,最低分,平均分要大于60分,核心通过不同的课程进行分组,( WHERE 不能和 GROUP BY 连用,使用 H原创 2020-05-27 11:22:41 · 367 阅读 · 0 评论 -
MySQL(入门篇13)常用的函数和操作
####官网最全的函数总结一、常用函数1. 数学运算运算符意义使用1.abs()绝对值abs(-1) 输出 12.ceiling()向上取整ceiling(9.4) 为 103.floor()向下取整floor(9.4)为 94.rand()返回一个0-1的随机数字rand() = 0.28085969507774315.sign()判断数字符号sign(-2) 为-1,2.字符串函数运算符意义使用1.ch原创 2020-05-24 18:44:47 · 203 阅读 · 0 评论 -
(重点)MySQL(入门篇12) exist 操作符的用法
一、exist操作符号1.定义exist 存在即为 true ,反之false2.(案例01)exist表和数据参考(1)目的:获取那些至少支付了一次罚款的球员的名字和首字母。(2)代码:/*获取那些至少支付了一次罚款的球员的名字和首字母。exist*/SELECT `NAME` AS 名字,`INITIALS` AS 首字母FROM `players` AS 学员表WHERE EXISTS( SELECT * FROM `penalties` AS 罚款表 WHERE 学员原创 2020-05-24 14:03:43 · 1068 阅读 · 0 评论 -
(重点)MySQL(入门篇11)单表子查询。
一、是什么?1.定义在一个表达式中调用另一个表达式,就叫子查询(subQuery),也称为子选择(subSelect),或者内嵌选择(inner select)2.本质1.子查询/嵌套查询的本质就是where里面嵌套一个select语句.2.多表连表查询的一种,参考MySQL(入门篇09)连表查询(01 Join on ) 详解.,自关联.3. 4种分类1.分类分类返回使用表子查询返回 N行 N列在FROM语句中使用行子查询列的集合1行 N列(记做:行只原创 2020-05-24 13:51:59 · 1149 阅读 · 1 评论 -
MySQL (入门篇10)排序order by 和分页limit 0,5
一、排序:order by1. 建表CREATE TABLE `studentexam` ( `name` VARCHAR(100) DEFAULT NULL COMMENT '学生姓名', `testSubject` VARCHAR(20) DEFAULT NULL COMMENT '考试科目', `score` VARCHAR(2) DEFAULT NULL COMMENT '分数等级') ENGINE=INNODB DEFAULT CHARSET=utf8插入数据后2. 排序原创 2020-05-17 21:43:16 · 4079 阅读 · 0 评论 -
(重点)MySQL(入门篇09)连表查询(01 Join on ) 详解.,自关联.
一、了解3种连表操作描述例子左连表:left join返回左表中所有的值,即使右表中没有匹配比如 student left join scoreOfStudent 即使学生没有参见考试,也会返回学生数据,但是 考试成绩为 null右连表:right join返回全部右表的值,(类推)左表null(类推)中心表:inner join返回全部左表和右表的值不匹配的左表和右表为null二、案例练习.1. 建表1.学生表CREATE TABLE `stu原创 2020-05-17 20:11:59 · 643 阅读 · 0 评论 -
MySQL(入门篇08)模糊查询操作符号详解.
一、模糊查询操作符1. null查询 为 null 的 数据,通常和 “” 空字符串搭配使用(1) 查询没有填家庭住址的同学select `id` , `name` from student where (`homeAddress` is null or `homeAddress` = "");2. is not null 上3. between 在…之间下面2个相等的(1)查询90-100分的学生select `id`,`name` from studentwhere ( `s原创 2020-05-17 17:13:37 · 1016 阅读 · 0 评论 -
MySQL (入门篇07)where逻辑运算符号
一、where 逻辑运算符拓展:逻辑运算符 和 函数大全:官方文档的最全版本原创 2020-05-17 16:46:32 · 574 阅读 · 0 评论 -
MySQL (入门篇06)distinct去重,和select的表达式可以有那些?
一、distinct 去重1.目的:查询那些人参加了选课(去重)select distinct `name` from `pickCourses`;二、select的表达式还可以有那些?select [表达式] from [表];1。函数(比如查看mysql版本)select version() 2.计算表达式(用来计算结果)select 1+1 as "计算结果";3. 系统变量(比如查询,自增的步长)select @@auto_increment_increme原创 2020-05-17 16:31:54 · 343 阅读 · 0 评论 -
MySQL (入门篇05)数据库的引擎MYISAM 和 INNODB 区别
功能MYISAMINNODB事务支持支持数据库行锁定支持外键约束支持全文索引支持表空间的大小较小较大为前者的2倍总结:MYISAM 节约空间,速度较快INNODB:安全性高,事务的处理,多表多用户操作...原创 2020-05-17 10:52:50 · 133 阅读 · 0 评论 -
MySQL (入门篇04)创建数据库表 基本表公式模板
一、创建数据库表1. 目标– 1.目标:创建一个school 数据库– (1)使用SQL创建一个学生表student01的列,– (2)学号int ,登录密码 varchar,姓名varchar– (3)性别 varchar(2),出生日期datatime 家庭住址 address 邮件地址email2. 注意– 2.注意:– (1)表的名称 和 字段尽量使用`` (漂)括起来– (2) 字符串使用单引号或者双引号括起来,建议单引号3. 基本表公式模板/*CREATE DATABAS原创 2020-05-17 09:43:16 · 1354 阅读 · 0 评论 -
MySQL (入门篇03)MySQL数据类型 和 常用字段属性总结
1. 数值类型含义大小tinyint小数据1字节smallint较小数据2字节mediumint中等数据3字节int最常用的标准数据4字节bigint大的数据8字节float浮点数4字节double双精度浮点数8字节decimal字符串形式浮点数,金融使用2. 字符串类型含义大小char固定大小的字符串0-255字节varchar改变字符(最常用)2字节tiny原创 2020-05-16 13:27:36 · 452 阅读 · 0 评论 -
(重点)MYSQL(入门篇02)MYSQL的基本命令大全
拓展:学习方法在SQLyog可视化软件里有历史记录就是对应点 SQL语句,对应起来学习,更具体的知道你的命令的作用.一、打开服务、连接MySQL启动服务net start mysql连接MySQLmysql -uroot -proot-u 后面的root是你的账户名-p 里面的root是你的密码2.2. 建议隐藏密码的连接mysql -uroot -p(回车)(输入密码)3. 断开MySQL连接exit关闭服务net stop mysql二、数原创 2020-05-16 12:22:51 · 770 阅读 · 0 评论 -
MYSQL(入门篇01) 关系型数据库和非关系型数据区别
一、关系型数据库(SQL)MYSQL,Oracle,SQL Server,DB2 ,SQLlite通过表和表之间,行和列之间的关系进行的数据储存二、非关系型数据库(NoSQL) Not Only SQLRedis ,MongoDB对象储存,原创 2020-05-15 20:17:40 · 596 阅读 · 0 评论