![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
王佑辉
个人笔记,多谢指正,不喜勿喷
展开
-
【mysql】centos7安装mysql8
7.遇到问题mysql-community-devel 安装失败。2.tar -zxvf 可以解压tar.gz后缀的压缩文件。1.tar -xvf 可以解压tar.xz后缀的压缩文件。3.放到服务器的目录(这里是/opt/mysql)4. 遇到问题,卸载mariadb-libs。2.查看root的临时密码。1.执行命令启动服务。2.使用临时密码登录。原创 2024-03-29 15:23:26 · 770 阅读 · 0 评论 -
【mysql】drop、delete与truncate的区别
5.需要删除表中的特定数据行时,应使用delete,并可以结合WHERE子句来实现部分数据删除。2.在执行这些操作时,尤其是在没有备份的情况下,应格外小心,以避免不必要的数据丢失或结构破坏。3.delete可能需要逐行删除数据,尤其是当涉及到复杂的WHERE条件时,因此删除最慢。5.需要删除表中的数据 重置计数器,但保留表结构时,应使用truncate。1.仅删除表中的数据,但保留表结构及其相关对象(如索引、约束、触发器等)1.不仅删除表中的数据,还删除表结构及其所有相关对象。4.会激活与表相关的触发器。原创 2024-03-19 15:48:22 · 459 阅读 · 0 评论 -
【线上问题】linux服务器磁盘爆满导致服务失效
1.docker启动的服务要限制docker日志大小,不然也会刷爆2.这里的mysql不是docker启动的,安装mysql时要配置好定期清理binlog日志的时间,时间长了会爆炸。原创 2024-01-12 11:08:01 · 667 阅读 · 0 评论 -
【线上问题】服务器关机导致docker启动的mysql数据库消失了
5. 确定后,将_data里的数据拷贝到数据库data映射目录,重启docker即可。1. 服务器迁移断电导致docker启动的mysql数据库没有了数据。4. ll命令一下能看到各个数据库名,确定自己要恢复的数据库。1. sudo -i切换root账号。3. mysql重启数据库消失了。2. 查找mysql的容器卷。2. data目录是空的。3. 进入各个_data。原创 2023-11-09 15:20:45 · 1833 阅读 · 0 评论 -
【docker】docker部署mysql
5.当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上。2.容器中部署的mysql端口3306不能被外部机器和宿主机直接通信。6.外部机器访问宿主机的该端口,从而间接访问容器的服务。1.容器内的网络服务和外部机器不能直接通信。3.外部机器和宿主机之间可以直接通信。3.创建容器,设置端口映射、目录映射。4.宿主机和容器可以直接通信。4.操作容器中的mysql。1.搜索mysql镜像。2.拉取mysql镜像。1.搜索mysql镜像。2.拉取mysql镜像。原创 2023-07-24 20:51:35 · 843 阅读 · 1 评论 -
【mysql】explain执行计划之select_type列
9.union:分union与union all两种,若第二个select出现在union之后,则被标记为union;10.dependent union:当union作为子查询时,第一个union为dependent subquery,第二个union为dependent union。6.subquery:select、where之后包含了子查询,在select语句中出现的子查询语句,结果不依赖于外部查询(不在from语句中)5.union:union中的第二个或者后面的查询语句。原创 2023-05-21 12:54:48 · 2424 阅读 · 0 评论 -
【mysql】explain执行计划之id列
- null表示结果集,不需要使用它来进行查询。原创 2023-05-21 12:46:35 · 1041 阅读 · 0 评论 -
【mysql】事务的四大特性
3.事务A和事务B在同时操作数据库,事务A操作数据库的时候,不会影响事务B的执行,事务B并发操作数据库时也不会影响事务A的执行。3.张三给李四转账,不管事务是正常执行完毕,还是执行失败回滚,两个人的账户余额总和都是相同的。1.英文: Durability [dərəˈbɪlɪti]2.事务一旦提交或者回滚,它对数据库中的数据的改变是永久的。1.英文:Atomicity [ˌætəˈmɪsəti]1.英文:Isolation [ˌaɪsəˈleɪʃn]2.事务完成时,必须使所有的数据都保持一致状态。原创 2023-04-25 21:54:46 · 597 阅读 · 0 评论 -
【mysql】联合查询union和union all的区别
4.语法:select 字段列表 from 表A union select 字段列表 from 表B。3.union查询把多次查询的结果合并起来,形成一个新的查询结果集。5.union all会将全部的数据直接合并在一起。2.联合查询的多张表的字段类型必须保持一致。1.联合查询的多张表的列数必须保持一致。6.union会对合并之后的数据去重。原创 2023-04-22 17:11:47 · 310 阅读 · 0 评论 -
【mysql】binlog日志
这些情况是NDB引擎,表的增删改的DML操作会以row格式记录、SQL语句里包含UUID()函数、SQL语句里使用了用户定义函数(UDF)、包含了insert delayed语句、使用了临时表、自增字段被更新。1.statement:基于sql语句的日志记录,记录的是sql语句,对数据进行修改的sql都会记录在日志文件中。5.在mysq的配置文件中配置二进制日志的过期时间,设置之后二进制日志过期会自动删除。2.row:基于行的日志记录,记录的是每一行的数据变更,默认是基于行的日志记录。原创 2023-04-19 21:48:50 · 4820 阅读 · 0 评论 -
【mysql】使用索引注意事项
5.索引中不会包含有null的值,组合索引如果某一列含有null值,这列对组合索引是无效的,索引列尽量不要让字段的默认值为null。4.如果select中某个字段不在索引中,可以将该列加入到组合索引中,避免二次回表查询。7.like 'value%'可以使用到索引,但like '%value%'会全表扫描。6.查询条件左右两侧类型不匹配会发生隐式转换,可能会导致索引失效。1.不在列上使用函数或运算,会导致索引失效而进行全表扫描。=、in等没有顺序的操作符,会导致索引失效。原创 2023-03-26 21:33:51 · 57 阅读 · 0 评论 -
【mysql】数据库三范式
3.第三范式:先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键)。例如存在一个部门信息表,其中每个部门有部门编号、部门名称、部门简介等信息,员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。2.第二范式:满足第一范式后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情。原创 2023-03-26 21:08:32 · 63 阅读 · 0 评论 -
【mysql】性能优化
3.show profiles工具使用,查看sql语句当前会话中sql资源消耗情况,io开销、cpu开销、内存开销等。2.读写分离设计,读多写少的场景中通过读写分离的方案,可以避免读写冲突导致的性能问题。4.热点数据可以引入更为高效的缓存数据库,例如redis、mongoDB等。2.sql执行计划分析,使用关键字explain查看当前sql的执行计划。1.修改my.cnf中默认配置,例如修改最大连接数。3.提高硬盘的读写速度,使用专用的固态硬盘。1.慢sql的定位与排查,慢查询日志分析。原创 2023-03-26 20:56:36 · 652 阅读 · 0 评论 -
【mysql】索引设计原则
在修改索引列的内容时,索引会进行更新甚至重构,索引列越多,更新重构时间越长。只保持需要的索引有利于查询即可,不需要建立多余列的索引。9.尽量扩展索引,不新建索引,例如a字段有索引,加a,b字段的索引时,可以修改原来a字段的索引为联合索引。4.使用短索引,对长字符串列进行索引,可以指定一个前缀长度,可以节省大量索引空间。8.不能有效区分数据的列不创建索引,例如性别,区分度太低,加了索引也没有多大作用。2.适合索引的列是在where子句中的列,或者连接子句中指定的列。7.更新频繁的字段不适合创建索引。原创 2023-03-26 20:40:40 · 304 阅读 · 0 评论 -
【mysql】mysql的各种索引
前缀索引可以建立的类型为char、varchar、binary、varbinary的列上,减少索引占用的存储空间,能提升索引查询效率,mysql无法使用前缀索引做order by和group by。如果存在主键,主键索引就是聚集索引,不存在主键,使用第一个唯一索引作为聚集索引,没有合适的唯一索引,innodb会生成一个rowid作为隐藏的聚集索引。1.主键索引:建立在主键上的索引,一张表只能有一个主键索引,索引列值不能为空,通常在创建表是一起创建。原创 2023-03-26 20:16:19 · 243 阅读 · 0 评论 -
【mysql】b树和b+树的区别
2.b+树索引的所有数据均存储在叶子节点,并用链表链接成一个线性表,在数据库设计中b+树中各个页之间是通过双向链表连接的,叶子节点中的数据是通过单向链表连接的,b+树更加适合在区间范围查询。1.b+树的非叶子节点仅存储关键字值,不挂载数据,b树的所有节点不仅存关键字还会挂载数据,数据库存储每一页的大小是固定的,相同大小的页,b+树存的关键字越多,可以减少磁盘io次数。3.b+树的叶子节点是有序的,叶子节点是相互指向的。2.b+树的所有数据叶子节点上都存在。1.b+树是b的一个升级版。原创 2023-03-26 14:43:53 · 469 阅读 · 0 评论 -
【mysql】b树
3.四阶b树除了根节点外,其它节点至少有2个子节点(m阶至少有m/2个)2.四阶b树中每个节点最多有3个关键字,如图最大3个(m阶有m-1个)1.四阶b树中每个节点最多有4个孩子节点,如图最大4个(m阶有m个)4.关键字大小顺序从左到右排序。2.一个关键字的节点图。3.二个关键字的节点图。4.三个关键字的节点图。原创 2023-03-26 14:22:02 · 1034 阅读 · 0 评论 -
【spring】spring事务的隔离级别
1.脏读2.不可重复读3. 幻读4.是并发事务产生的问题。原创 2023-03-21 21:28:18 · 1144 阅读 · 1 评论 -
【mysql】事务的四大特性
4.持久性(durability [dərəˈbɪlɪti]):事务一旦被提交,数据库中的数据的改变是永久性的,即使数据库遇到故障,提交事务的操作也不会丢失。2.一致性(consistency [kənˈsɪstənsi]):事务执行之前和执行之后都处于一致性状态,例如转账前后,两个账户的钱总和是一致的。1.原子性(atomicity [ætəˈmɪsəti]):事务包含的所有操作要么全部成功,要么全部失败回滚。3.隔离性(isolation [aɪsəˈleɪʃn]):多个并发事务之间要相互隔离。原创 2023-03-19 22:25:08 · 41 阅读 · 0 评论 -
【面试】InnoDB和MyISAM的区别
InnoDB和MyISAM区别原创 2023-02-10 22:08:52 · 77 阅读 · 0 评论 -
【oracle】oracle查询
mysql查询原创 2022-09-16 13:41:00 · 137 阅读 · 0 评论 -
【mysql】mysql设置全局时区
mysql设置时区原创 2022-06-15 20:59:19 · 507 阅读 · 0 评论 -
【mysql】mysql安装
mysql安装原创 2022-06-05 21:50:48 · 64 阅读 · 0 评论 -
【mysql】mysql触发器before与after的区别
1.商品表-- 创建商品表DROP TABLE IF EXISTS `goods`;CREATE TABLE `goods` ( `id` int(0) NOT NULL AUTO_INCREMENT COMMENT '商品id', `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品名称', `num` int(0) DEFAULT NULL COMMEN原创 2022-02-15 18:32:22 · 4061 阅读 · 0 评论 -
【java】mybatis-plus lambda表达式符号总结
1.函数名及用法//查询学生QueryWrapper<Student> queryWrapper = new QueryWrapper();函数说明举例eqequals等于(=)queryWrapper.lambda().eq(Student::getName,“老王”);nenot equals不等于(<>)queryWrapper.lambda().ne(Student::getName,“老王”);gtgreater than原创 2021-10-16 12:16:25 · 6691 阅读 · 0 评论 -
【mysql】排序分页查询导致数据混乱问题
1.问题说明1.根据创建时间排序,当创建时间大量重复时,分页查询会导致某条数据出现在不同分页中select * from student order by create_time desc limit 10,10;select * from student order by create_time desc limit 20,10;2.问题解决1.如果有id主键,可以再加id排序select * from student order by create_time desc,id asc原创 2021-07-01 11:54:07 · 1131 阅读 · 2 评论 -
【java】jdbc用法mysql示例
1.创建数据库create database `student`;use `student`;2.sql创建表语句//创建学生表studentDROP TABLE IF EXISTS `student`;CREATE TABLE `student` ( `id` bigint(0) NOT NULL COMMENT 'ID', `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL C原创 2021-05-27 22:42:28 · 331 阅读 · 0 评论 -
【mysql】sql系列操作
【mysql】sql系列操作1.创建数据库2.创建表2.修改表名3.插入语句3.清空表数据4.表添加字段5.表修改字段7.删除表字段8.删除表1.创建数据库-- 创建数据库名为test_database的数据库create database `test_database`;2.创建表-- 创建表名为student的数据表create table `test_database`.`student` ( `id` bigint(0) NOT NULL COMMENT 'ID', `nam原创 2021-01-11 13:26:34 · 249 阅读 · 0 评论