MySQL
文章平均质量分 82
命运的左岸
日拱一卒,功不唐捐
展开
-
示例(二)
MySQL示例系统准备数据初始示例十一行锁与表锁// 自动提交状态(系统默认):默认开启自动提交mysql> select @@autocommit ; +--------------+| @@autocommit |+--------------+| 1 |+--------------+1 row in set // 事务隔离级别:默认为可重复读mys原创 2017-12-30 12:08:10 · 225 阅读 · 0 评论 -
MySQL-删除除id外其他内容都相同的数据
删除除id外其他内容都相同的数据难点:自己不能删除自己,要进行多次转换1.查询表中数据[code="sql"]select * from test ;[/code][table]| id | name | value || 1 | p | p || 2 | p | p || 3 | pp | pp ||...原创 2015-04-23 09:24:30 · 2946 阅读 · 0 评论 -
You can't specify target table <tbl> for update in FROM clause
[size=large][/size]mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。 例如下面这个sql:[code="sql"]delete from tbl where id in( s...原创 2015-04-23 10:50:17 · 120 阅读 · 0 评论 -
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
异常:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException现象:控制台输出上述异常,用户登录失败原因:MySQL 客户端默认wait_timeout时间为8小时,在此时间内服务一直等待进行数据处理,而超过8小时后,客户端关闭,读写数据操作失败。备注:开发环境,进行代码配合联调时,下班时记...原创 2015-05-21 15:38:58 · 279 阅读 · 0 评论 -
mysql 如何查询出某字段的值不为空的数据
问题:查询原有某类数据的数量,对比发现,新旧数据的差距是新插入的数据某些字段为空,那么,mysql 如何查询出某字段的值不为空的数据[code="sql"]SELECT * FROM `usr_merchants` a where address is not null and address '';[/code]不要想当然的写成 !=null 或 null ...原创 2015-06-30 19:05:33 · 2543 阅读 · 0 评论 -
1030 Got error 28 from storage engine
现象:调试程序过程中,突然报错,显示数据检索失败,数据库连接超时异常:1030 Got error 28 from storage engine处理:百度了下,原因是数据库服务端内存已满,通过MYSQL工具,打开表时依然报错,连接超时但问题在于是我本地连接的远程服务器上的数据库,为什么报错?而同事连接正常解决:联系DBA帮忙查找问题,原因在于过于频繁访问服务器,其实...原创 2016-05-24 22:25:35 · 645 阅读 · 0 评论 -
数据统计
按照时间统计各个阶段的数据数量1.统计每个月卖家的注册数量[code="sql"]select DATE_FORMAT(create_time,'%Y-%m') as month,count(merchantid) as countfrom usr_seller where merchantid not in (SELECT t.merchant_id from us...原创 2016-06-12 17:04:39 · 180 阅读 · 0 评论 -
批量数据修改
问题:增加新功能,需要初始化数据,执行update、insert操作时出现问题1. 将查询结果插入另一个表中语句:[code="sql"]insert into table_name(A,B) select A,B from table_name1 [/code]常用的公式是这样的,而我想实现,第一个字段数据从另一张表中获取,而第二字段数据直接赋值,于是就有...原创 2015-08-19 15:39:31 · 126 阅读 · 0 评论 -
DDL - CREATE
一、基本语句[code="sql"]CREATE TABLE `data_test` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `num` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '编号', `name` varchar(10) NOT NULL DEFA...原创 2017-08-05 06:10:52 · 215 阅读 · 0 评论 -
统计每天的数据
需求:按天统计数据分析:create_time 为 datetime 类型,按天统计数据,则需要将 create_time 格式化为 yyyy-MM-dd 格式处理:MySql按周,按月,按日分组统计数据[code="sql"]-- 先格式化时间,将时间格式为标准格式,再按照格式后的时间分组SELECT DATE_FORMAT(C_CREATE_TIME,"%Y...原创 2017-10-10 21:23:07 · 614 阅读 · 0 评论 -
常用索引优化
唯一索引联合索引索引方式:BTREE1.order by create_create 改为 order by id 数据递增插入且有序时主键一般都为此表的唯一性索引2.查询条件不适用 or若有or 则将SQL 查分成两个或多个使用Union 连接两个SQL3.limit 1 限制查询格式4.放弃使用索引的情况[table]|情况|举例...原创 2017-10-29 16:07:07 · 81 阅读 · 0 评论 -
存储引擎InnoDB与MyISAM区别
[align=center][size=large]存储引擎[/size][/align]一、总结[table]|名称|MyISAM|InnoDB||事务|不支持|支持||外键|不支持|支持||数据行锁定|不支持|支持||数据表锁定|支持|支持||全文索引|支持|不支持||优势|查询操作多|修改操作多||对比|性能高执行速度快|支持事务外键||cou...原创 2017-10-29 17:26:00 · 153 阅读 · 0 评论 -
检索指定时间范围内的数据与预期不一致
问题背景:在不同日期内进行不同的业务逻辑,在测试环境进行模拟,将日期设置当天时间,通过时分秒区分不同的日期;不在此时间区间内的数据被统计到了此时间区间内;问题定位:Mybatis配置文件中SQLparameterType = map确认传入的时间参数为字符串,格式为 yyyy-MM-dd HH:mm:SS,精确到时分秒,符合datetime 类型查看SQL:...原创 2017-10-30 20:38:19 · 318 阅读 · 0 评论 -
索引相关
一、索引分类1.单列索引:一个索引包含一列,一个表可以包含多个单列索引;分为:[list][*]普通索引[*]主键索引[*]唯一索引:与主键索引相似,区别:可以为NULL,主键索引不可以[/list]2.组合索引:一个组合索引包含两个或两个以上的列二、索引创建、删除1.创建索引[code="sql"]-- 索引类型:primary key...原创 2017-11-02 20:42:36 · 158 阅读 · 0 评论 -
SQL优化示例
一、distinct 、 union all 、 union 区别 1.问题SQL及改进SQL[code="sql"]-- 表结构,user_id c_user 分别添加了索引,且字段可空,varchar(32),编码UTF-8-- 问题SQLselect count(c_user) from (select user_id as c_user from jr_td_p...原创 2017-11-03 15:34:19 · 127 阅读 · 0 评论 -
索引相关(二)
[align=center][size=large]索引相关[/size][/align]一、InnoDB 与 MyISAM 对比[table]|存储引擎|InnoDB|MyISAM||存储结构|InnoDB表空间数据文件和它的日志文件;表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存完整的数据记录。这个索引的key是数据表的主键,因此Inn...原创 2017-11-05 21:13:04 · 92 阅读 · 0 评论 -
MySQL Dictionary Tables
MySQL 字典表STATISTICS1存放索引信息2mysql> desc STATISTICS ;+---------------+---------------+------+-----+---------+-------+-------+| Field | Type | Null | Key | Default | Extra |co...原创 2018-12-19 23:20:35 · 620 阅读 · 0 评论 -
MySQL常用操作总结
常用数据表操作:虽然有DBA的存在,但PD(program designer)仍然需要需要知道SQL常用操作============================================================================================================================================...2015-04-23 08:32:34 · 105 阅读 · 0 评论 -
Explain 执行计划
Explain 执行计划原创 2018-07-29 09:34:08 · 375 阅读 · 0 评论 -
NULL、NOT NULL与空值("")
NULL、NOT NULL与”“NULL 与 “”字符串保存为NULL与“”的区别select length(''),length(null),length(' ') ;-- 0 NULL 1 - 空值不占用空间 - NULL占用空间 - 建表、初始化数据-- 建表CREATE TABLE `abc` ( `id` INT(10)...原创 2018-05-20 08:08:53 · 3670 阅读 · 0 评论 -
锁
锁InnoDB 存储引擎中的锁锁分两类:悲观锁和乐观锁悲观锁分为:共享锁和排它锁排它锁:行级别锁,包含记录锁、间隙锁、防插入锁DML、DQL与锁select——不加锁select lock in share mode——共享锁,不是意向共享锁select for update——排它锁,不是意向排它锁insert——排它锁update——排它锁delete——排它锁示例:selec原创 2017-12-14 22:21:23 · 779 阅读 · 0 评论 -
MySQL悲观锁
MySQL 悲观锁前提MySQL存储引擎:InnoDB概述悲观锁(Pessimistic Lock)对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,在数据处理过程中,将被修改的数据处于锁定状态名词解释:本系统当前的其他事务:每次数据库连接 CONNECTION(物理上) 会产生一次会话 SESSION(逻辑上) ; 每个会话 SESSION 中可产生原创 2017-12-07 22:32:37 · 563 阅读 · 0 评论 -
MVCC
MVCC前提条件MySQL version : 5.7.17 MySQL 存储引擎:InnoDB引入原因为保持数据一致性,最简单的做法就是加锁。但加锁对性能损耗太大,尤其是对于读操作多于写操作的系统来说,给读操作也加锁,对性能来说更是无谓的浪费。但如果不加锁,就很容易产生幻读。为解决以上两种情况,就采用MVCC(多版本并发控制),简单地说就是事务读取的是数据快照MVCC使得数据库读不会对数原创 2017-12-27 21:09:28 · 349 阅读 · 0 评论 -
知识体系
知识体系MySQL 实例、连接、会话、事务间的联系 存储引擎 InnoDBMyISAM锁 悲观锁 排它锁 行模型锁 记录锁间隙所防止插入锁表模型锁共享锁乐观锁 MVCC:一致性非阻塞读事务 事务的性质 原子性一致性隔离性持久性事务的隔离级别 未提交读提交读可重复读串行事务开启 显示开启:BEGIN | STRAT TRANSACTION原创 2018-01-01 19:05:46 · 142 阅读 · 0 评论 -
InnoDB与MyISAM对比
InnoDB与MyISAM 对比概述 存储引擎 InnoDB MyISAM 存储结构 表空间数据文件、日志文件 表定义文件、数据文件、索引文件 索引的数据结构 B+树 B+树 事务 支持 不支持 行锁 支持 不支持 表锁 支持 支持 主索引 主索引与数据文件放在一起,本身按照B+树组织的索引结构,终端接点存放完整的数据记录原创 2018-01-02 21:02:57 · 144 阅读 · 0 评论 -
MySQL架构与概念
MySQL架构与概念原创 2017-12-10 13:04:36 · 224 阅读 · 0 评论 -
示例(一)
MySQL示例系统准备// MySQL : Server version: 5.7.17 ; // 查询MySQL版本:// 1. WINKEY+R --> 打开运行窗口 --> 输入CMD 命令,输入mysql,回车进入命令行,根据系统提示,即可查看当前安装版本// 2. select version ;mysql> select version() ;+-----------+| v原创 2017-12-24 19:43:04 · 261 阅读 · 0 评论 -
MySQL-InnoDB
MySQL-InnoDB存储引擎一、总结支持事务支持行锁、表锁InnoDB支持多粒度加锁(multiple granularity locking),从而允许对记录和表同时加锁。为此,InnoDB引入意向锁(intention locks),意向锁是针对表的支持 MVCC(Multiversion Concurrency Control)多版本并发控制,一致性非阻塞读:当事务的隔离级别为可重原创 2017-12-09 19:24:56 · 369 阅读 · 0 评论 -
MySQL乐观锁
MySQL乐观锁概述乐观锁( Optimistic Locking )相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则返回给用户错误的信息,让用户决定如何去做实现方式添加额外字段Version使用数据版本(Version)记录机制实现数据版本:即为数据增加一个版本标识,一般是通过为数据库表增加一个数原创 2017-12-30 16:16:54 · 207 阅读 · 0 评论 -
MySQL索引基数
MySQL索引基数前提存储引擎:InnoDB 存储引擎索引数据结构:B+Tree概念索引基数(cardinality):索引中不重复的索引值的数量; 例如,某个数据列包含值1、3、7、4、7、3,那么它的基数就是4。索引基数相对于数据表行数较高(也就是说,列中包含很多不同的值,重复的值很少)的时候,它的工作效果最好。 如果某数据列含有很多不同的年龄,索引会很快原创 2018-01-11 21:58:12 · 7793 阅读 · 0 评论 -
索引
索引概述索引定义:索引(Index)是帮助MySQL高效获取数据的数据结构索引本质:索引是数据结构索引描述:在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构,就是索引索引的最好的备选数据列是那些出现在WHERE子句、join子句、ORDER BY或GROUP BY子句中原创 2018-01-02 20:25:21 · 228 阅读 · 0 评论 -
autocommit
autocommit一、概念事务自动提交设置,默认为1,即除非显示声明一个事务的开始,否则每一个查询都会被当做独立的事务被处理默认情况下,数据库处于自动提交模式。每一条语句处于一个单独的事务中,在这条语句执行完毕时,如果执行成功则隐式的提交事务,如果执行失败则隐式的回滚事务关闭自动提交的原因,事务作为一个独立处理最小单元,往往需要处理一系列连续的数据操作,这些操作被视为一个整体,原创 2017-12-10 13:38:07 · 5863 阅读 · 0 评论 -
事务
事务一、概述事务是一组不可被分割执行的SQL语句集合事务成功整体提交 commit,失败整体回滚 rollback事务应该尽可能短,因为长事务会导致长时间无法释放表内行级锁,从而降低系统并发的性能// 示例:从 A账户 转账给 B账户// 1.A账户扣款// 2.B账户增加// 两个操作是一个整体,要么全部成功,要么全部失败;否则会造成数据的不一致其他相关原创 2017-12-11 22:07:33 · 704 阅读 · 0 评论 -
MySQL 数据类型
MySQL 数据类型前提条件mysql> select version();+-----------+| version() |+-----------+| 5.7.17 |+-----------+1 row in set整型数据类型 数据类型 占用字节 表示范围(有符号) 表示范围(无符号) 默认宽度 MyBatis 中原创 2018-01-27 10:57:13 · 316 阅读 · 0 评论 -
SQL语句优化
SQL语句优化建表主键无符号自增,不使用字符串UUID做主键,因为辅助索引中存放的是主建索引的值,通过主键索引间接查询数据,主键索引过长,会增加辅助索引文件的大小数据类型:行数据 65535 字节,在分配 varchar 字段类型的数据的长度时需要注意,不要超过最大上限查询union 与 union all ,前者合并两个查询结果并去重,后者只是做合并,优先原创 2018-01-14 19:28:12 · 215 阅读 · 0 评论 -
常用汇总
常用汇总truncate 与 delete 区别truncate : ddl 语句,删除数据不可恢复;清除索引;表中自增 auto_increment = 0 delete : dml 语句,删除数据可恢复,记录操作到日志中;表中自增 auto_increment 不受影响参考资料drop、truncate和delete的区别设置 auto_inc...原创 2018-03-31 12:19:09 · 162 阅读 · 0 评论 -
SQL 优化核心思想
SQL 优化核心思想SQL 优化必懂的概念概念英文含义影响示例计算临界基数Cardinality某个列唯一键(Distinct Keys)的数量基数的高低影响列的数据分布性别字段基数为2select column_name,count(*) from table group by column_name order by 2 desc5%,当某列的查...原创 2018-12-19 07:29:16 · 3375 阅读 · 0 评论