Mysql
你认识小汐吗
这个作者很懒,什么都没留下…
展开
-
myqsl查询一个表数据,插入到另外一个表中
项目开发中,遇到数据库优化的地方,需要刷数据,将旧表中的数据插入到新表中,直接写sql就可以实现:INSERT INTO a_table( name, age, sex, create_time, update_time) SELECT *FROM ( SELECT b.name, b.age, b.sex, b.create_time, b.update_time FROM b_table b ) tempORDER BY te.原创 2021-01-26 08:56:34 · 170 阅读 · 0 评论 -
mysql版本号xx.xx.xx类型字段排序问题解决
项目开发中mysql有版本号字段,类似于1.0.0,1.0.1这种,需求是按照版本号倒序排列。直接使用字段排会根据字符串进行排序,这样1.10.1和1.2.1进行排序,本来想让1.10.1排在前面,但是字符串排序2比1大,1.2.1就排在了前面,不是我们想要的结果。想到把version版本号拆分成三个字段,分别排序。这里用到了myssl的SUBSTRING_INDEX.SUBS...原创 2020-04-30 09:41:45 · 6916 阅读 · 1 评论 -
MySQL: 一条sql查询语句的执行流程
MySQL的基本架构图 : MySQL可以分为Server层和存储引擎层两部分。 Server层包括连接器、查询缓存、分析器、优化器、执行器等,包括了MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 而存储引擎层负责数据的存储和提取。支持...原创 2019-04-29 18:56:27 · 1104 阅读 · 0 评论 -
MySQL:全局锁,表锁和行锁
数据库为多用户共享的,当出现并发访问的时候,需要使用锁来控制资源的访问。根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。1、全局锁 全局锁即给整个数据库实例加锁。主要的使用场景:做全库逻辑备份的时候,为了保证备份期间的库在同一个逻辑时间点,即保证一致性,类似于前面我们提到的可重复读的效果。 MySQL提供了一个加全局读...原创 2019-05-09 10:17:30 · 1589 阅读 · 1 评论 -
MySQL: 一条sql更新语句的执行流程,以及redolog和binlog
UPDATE `user_info` SET name = 'zhangsan' WHERE id = 1;和查询语句流程一样,更新语句也会同样走一遍相同的流程,如下图: 连接器验证权限,更新数据会使缓存失效,分析器分析词法和语法,优化器选择索引,执行器调用存储引擎的接口更新数据。但是这里比较特殊的是,更新流程会涉及到两个非常重要的日志模块:redo log(重做日志...原创 2019-04-30 13:56:50 · 1230 阅读 · 0 评论 -
MySQL: 索引(上)
1、简介 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本500页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下,就会很麻烦耗时。同样,对于数据库的表而言,索引其实就是它的“目录”。一个表只能有一个主键 一个加了主键的表,并不能被称之为「表」。一个没加主键的表,它的数据无序的放置在磁盘存储器上,一行一行的排列的很整齐, ...原创 2019-05-06 10:22:20 · 141 阅读 · 0 评论 -
MySQL: 索引(下)
假设,我们有一个主键列为id的表,表中有字段k,并且在k上也有索引。即有一个主键聚集索引和一个普通索引。表中Row1~Row5的(id,k)值分别为(1,100)、(2,200)、(3,300)、(5,500)和(6,600),两棵树的示例示意图如下。我们来分析下面的查询语句扫描了几次索引树;select * from T where k between 300 and 50...原创 2019-05-07 10:50:53 · 233 阅读 · 0 评论 -
MySQL:change buffer
1、change buffer InnoDB的数据是按数据页为单位来读写的。也就是说,当需要读一条记录的时候,并不是将这个记录本身从磁盘读出来,而是以页为单位,将其整体读入内存。在InnoDB中,每个数据页的大小默认是16KB。 在更新数据页时,首先去内存中查看是否有这个数据页,如果在内存中有,就直接更新;如果内存中没有这个数据页的话,InnoDB就会将这些更...原创 2019-05-16 15:05:52 · 1157 阅读 · 0 评论 -
The server time zone value ‘Öйú±ê׼ʱ¼ä‘ is unrecognized
问题:springboot启动过程中,数据库报错:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more原因:SYSTEM为SQL默认美国时间,而我们中国要比他们迟8小时,因此将时区设置为当前系统时区即可,采用+8:00格式解决办法:登录mysql数据库,执行如下命令:...原创 2019-09-03 13:50:47 · 643 阅读 · 2 评论 -
MySQL: 多版本并发控制机制MVCC
MVCC是一种多版本并发控制(Multi-Version Concurrency Control)机制。大多数的MYSQL事务型存储引擎如:InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制。事实上,他们都和MVCC多版本并发控制来一起使用。大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,能降低其系统开...原创 2019-05-05 14:26:43 · 244 阅读 · 0 评论 -
MySQL: 事务的隔离级别
一、事务的四种个隔离级别 我们都知道事务的ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)四个特性,当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题,为了解决这些问题,就有了“隔离...原创 2019-05-05 10:13:15 · 239 阅读 · 0 评论 -
MySql数据库的几种存储引擎
MySQL中常用的几种存储引擎:innoDB、myisam、memory、BlackHole以及这几个引擎的讲解innoDB存储引擎(1) innodb存储引擎的mysql表提供了事务,回滚以及系统崩溃修复能力和多版本迸发控制的事务的安全。(2)innodb支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空的话怎会进行自动存现有的值原创 2018-01-22 12:12:32 · 339 阅读 · 0 评论 -
MySql的四种事务隔离级别
如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个原创 2018-01-26 09:46:37 · 205 阅读 · 0 评论 -
mybatis的if test判断
在mybatis的mapper.xml中,有时候需要对字段进行判断,这就用到if标签:如果是做并且判断,不可以用&&来进行,直接使用and就可以判断;原创 2018-04-08 09:56:06 · 550 阅读 · 0 评论 -
MySql计算时间差函数
MySql计算两个日期的时间差函数TIMESTAMPDIFF用法,只要用一句SQL语句就可以办到了。SELECT TIMESTAMPDIFF(MONTH,'2009-10-01','2009-09-01'); 第一个参数可以是:SECOND 秒 SECONDS MINUTE 分钟 MINUTES HOUR 时间 HOURS DAY 天 DAYS MONTH 月 MONTHS YEAR 年 YEAR...原创 2018-05-04 16:28:43 · 261 阅读 · 0 评论 -
MySql中ISNULL,IFNULL和NULLIF的用法
isnull(expr); 如expr为null,那么isnull()的返回值为1,否则返回值为0。 mysql>select isnull(1+1); ->0mysql>select isnull(1/0); ->1使用=的null值对比通常是错误的。 isnull()函数同is null比较操作符具有一些相同的特性。请参见有关is null 的说明...原创 2018-04-28 12:22:15 · 233 阅读 · 0 评论 -
Mybatis Query was empty错误
问题描述:使用mybatis进行批量操作,出现 Query was empty错误;### The error occurred while setting parameters### SQL: ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Query was empty; bad SQL...原创 2018-08-15 11:42:56 · 2871 阅读 · 0 评论 -
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别
com.mysql.jdbc.Driver是 mysql-connector-java 5中的,com.mysql.cj.jdbc.Driver是 mysql-connector-java 6中的mysql5用的驱动url是com.mysql.jdbc.Driver,mysql6以后用的是com.mysql.cj.jdbc.Driver。版本不匹配便会报驱动类已过时的错误。1、JDBC连...原创 2019-03-28 11:47:38 · 3319 阅读 · 0 评论 -
Linux系统下Mysql数据库中文乱码问题解决
问题描述:当我们将开发好的javaWEB项目部署到linux系统上,操作数据库的时候,会出现中文乱码问题,比如做插入操作,发现添加到数据库的数据中文出现论码,下面就将解决linux下mysql中文乱码问题!一.打开Linux窗口,启动mysql。二.连接mysql输入show variables like '%char%'; 出现如下图,这样的话在linux下操作mysql会出现中文乱原创 2017-08-04 13:20:40 · 10577 阅读 · 2 评论