MySQL
文章平均质量分 63
RichardGeek
一枚普通的乐于分享的程序猿博主
展开
-
union和union all的区别
union all只是合并查询结果,并不会进行去重和排序操作,在没有去重的前提下,使用union all的执行效率要比union高。原创 2023-04-23 16:15:39 · 1813 阅读 · 0 评论 -
Mysql中的 IFNULL 函数的详解
Mysql中的IFNULL函数的详解(嵌套查询等重点)如果第一个为空就执行第二个原创 2023-03-08 16:17:05 · 26435 阅读 · 0 评论 -
MySQL 执行计划(EXPLAIN)用法和结果分析
MySQL 执行计划(EXPLAIN)用法和结果分析原创 2022-08-26 17:18:43 · 756 阅读 · 0 评论 -
一次性搞定MySql的binlog、redo log和undo log的区别
一次性搞定MySql的binlog、redo log和undo log的区别原创 2022-06-02 14:48:22 · 4531 阅读 · 0 评论 -
MySQL 执行DDL语句 hang住了怎么办?
(元数据锁 MDL锁)原创 2022-03-23 20:30:39 · 761 阅读 · 0 评论 -
MySQL 慢查询日志如何查看及配置
MySQL 慢查询日志如何查看及配置原创 2022-02-21 17:46:01 · 3707 阅读 · 0 评论 -
Mysql的最左前缀原则(查询优化器优化where条件顺序)
最左匹配原则原创 2021-02-23 16:44:31 · 2780 阅读 · 1 评论 -
MySQL 主从复制原理
转载自:https://doocs.github.io/advanced-java/主库将变更写入 binlog 日志,然后从库连接到主库之后,从库有一个 IO 线程,将主库的 binlog 日志拷贝到自己本地,写入一个 relay 中继日志中。接着从库中有一个 SQL 线程会从中继日志读取 binlog,然后执行 binlog 日志中的内容,也就是在自己本地再次执行一遍 SQL,这样就可以保证自己跟主库的数据是一样的。这里有一个非常重要的一点,就是从库同步主库数据的过程是串行化的,也就是说主库转载 2021-01-20 15:44:37 · 95 阅读 · 0 评论 -
MySql 主从架构搭建
背景知识:主从这个架构可以实现数据备份,数据在多个服务器上分布等等,当然最主要的优点是可以实现负载均衡,将写操作交给主节点,读操作交给从节点。 mysql官网有很多版本,例如Enterprise(企业版需要付费,当然可以试用30天),Community(社区版,开源但是官方不提供技术支持),当然我们常用的也是社区版,本文是基于社区版的。 mysql的安装也有源码安装和二进制免安装等等方法,本文的mysql是通过二进制免安装的方式安装的 本文使用的环境是centos架构搭建步骤如下:1.首先下原创 2020-12-24 14:59:46 · 269 阅读 · 3 评论 -
创建索引sql 语句
1、创建表的同时 指定create table t1( id int not null, name char(30) not null, unique index UniqIdx(id))2、在已经存在的表创建索引使用ALTER TABLE 语句创建索引1.执行语句alter table book add index BkName(bookname(30))2...原创 2020-04-21 12:38:11 · 14999 阅读 · 0 评论 -
MySql MVCC实现原理解析
MVCC(Multi-Version Concurrency Control | 多版本并发控制)InnoDB通过为每一行记录添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另外一个记录这行数据何时过期(或者被删除)。但是InnoDB并不存储这些事件发生时的实际时间,相反它只存储这些事件发生时的系统版本号(LSN)。这是一个随着事务的创建而不断增长的数字。每个事务在事...原创 2020-04-19 15:16:28 · 409 阅读 · 0 评论 -
MySql的MVCC的理解 版本链
MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE READ)这两种隔离级别下的事务对于SELECT操作会访问版本链中的记录的过程。这就使得别的事务...原创 2020-04-16 14:36:26 · 1925 阅读 · 0 评论 -
MySQL InnoDB MVCC
英文全称为Multi-Version Concurrency Control,翻译为中文即 多版本并发控制。基本原理MVCC的实现,通过保存数据在某个时间点的快照来实现的。这意味着一个事务无论运行多长时间,在同一个事务里能够看到数据一致的视图。根据事务开始的时间不同,同时也意味着在同一个时刻不同事务看到的相同表里的数据可能是不同的。基本特征每行数据都存在一个版本,每次数据更新时...原创 2020-04-16 09:47:56 · 245 阅读 · 0 评论 -
事务的四大隔离级别中的幻读问题
1. 什么是幻读?以下都是以InnoDB存储引擎为例进行说明。数据库并发访问中,针对delete和insert操作可能出现幻读这种现象。假设数据库的隔离级别是RC(READ COMMITTED),而且其中存在下图所示的数据,表名为account:如果session 1 中操作:1.start transaction;2.selectcount(id)from acc...原创 2020-04-01 10:11:26 · 1607 阅读 · 0 评论 -
数据库判断是否存在某个字段,若不存在,则增加该字段。若存在,则不处理
Oracle:declarei integer;beginselect count(*) into i from user_tab_columnswhere table_name=upper('表名') and column_name=upper('字段名');if i=0 thenexecute immediate 'alter table 表名 add 字段名 VA...原创 2019-03-11 17:00:06 · 8257 阅读 · 0 评论 -
COALESCE函数常用于对sql中空值的处理
注意:连接操作符“||”是一个值得注意的例外。例如,空值加任何值都是空值,空值 乘任何值也都是空值,依此类推。 返回表达式中第一个非空表达式,如有以下语句:SELECT COALESCE(NULL,NULL,3,4,5) FROM dual其返回结果为:3如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。 例如:这个参数使用的场合为:假如...原创 2019-02-14 16:24:14 · 1563 阅读 · 0 评论 -
普通sql改造成分页查询sql
//subsql:普通的sql语句String sql = subsql;传入参数: 当前页 :currentPage 每页数据量:pageSizeOracle: select bb.* from (select pp.*,rownum as id from (subsql 【普通查询sql】) pp where rownum<= curren...原创 2019-04-13 15:30:28 · 241 阅读 · 0 评论 -
分页查询 模板SQL
1:Oracleselect bb.* from (select pp.*,rownum as id from ("普通sql") pp where rownum<="传入的当前页数参数"*"传入的页面大小参数") bb where bb.id>"传入的当前页数参数-1"*"传入的页面大小参数";2:MySQLSELECT bb.* FROM (SELECT pp.* ...原创 2019-06-21 10:02:32 · 245 阅读 · 0 评论 -
sql 的case when 使用
select t.*,case when t.is_valid=1 then t.chr_code || ' ' || t.chr_name || ' 已启用' when t.is_valid = 2 then 'hahhahhahahha' ELSE t.chr_code || ' ' || t.chr_name end as sys_na...原创 2019-07-10 15:54:24 · 160 阅读 · 0 评论 -
数据库的高级查询
转载自:http://blog.csdn.net/qq_35246620/article/details/74938609数据的高级操作查询数据(下)having子句having字句:与where子句一样,都是进行条件判断的,但是where是针对磁盘数据进行判断,数据进入内存之后,会进行分组操作,分组结果就需要having来处理。思考可知,having能做whe转载 2017-12-27 09:24:44 · 652 阅读 · 0 评论 -
数据库的高级操作
转载自:http://blog.csdn.net/qq_35246620/article/details/73822869数据的高级操作查询数据(中)where子句where字句:用来判断数据和筛选数据,返回的结果为0或者1,其中0代表false,1代表true,where是唯一一个直接从磁盘获取数据的时候就开始判断的条件,从磁盘中读取一条数据,就开始进行where转载 2017-12-27 09:16:16 · 1527 阅读 · 0 评论 -
数据库的高级操作
转载自:http://blog.csdn.net/qq_35246620/article/details/73725106数据的高级操作查询数据(上)基本语法: select + 字段列表/* + from + 表名 + [where 条件];完整语法: select + [select 选项] + 字段列表[字段别名]/* + from + 数据源 + [where 条件转载 2017-12-26 17:42:29 · 315 阅读 · 0 评论 -
mysql中使用order by 和limit查询变慢解决办法
本文章来给大家介绍一篇关于mysql中使用order by 和limit查询变慢解决办法,因为在mysql分页利用limit来操作,同时排序也需要使用了order by ,所以经常会两者同是使用到,但是如果数据量大的话就会碰到查询很慢很慢,下面我来给大家介绍解决办法。优化limit和offset,MySQL的limit工作原理就是先读取n条记录,然后抛弃前n条,读m条想要的,所以n越大,性能会越差...转载 2018-07-03 09:56:50 · 17995 阅读 · 1 评论 -
MySQL的基础知识
MySQL常用命令转载自:http://blog.csdn.net/chenmeixxl/article/details/75210398MySQL初步命令1 MySQL数据库基础命令1.1 创建、查看数据库1.1.1 查看系统数据库SHOW DATABASES1.1.2 创建用户数据库CREATE D转载 2017-12-29 12:44:23 · 1794 阅读 · 0 评论 -
图解MySQL 内连接、外连接、左连接、右连接、全连接
转载自:https://blog.csdn.net/plg17/article/details/78758593用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。MySQL版本:Server version: 5.6.31 MySQL Community Serv...转载 2018-07-06 18:51:32 · 230 阅读 · 0 评论 -
MySQL中创建用户赋予权限的命令详解
1.远程登录mysqlmysql -h ip -u root -p 密码2.创建用户格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”;例1:增加一个test1用户,密码为123456,可以在任何主机上登录,并对所有数据库有查询,增加,修改和删除的功能。需要在mysql的root用户下进行mysql>grant select,insert,...转载 2018-07-06 19:23:06 · 2545 阅读 · 0 评论 -
MySQL 对日期类型的字段处理
mysql 对日期类型的字段 处理, 年月日 时分秒 格式化DATE_FORMAT(create_date,'%Y-%m-%d %H:%i:%s')原创 2018-07-25 20:09:12 · 558 阅读 · 0 评论 -
Navicat for MySQL界面下如何用SQL语句创建表?
选择一个数据库,点击“查询”,在右侧点击“创建查询”,输入SQL语句,点击“执行”就可以了示例SQL:CREATE TABLE `test`.`users` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(10) DEFAULT NULL, PRIMARY ...原创 2018-07-26 10:39:46 · 20496 阅读 · 1 评论 -
MySQL查询语句执行顺序
MySQL的语句执行顺序MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。下面我们来具体分析一下查询处理的每一个阶段FOR...原创 2018-08-13 10:13:05 · 223 阅读 · 0 评论 -
MySQL索引失效的几种情况
1.索引不存储null值更准确的说,单列索引不存储null值,复合索引不存储全为null的值。索引不能存储Null,所以对这列采用is null条件时,因为索引上根本没Null值,不能利用到索引,只能全表扫描。为什么索引列不能存Null值?将索引列值进行建树,其中必然涉及到诸多的比较操作。Null值的特殊性就在于参与的运算大多取值为null。这样的话,null值实际上是不能参与...原创 2019-01-09 15:54:40 · 312 阅读 · 0 评论 -
mysql删掉某一个库下的所有表
第一步:select concat('drop table ',table_name,';') from information_schema.TABLES where table_schema='mydb'; //mydb为某个库的名称第二步:把第一步的执行结果导出,然后全部执行...转载 2019-01-15 19:05:50 · 405 阅读 · 0 评论 -
Mysql优化技巧
思路:多用索引,减少查询次数1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。explain +查询的sql语句,显示明细 type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式。 key_len列,索引长度。 r...原创 2019-01-23 17:41:35 · 175 阅读 · 0 评论 -
MYSQL的SQL查询优化
思路: 避免全局搜索,尽量利用索引=====================1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num...转载 2019-04-13 14:27:27 · 122 阅读 · 0 评论 -
Mysql 索引
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。 都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。二、索引类型Mysql目前...转载 2019-04-13 15:19:12 · 140 阅读 · 0 评论 -
把一个数据库的表导入到另一个数据库中的方法
db1为原数据库,db2为要导出到的数据库,fromtable 是要导出的表名 1. 登录导出到的数据库,执行 create table fromtable select * from db1.fromtable; 2. 在cmd下执行,mysqldump -u root -p db1 fromtable file=d:/fromtable.sql; 输入秘密,root为用户名 登原创 2018-01-15 10:41:37 · 15971 阅读 · 0 评论