![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 68
MySQL知识
qq_41622603
这个作者很懒,什么都没留下…
展开
-
mysql同一个字段,多条记录拼接成一条
拼接前查询结果:SQL语句:其中plate_essential是中间表SELECT a.*, c.plate FROM stock_essential_data aLEFT JOIN plate_essential b ON a.id = b.essential_idINNER JOIN stock_plate c ON b.plate_id = c.id使用GROUP_CONCAT函数按字段拼接结果SELECT a.*,GROUP_CONCAT(c.plate sepa..原创 2020-12-14 10:53:32 · 4029 阅读 · 0 评论 -
MySQL根据同一字段不同条件执行更新操作
update USER set gongzi = case WHEN gongzi < 2000 THEN gongzi * 1.3 WHEN gongzi >= 2000 THEN gongzi * 1.15 END原创 2020-08-24 10:32:07 · 2147 阅读 · 0 评论 -
MySQL锁机制
锁的定义:锁是计算机协调多个进程或线程并发访问某一资源的机制锁的分类:从数据操作的类型分为:读锁和写锁读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁从对数据操作的粒度分为:行锁和表锁表锁(偏读):表锁特点:偏向MyISAM存储引擎,开销小,加锁块,无死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低...原创 2020-08-18 19:08:19 · 126 阅读 · 0 评论 -
MySQL查询截取分析
查询截取分析步骤:1.观察,至少跑1天,看看生产的慢SQL情况2.开启慢查询日志,设置慢SQL阙值,比如设置阙值是5,执行超过5秒的就属于慢SQL,此时会记录到慢SQL日志3.查询优化:https://blog.csdn.net/qq_41622603/article/details/1079541194.explain+慢SQL分析:慢查询分析,Explain5.show profile查询SQL在Mysql服务器里面的执行细节和生命周期情况(一般在第四步解决不了的SQL才会用到sho原创 2020-08-17 19:08:26 · 81 阅读 · 0 评论 -
MySQL使用show profile进行sql分析
show profile是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量官网:https://dev.mysql.com/doc/refman/8.0/en/show-profile.html默认情况下,参数出于关闭状态,并保存最近15次的运行结果分析步骤:1.开启功能,默认关闭,使用前需要开启2.运行SQL语句3.查看结果,show profiles4.诊断SQL,show profile cpu,block io for query原创 2020-08-17 19:07:48 · 1863 阅读 · 1 评论 -
MySQL慢SQL分析
什么是慢查询日志默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。如果不需要调优的话,一般不建议启动,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志写入文件如何查看慢查询是否开启:SHOW VARIABLES LIKE '%slow_query_log%';这里就不说了,一个是否开启,一个日志存放的路径开启慢查询日志:set global slow_query_log=1; //关闭设则为0,这样开启慢查询...原创 2020-08-17 16:56:55 · 135 阅读 · 0 评论 -
MySQL查询优化
MySQL查询优化可以从3方面入手1.用小表驱动大表2.order by关键字优化3.group by关键字优化一,小表驱动大表用数据量小的表驱动数据量大的表。为什么要用小表驱动大表?假设A表数据是1000条,B表20条,如果用A表驱动要循环1000次(请求和断开)才能查询出来,用B表则只需要20次用for循环和SQL语句说下怎么用小表驱动大表:1.外层循环有5条数据,相当于数据量比较少的驱动表,内层有1000条数据,相当于大表2.使用子查询小表驱动大表说明...原创 2020-08-14 10:33:02 · 129 阅读 · 0 评论 -
MySQL避免索引失效
创建索引下面所有示例都是围绕这个索引来说ALTER TABLE users ADD INDEX idx_users_accountSexUsername(account,sex,userName);一、全值匹配指的是创建的索引在查询条件里全部使用到,这种情况索引一般都不会失效把where后面userName和sex的顺序反过来索引也不会失效二、左前缀法则:指的是查询从索引的最左前列开始并且不跳过索引中的列。因为创建索引的顺序是account→userNam.原创 2020-08-11 08:54:32 · 221 阅读 · 0 评论 -
MySQL索引——单表,两表,三表优化案例
单表优化案例:1.给category_id,comments,views字段创建索引2.创建索引后查询出现了Using filesort3.将where后面的comments条件把范围条件,改成常量条件,可见查询是没有问题的分析为什么会出现这种情况:从上面分析可得,type是range类型是可以接受的,但extra出现了Using filesort,优化的目的就是把Using filesort解决。索引为什么失效?因为按照BTree索引的工作原理,先排序categor原创 2020-08-08 23:45:32 · 156 阅读 · 0 评论 -
MySQL——使用Explain进行性能分析
Explain是什么:Explain可以用来查看查询语句的执行计划使用Explain关键字可以模拟MySQL查询优化器(MySQL Query Optimizer)执行SQL查询语句,从而知道MySQL是如何处理SQL语句。用于分析你的查询语句或是表结构的性能瓶颈Explain能干什么:1.查看表的读取顺序2.查看数据读取操作的操作类型3.查看哪些索引可以使用4.查看哪些索引被实际使用5.查看表之间的引用6.查看每张表有多少行被优化器查询Explain语法..原创 2020-07-29 20:43:13 · 223 阅读 · 0 评论 -
MySQL索引分类和基本语法
索引分类:单值索引:一个索引只包含单个列,一个表可以有多个单值索引,但是最后不要超过5个索引唯一索引:索引列的值必须唯一,但允许有空值复合索引:即一个索引包含多个列基本语法:创建: 语法1:CREATE [UNIQUE] INDEX [索引名] ON 表名(列名(长度)); 语法2:ALERTTABLE 表名 ADD [UNIQUE] [索引名] ON (列名(长度)); 注:[ ]里为可选,UNIQUE:唯一索引删除: 语法:DRO...原创 2020-07-18 12:38:24 · 148 阅读 · 0 评论 -
MySQL什么是索引和优劣势
什么是索引:MySQL官方定义:帮助MySQL高效获取数据的数据结构。可以简单理解为排好序的快速查找数据结构,就是排序+查找两个功能结论:数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样久可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引数据结构是什么:比如字典的目录,从A到Z按顺序排序,并按照每个字的拼音首字母归类到所属的字母(比如"索"归到S)。再比如下图数据结构: 第一阶:22小于34的归到左...原创 2020-07-15 11:57:58 · 139 阅读 · 0 评论 -
MySQL其中JOIN理论和编写
案例用到的表 emp表 dept表 一,内连接(inner join)只关联AB(两个表)共有的部分数据例:可见emp表deptId为51的数据没有查询出来,因为该数据不是两个表的共有数据二,左外连接(left join)关联AB表共有+A表独有的数...原创 2020-12-14 10:04:00 · 93 阅读 · 0 评论 -
MySQL函数
函数:一组预先编译好的SQL语句的集合,理解成批处理语句优点:1.提高代码的重用性2.简化操作3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率函数和存储过程的区别:存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新函数:有且仅有1 个返回,适合做处理数据后返回一个结果语法:函数可以不用参数CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型BEGIN 函数体END注:1...原创 2020-07-11 11:40:39 · 102 阅读 · 0 评论 -
MySQL函数案例说明
首先,声明一下分隔符先说说分隔符是什么:连续执行多条SQL语句的时候,会用“;”来分隔开,代表一条SQL语句已经执行完成。在存储过程中执行到分隔符处就代表一个存储过程执行完成语法:DELIMITER $注:如果不声明分隔符,默认是“;”,案例声明的分隔符使用“$”。分隔符一般声明一次,以后都可以使用案例:#声明分隔符DELIMITER $#根据员工名,返回它的工资CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS D.原创 2020-07-11 11:40:31 · 122 阅读 · 0 评论 -
MySQL存储过程案例说明
首先,声明一下分隔符先说说分隔符是什么:连续执行多条SQL语句的时候,会用“;”来分隔开,代表一条SQL语句已经执行完成。在存储过程中执行到分隔符处就代表一个存储过程执行完成语法:DELIMITER $注:如果不声明分隔符,默认是“;”,案例声明的分隔符使用“$”。分隔符一般声明一次,以后都可以使用案例#声明分隔符DELIMITER $#传入用户密码,返回结果CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWO.原创 2020-07-08 00:16:50 · 137 阅读 · 0 评论 -
MySQL存储过程的信息查看和存储过程删除
语法:DROP PROCEDURE 存储过程名注:不能一次性删除多个存储过程原创 2020-07-07 22:15:00 · 143 阅读 · 0 评论 -
MySQL存储过程简介和基本语法
存储过程:事先经过编译并储存在数据库中的一段SQL语句的集合优点:1.提高代码的重用性2.减少数据在数据库和应用服务器之间的传输,减少了连接次数,提高了数据处理的效率3.简化操作语法:创建存储过程:CREATE PROCEDURE 存储过程名(参数列表)BEGIN 存储过程体(SQL语句) 注:如果存储过程体仅仅只有一句SQL,BEGIN END可以省略。 ...原创 2020-07-06 21:55:59 · 169 阅读 · 1 评论 -
MySQL结果集合并——union all和union
UNION 和UNION ALL操作符用于合并两个或多个 SELECT 语句的结果集请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列(第一条SQL查询两个字段,第二条SQL也只能查询两个字段)。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。UNION:会去重(如图1),查询了5406条数据。UNION ALL:不去重(如图2),查询了18438条数据。图1.图2....原创 2020-07-06 16:14:07 · 499 阅读 · 0 评论 -
MySQL事务设置回滚点
设置回滚点a:SAVEPOINT a回滚到回滚点a:ROLLBACK TO a下面执行的效果:只删除了id为25的数据原创 2020-07-06 11:58:40 · 1169 阅读 · 1 评论 -
MySQL数据库隔离级别
对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致下面三种并发问题: 脏读:对于两个事务T1,T2。T1读取了已经被T2更新但还没有被提交的字段。若T2回滚,T1读取的内容就是临时且无效的 不可重复度:对于两个事务T1,T2。T1读取了一个字段,然后T2更新了该字段(T2事务未提交或回滚)。T1再次读取同一个字段,值就不同了。 幻读:对于两个事务T1,T2。T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行(事务未...原创 2020-07-06 11:33:40 · 120 阅读 · 0 评论 -
MySQL事务的概念和使用
事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的事务的ACID(acid)属性 1. 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么 都发生,要么都不发生。 2. 一致性(Consistency) 事务必须使数据库从一个一致性状态变换到另外一个一致性状态 。 3. 隔离性(Isolation) 事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个 事务内部的操作及使用的.原创 2020-07-05 17:05:00 · 196 阅读 · 0 评论 -
mysql视图的修改,删除,查看和更新
修改视图方式一:当视图不存在时则创建,视图存在则修改视图结构CREATE OR REPLACE VIEW 视图名 AS 查询语句;方式二:修改视图结构,如果视图不存在会报错ALTER VIEW 视图名 AS 查询语句删除视图DROP VIEW 视图名1,视图名2……查看视图这里的查看视图是查看视图的详细信息和查询逻辑,并不是查看数据的结果集方式一:DESC 视图名方式二:SHOW CREATE VIEW 视图名...原创 2020-06-30 23:34:29 · 825 阅读 · 0 评论 -
MySQL视图的创建和使用
视图:是一种虚拟存在的标,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果使用场景:1.多个地方用到同样的查询结果2.该查询结果使用的sql语句较复杂创建视图:如图1.使用CREATE VIEW ,v3是视图名,AS后面是查询的逻辑图1.图2.创建成功后可以看到视图使用视图,使用视图很简单,跟平时查询表数据一样,只需要SELECT 字段名FROM 视图名就行了...原创 2020-06-30 22:57:08 · 333 阅读 · 0 评论