SELECT GROUP_CONCAT(a.DESCRIPTION SEPARATOR '\n')     FROM (SELECT (@rowNum:=0) AS rowNo,CONCAT('公司内部来文:','\n',           GROUP_CONCAT((@rowNum:=@rowNum+1),DESCRIPTION,CHAR(13),'\n' SEPARATOR '\n')) DESCRIPTION           FROM pj_pro_receive_file_t   …
在学习SpringCloud的同时,也在深入学习MySq中,听着<mysql45讲>,看着<高性能MySQL>,本系列文章是本人学习过程的总结,水平有限,仅供参考,若有不对之处或有啥建议都可与我联系,感谢!</mysql45讲> 在学习一个东西之前,了解它的历史都是很有必要的,那么首先,我们先来了解MySQL的历史. MySQL的前世今生 1.1990年,有一个小伙子被客户要求提供通用的SQL支持,当时他首先借助了mSQL的代码进行集成,但效果不太满意,便自己重写了一个…
先来个最基本的总结阐述,希望各位小伙伴认真的读一下,哈哈: 1)客户端(运行程序)先通过连接器连接到MySql服务器. 2)连接器通过数据库权限身份验证后,会先查询数据库缓存是否存在(之前执行过相同条件的SQL查询),如果有会直接返回缓存中的数据.如果没有则会进入分析器. 3)进入分析器后会对查询语句进行词法语法的分析,判断该查询语句SQL是否存在语法错误,如果存在查询语法词法错误,会直接返回给客户端错误,如果正确则会进入优化器. 4)优化器会对查询语句进行优化处理:例如:如果一条语句用到了多个…
可以利用——LIMIT——来完成这项功能. LIMIT可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下: SELECT * FROM MYTABLE ORDER BY AFIELD LIMIT offset, recnum 其中offset为从第几条(M+1)记录开始,recnum为返回的记录条数.例: select * from mytable order by afield limit , 即意为从第3条记录开始的5条记录. select * from mytabl…
Server层 连接器 建立连接.获取权限.维持和管理连接. 连接建立比较复杂,建议使用长连接 定期断开长连接 mysql_reset_connection指令 查询缓存 建议关闭,任何更新操作会此table的缓存失效.命中率低 分析器 (做什么) 词法分析 -->语法分析 优化器 (怎么做) 使用哪个索引,join时决定各表连接顺序 执行器(开做) 权限验证 -> 执行 存储引擎层 负责数据的存储和提取,其架构是插件式的.不同的存储引擎共用一个Server层…
Mysql:实现分组查询拼接未分组同一字段字符group_concat() MySQL中,如果想实现将分组之后的多个数据合并到一列,可以使用group_concat函数,如下图所示: 在oralce中实现:select name,wm_concat(content) from test group by name; Sybase(ASA)可以用LIST函数; Sybase(ASE)用变量累计的方法;…
前言 我们在学习一种技术的时候,首先要鸟瞰其全貌,千万不要一开始就陷入到细节中去,这样有助于我们站在高维度其理解问题 —— 丁奇. 学习MySQL也是一样,所以我们可以从一条查询语句的执行开始看起. ; 通常情况下,我们在使用MySQL的时候,只是从客户端输入一行指令,然后获取一个返回结果.但是对于一个开发人员来说,只知道这些是远远不够的,我们还需要知道这句指令背后的执行流程,便于排查问题. MySQL逻辑架构 这里还是引用丁奇老师的MySQL系统结构图:   mysql的逻辑架构图 MySQL…
相信大家都接触过Mysql数据库,而且也肯定都会写sql.我不知道大家有没有这样的感受,反正我是有过这样的想法.就是当我把一条sql语句写完了,并且执行完得到想要的结果.这时我就在想为什么我写这样的一条sql语句,就能给我查询出我想要的结果,为什么我写了update就能更新一条语句?它们的执行过程是什么样的?它们的原理是什么?那么接下来我就来谈谈这个. select * from user where id=6 上面这条查询语句非常简单,就是查询一个id为6的用户信息.那么它的执行流程是怎么样的…
比如现在有张表t_user,如下:(表中只是引用某某某的话,并无恶意) id name 1 司马懿 2 司马老贼 3 司马老贼OR司马懿 4 司马大叔 1.模糊查询一般用的模糊查询都是like关键词,然后再在要查的字段中用百分号“%”来查询自己想要的结果.对于上面数据,加入想查询“司马”开头的人 select * from t_user where name “司马%”: 这样查询的结果是把表中所有的数据都会查询出来. 但是,我现在需要查询以司马复姓并且名字中有1个或者两个(或者N个)的名字,显…
假如说我们有一张表 T ,表里只有一个字段 ID,当我们执行下边这条SQL语句时: mysql> select * fron T where ID=10; 在我们眼中能看到的只是输入一条 SQL语句,返回一条查询结果,却不曾知道这条SQL在MySQL的内部经历了什么,下面我们来一步一步的分析一下:如下是MySQL的基本架构图,从图中可以清楚的看到SQL在MySQL中各个功能模块执行的过程: 大体来说,MySQL可以分为Server层和存储引擎两部分. Server层:包括连接器.分析器.查询缓存…