MySQL
文章平均质量分 63
dannie吖
这个作者很懒,什么都没留下…
展开
-
MySQL主从复制
一、复制的基本原理:1、slave会从master读取binlog进行数据同步。2、复制的步骤及原理图:(1)master将改变记录到二进制日志(binary log),这些记录过程叫二进制日志事件(binary log events);(2)slave将master的binary log events拷贝到它的中继日志(relay log);(3)slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步且串行化的。二、复制的基本原则:1、每个slave只有一个ma原创 2021-11-12 11:48:42 · 145 阅读 · 0 评论 -
MySQL行锁(偏写)
说明:偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度最高。InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。...原创 2021-11-10 15:58:18 · 580 阅读 · 0 评论 -
MySQL表锁(偏读)
一、表读锁:1、查看表上加过的锁:show open tables;2、手动添加表锁:lock table 表名称 read/write, 表名称2 read/write, 其他;如,给mylock表加读锁,给dept表加写锁:lock table mylock read, dept write;3、表解锁:unlock tables;二、写锁:三、总结:读操作会阻塞写,但不阻塞读;而写锁会阻塞读和写。四、表锁分析:可通过检查Table_locks_waite原创 2021-11-06 12:41:07 · 326 阅读 · 0 评论 -
MySQL之用show profiles进行sql分析
前提:MySQL版本支持Show profiles。1、查询其是否开启:show VARIABLES like 'profiling';ON-开启;OFF-关闭。开启命令:set global profiling = on;2、使用:① 查看所有profile:show profiles;② 查看单个的profile开销(query后为上图中的Query_ID):# 查看cpu和io开销信息show profile cpu, block io for query 232;原创 2021-11-05 15:35:49 · 282 阅读 · 0 评论 -
MySQL查询优化
1、永远小表驱动大表,即小的数据集驱动大的数据集。原理:select * from a where id in (select id from b)# 等价于for select id from bfor select * from a where a.id = b.id当b表的数据集小于a表的数据集时,用in优于exists;select * from a where exists (select 1 from b where b.id = a.id)# 等价于for select *原创 2021-11-03 16:36:45 · 232 阅读 · 0 评论 -
Mysql索引失效案例分析
说明:新建表staffs的索引为:idx_nameAgePos;1、尽量使用全值匹配:即索引包含哪些字段,就使用哪些字段查询;select * from staffs where name = 'July' and age = 23 and pos = 'dev';2、最佳左前缀法则:查询从索引的最左前列开始,且不跳过索引中的列:// 部分匹配select * from staffs where name = 'July';// 部分匹配select * from staffs whe.原创 2021-11-02 17:01:06 · 163 阅读 · 0 评论 -
MySQL之Explain(执行计划)
一、作用:1、表的读取顺序(id);2、数据读取操作的操作类型(select_type);3、哪些索引可以使用;4、哪些索引被实际使用;5、表之间的引用;6、每张表有多少行被优化器查询。二、使用:Expalin+SQL语句。三、包含的信息:idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1、id:(1)含义:select查询的序列号,包含一组数字,表示查询中执行的select子句或操作表原创 2021-02-02 11:44:29 · 126 阅读 · 0 评论 -
MySQL索引简介
1、定义:索引(Index)是帮助MySQL高效获取数据的数据结构,即索引的本质是数据结构。可以理解为“排好序的快速查找数据结构”。原创 2021-01-07 17:46:51 · 98 阅读 · 0 评论 -
MySQL存储引擎对比
对比项MyISAMInnoDB主外键不支持支持事务不支持支持行表锁表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作行锁,操作时只锁某一行,对其他行没有影响,适合高并发的操作缓存只缓存索引,不缓存真实数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响表空间小大关注点性能事务默认安装YY...原创 2020-11-25 17:54:34 · 80 阅读 · 0 评论 -
MySQL循环结构
循环控制:iterate:类似于Java中的continue,结束本次循环,继续下一次;leave:类似于Java中的break,跳出整个循环,结束当前所在的循环。一、分类:1、while【标签:】while 循环条件 do 循环体;end while 【标签】;# 联想:while(循环条件) { 循环体;}2、loop语法:【标签:】 loop 循环体;end loop 【标签】;# 可以用来模拟简单的死循环3、repeat【标签:】 repe原创 2020-08-29 10:37:25 · 340 阅读 · 1 评论 -
MySQL的函数
一、与存储过程的区别:存储过程:可有0个返回,也可多个返回;适合做批量插入、批量更新;函数:有且仅有1个返回值;适合做处理数据后返回一个结果。二、创建:create function 函数名(参数列表) returns 返回类型begin 函数体end注意:1、参数列表:包含参数名和参数类型2、函数体:定有return语句,若没有会报错;若return语句没有放在函数体的最后也不报错,但不建议。3、函数体中只有一条语句,则可省略begin、end;4、使用delimiter语句设置原创 2020-08-27 18:29:59 · 129 阅读 · 0 评论 -
MySQL存储过程
一、创建:create procedure 存储过程名(参数列表) begin 存储过程体(一组合法的sql语句)end注意:1、参数列表包含三部分:参数模式 参数名 参数类型如:IN name varchar(20)参数模式:IN:该参数可以作为输入,即需要调用方传入值OUT:该参数可以作为输出,即可以作为返回值INOUT:该参数即可作为输入,又可作为输出,即即需要传入值,又可以返回值。2、若存储过程体仅有一条语句,则begin,end可省略。存储过程体中的每条sql原创 2020-08-26 17:53:20 · 103 阅读 · 0 评论 -
事务的属性和隔离级别
一、事务的ACID属性:1、原子性(Atomicity):事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。2、一致性(Consistency):事务必须使数据库从一个一致性状态变换到另外一个一致性状态。3、隔离性(Isolation):指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。4、持久性(Durability):一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和原创 2020-08-06 19:26:46 · 360 阅读 · 0 评论 -
MySQL之delete与truncate的区别
一、说明:delete可用于删除单条或多条数据;truncate清空表中的所有数据。二、语法:delete from table(where ···)truncate table tab1;// 删除多表的记录delete 表1的别名, 表2的别名from 表1 表1的别名inner|left|right join 表2 表2的别名on 连接条件where 筛选条件三、区别:1、delete可以加where条件;truncate不可加;2、truncate删除效率高于d原创 2020-07-06 17:13:07 · 199 阅读 · 0 评论 -
MySQL子查询
含义:出现在其他语句中的select语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询。分类:按子查询出现的位置:select后:仅支持标量子查询from后:支持表子查询where或having后(重点)::支持标量子查()、列子查询()、行子查询(使用较少)exists后(相关子查询):表子查询按结果集的行列数不同:标量子查询(结果集只有一行一列)列子查询(结果集只有一列多行)行子查询(结果集有一行多列)表子查询(结果集一般为多行多列)...原创 2020-07-03 18:34:43 · 175 阅读 · 0 评论 -
MySQL连接查询Join
分类:按年代分类: SQL92标准:仅支持内连接 SQL99标准【推荐】:支持内连接 + 外连接(左外和右外)+ 交叉连接按功能分类: 内连接: 等值连接 非等值连接 自连接 外连接: 左外连接 右外连接 全外连接 交叉连接一、SQL92标准:支持所有内连接:1、等值连接:#查询城市名中第二个字符为o的部门名和城市名:select departmentName, cityNamefrom departments d,原创 2020-06-24 17:33:51 · 201 阅读 · 0 评论 -
MySQL分组查询
一、语法:select 分组函数,列(要求出现在group by的后面)from 表【where 筛选条件】group by 分组的列表【order by 子句】例:查询每个工种的最高工资:select max(salary), jobId from empsgroup by jobId...原创 2020-06-08 19:06:52 · 171 阅读 · 0 评论 -
MySQL常见函数
一、单行函数:做处理使用。如concat, length, ifnull等;1、字符函数:(1)length(获取参数值的字节个数):select length('john'); #返回字符长度select length('张三丰hahaha');# 返回15(一个字母占1个字节,一个汉字占3个字节)(2)concat(字符串拼接):select concat(lastName, '_', firstName) 姓名 from emps;(3)upper(转大写)、lower(转小写原创 2020-05-29 20:00:56 · 241 阅读 · 0 评论 -
MySQL排序查询
1、使用order by关键字:select * from emps where id > 10 order by age ASC;2、按表达式排序:select *, salary*12*(1+IFNULL(commission, 0)) 年薪 from emps order by salary*12*(1+IFNULL(commission, 0)) desc;3、按别名排序:select *, salary*12*(1+IFNULL(commission, 0)) 年薪 fro原创 2020-05-27 19:35:39 · 429 阅读 · 0 评论 -
Navicat连接MySQL数据库报错Authentication plugin ‘caching_sha2_password’ cannot be loaded
Navicat Premium 12连接MySQL数据库出现Authentication plugin ‘caching_sha2_password’ cannot be loaded的解决方案:1、以管理员身份登录mysql;2、修改账户密码加密规则并更新用户密码: #修改加密规则 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更新一下用户的密码ALTER USER 'root转载 2020-05-25 16:05:24 · 588 阅读 · 0 评论 -
MySQL提示请稍后片刻后再试一次
1、背景:多次启动或停止MySQL服务后,提示“服务正在启动或停止中,请稍后片刻后再试一次”。2、解决方法:以管理员身份启动cmd窗口,输入命令:takslist | findstr "mysql"可查找mysql的残留进程;再使用命令:taskkill /f /t /im mysqld.exe即可杀掉mysql的全部残留进程。之后,便可正常启动mysql服务(管理员身份)。本文转载自:MySQL服务正在启动或停止中,请稍候片刻后再试一次【解决方案】...转载 2020-05-25 11:57:54 · 251 阅读 · 0 评论 -
MySQL字符串拼接
使用函数concat即可。concat(str 1, str 2, ···);SELECT concat(lastName, firstName) as 姓名 FROM table_students原创 2020-05-13 18:49:54 · 114 阅读 · 0 评论 -
MySQL中的+号
1、java中的"+“号:① 运算符:两个操作数均为数值型;② 连接符:其中一个操作数为字符型。2、mysql中的”+"号:仅有一个功能:运算符。① 两个操作数均为数值型,则做加法运算;select 100 + 90;② 只要其中一个为字符型数值,则会试图将字符型数值转换为数值型:若转换成功,则继续做加法运算;select '123' + 90;若转换失败,则将字符型数值转换为0,再做加法运算。select 'john' + 90;③ 只要其中一个为null,则结果肯定为nul原创 2020-05-13 18:46:40 · 633 阅读 · 0 评论 -
MySQL的左连接与右连接
https://jingyan.baidu.com/article/60ccbceb9578f164cab197f4.html原创 2019-08-21 18:45:50 · 368 阅读 · 0 评论 -
MySQL对JSON类型数据的操作
https://www.cnblogs.com/ooo0/p/9309277.html转载 2019-08-21 18:49:22 · 111 阅读 · 0 评论 -
MySQL索引的使用和优化
https://www.cnblogs.com/doudouxiaoye/p/5831449.html转载 2019-08-21 18:52:09 · 100 阅读 · 0 评论