
mysql | tidb
文章平均质量分 76
深入mysql底层,为笔记面试做准备
戴国进
往后余生,专注人工智能领域!!!
展开
-
sql删除重复数据只保留一条的操作方法
sql删除重复数据只保留一条的操作方法原创 2022-09-15 17:06:10 · 23003 阅读 · 3 评论 -
网易云音乐 DBA 谈 TiDB 选型:效率的选择
编者按本文摘自由网易 DBA 团队撰写的《效率的选择——分布式数据库 TiDB 网易内部选型介绍》一文,对比了以 TiDB 为基础的创新架构和 MySQL + DDB 传统架构的差异,从业务适配、降本增效、技术创新等多个维度阐释了网易考虑引入 TiDB 的原因。作者倪山三(hznishansan@corp.netease.com),网易数据库专家,杭研数据库运维团队负责人。TiDB 是⽬前开源数据库领域最热⻔的技术热点之⼀,无论是从发展势头、技术迭代速度还是社区活跃度等⽅⾯来说,在国内一转载 2021-12-30 11:44:45 · 467 阅读 · 0 评论 -
mysql字符集和排序字符集的区别
1.MySQL的字符集(character set)问题(乱码问题):1.1 版本与字符集: Mysql5.5版本在my.ini上上修改character-set-server为utf8 Mysql8.0以上安装完默认character_set_server 为utf8mb4 default-character-set=utf8 适合5.1及之前版本 character-set-server=utf8 适合5.5及之后版本 在修改完之前创建的****database是无效的转载 2021-04-16 17:31:00 · 1561 阅读 · 0 评论 -
MySQL模糊查询(like)时区分大小写
问题说明:通过上面的语句,你会发现MySQL的like查询是不区分大小写的,因为我的失误,把Joe写成了joe才发现了这个东东吧。但是,有时候,我们需要区分大小写的是,该怎么办呢?解决方法如下:方法一(查询时,指定区分大小写)很简单,在like的后面加个binary就可以了,适用于表的结构不易改变的情况下。大多数人发现这个问题的时候,往往表的结构是不能改变的,所以,这种方法还是很好的。接下来还有其他的方法,是在建表的时候,设置好区分大小的。也可以在建表时,加以标识creat...转载 2021-03-02 10:13:42 · 6328 阅读 · 1 评论 -
mysql8 的 long_query_time 单位是什么?
参考:https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html mysql8 官方文档 英文版mysql> set global long_query_time=1000;mysql> show variables like 'long_query_time';+-----------------+------------+| Variable_name | Value |+-------...原创 2021-02-23 11:27:35 · 3575 阅读 · 0 评论 -
Mysql 数据分组 GROUP BY 和 HAVING,与 WHERE 组合使用
理解分组,可以这样:对GROUP BY子句后面跟随的列名进行分组,然后对每一个分组而不是整个表进行操作。举例:在产品表中,检索每一个供应商提供的商品的数量。mysql> SELECT vend_id,COUNT(*) AS num_prods FROM products GROUP BY vend_id;结果:+---------+-----------+| vend_id | num_prods |+---------+-----------+| 1001 |...原创 2021-01-29 21:00:06 · 3894 阅读 · 0 评论 -
TiDB 和 MySQL的差异
世界级的开源分布式数据库 TiDB 自 2016 年 12 月正式发布第一个版本以来,业内诸多公司逐步引入使用,并取得广泛认可。对于互联网公司,数据存储的重要性不言而喻。在 NewSQL 数据库出现之前,一般采用单机数据库(比如 MySQL)作为存储,随着数据量的增加,“分库分表”是早晚面临的问题,即使有诸如 MyCat、ShardingJDBC 等优秀的中间件,“分库分表”还是给 RD 和 DBA 带来较高的成本;NewSQL 数据库出现后,由于它不仅有 NoSQL 对海量数据的管理存储能力、还支持传.原创 2020-10-06 23:04:43 · 14347 阅读 · 2 评论 -
mysql中的case when 、if else 和 ifnull
Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:IF表达式IF(expr1,expr2,expr3)如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。复制代码代码如下:select *,if(sva=1,"男","女") as ssva from原创 2020-12-29 15:39:27 · 6639 阅读 · 0 评论 -
mysql varchar数据类型 长度限制详细与其他字符类型的区别
char定长 最多255字符 末尾的空格会被默认删除何时选用char类型储存?1 数据长度近似 如手机号 身份证 MD5加密后的值2 短字符串 相对varchar可以节约一个储存长度的空间3 频繁更新的字段 相对于varchar不会产生长度变化也就不会产生存储碎片varcharvarchar类型与char类型不同 为变长字符串在字符长度不超过255时 使用一个字节存储长度超过255时用两个字节存储长度每行的varchar总和不得超过65535字节 ...原创 2020-12-28 22:04:28 · 7993 阅读 · 0 评论 -
详解MySQL的show processlist命令
参考:https://www.cnblogs.com/remember-forget/p/10400496.html按客户端 IP 分组,看哪个客户端的链接数最多; 查看正在执行的线程,并按 Time 倒排序,看看有没有执行时间特别长的线程show processlist和show full processlistprocesslist命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态帮助识别出有问题的查询语句等。如果是root帐号,能看到所有...原创 2020-12-04 21:45:44 · 5391 阅读 · 0 评论 -
MySQL查询和修改auto_increment的方法
查询表名为tableName的auto_increment值:SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name="tableName";修改表名为tableName的auto_increment值:ALTER TABLE tableName auto_increment=number ;原创 2020-11-16 21:24:45 · 5426 阅读 · 0 评论 -
MySQL 如何存储GUID最节省空间
参考:https://www.imooc.com/wenda/detail/596592原创 2020-11-13 21:56:43 · 5155 阅读 · 0 评论 -
MySQL中按照IN语句中的顺序排序
在SQL中,我们有时候会在查询语句中使用IN来查询相关的数据。例如: SELECT*FROMgoodsWHEREgoods_idIN( '603', '64', '566', '37', '421', '201', '1002', '339', '283', '494', '222', '617' ) 上面的查询,返回的结果还是按照good_id的顺序从小到大排序,即:37,64,222 ….而我们期待的返回顺序是:'603', '64', '566', '37', '421',...转载 2020-08-20 13:51:11 · 12430 阅读 · 0 评论 -
mysql中trim()函数的用法
去除左空格函数:LTRIM(str)mysql> SELECT LTRIM(' barbar'); -> 'barbar' 去除右空格函数:RTRIM(str)mysql> SELECT RTRIM('barbar '); -> 'barbar' 过滤指定的字符串:完整格式:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)简化格式:TRIM([remstr FROM] str)...原创 2020-08-04 17:04:09 · 10408 阅读 · 0 评论 -
mysql 批量更换数据库表引擎 InnoDB 到 myISAM, 以及mysql没有eval函数的替代方案
USE `graphics`;SELECT CONCAT( 'ALTER TABLE ' ,TABLE_NAME ,' ENGINE=MyISAM; ') as `sql-commands-for-convert-engine` FROM information_schema.TABLES AS t WHERE TABLE_SCHEMA = 'graphics' AND TABLE_TYPE = 'BASE TABLE';show table status from xxdbm.原创 2020-07-23 17:12:36 · 9480 阅读 · 0 评论 -
MySQL 拼接多行字段函数 GROUP_CONCAT详解
GROUP_CONCAT(expr) 函数会从 expr 中连接所有非 NULL 的字符串。如果没有非 NULL 的字符串,那么它就会返回 NULL。语法如下:GROUP_CONCAT 语法规则它在递归查询中用的比较多,但要使用好它并不容易。所以让我们一起来看看吧:假设有这样一张领接表模型的树型表 t_region,它的基本结构如下:字段 类型 大小 说明 REGION_ID int 11 行政地区ID PARENT_ID int原创 2020-07-21 11:57:41 · 13573 阅读 · 0 评论 -
mysql8.0.19中在navicat客户端中int、bigint等类型设置长度保存后为0
问题描述:今天在将开发库(mysql版本号:5.7.24)的表结构和正式库(mysql版本号:8.0.19)表结构做比对的时候,发现大量表中字段不一致,初以为是切换到正式库时执行SQL报错了,后,手工修改表字段长度还是不行。操作过程:在navicat中修改表中bigint字段长度如下:在linux中登录mysql,执行表修改语句如下:mysql>ALTER TABLE `mall_app_notice` MODIFY COLUMN `id` bigint(20) NOT N..转载 2020-07-07 15:10:30 · 15571 阅读 · 0 评论 -
mysql 查询昨天,今天、七天、30天的数据 - 日期比较函数的使用
主要是时间戳转"1993-01-01 00:00:00"的时间格式 FROM_UNIXTIME( `happen_time` )然后和当前日期比对 CURDATE()如果字段本身符合"%Y-%m-%d %H:%i:%s "时间格式,则直接使用即可今天的数据SELECT * FROM `statements` WHERE DATE_FORMAT( FROM_UNIXTIME( `happen_time` ) , '%Y-%m-%d' ) = DATE_FORMAT( NOW( ) ...原创 2020-07-03 11:49:38 · 9842 阅读 · 0 评论 -
详解Mysql中的bit类型及与tinyint的对比
Java bit 对应tinyint(1) false = 0 true = 1利用它可定义一个位变量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似Boolean类型中的True和False。bit只能表示0和1两种值。通常bit定义的变量作为一个标志位用。类型定义例如一个数据为25,那么它就可以定义为char型、int型等。因为他们都在自己的值域内。同样一个在自己值域的数0和1就可以定义为bit型插入插入数据时,插入true,fals...原创 2020-06-29 09:16:50 · 15541 阅读 · 0 评论 -
MySQL explain参数
1、id:SQL执行的顺序的标识。 sql从里向外执行,通过以上观察发现sql是按照id从大到小执行的。2、select_type: select类型1)、SIMPLE(不使用UNION或子查询等)2)、PRIMARY:最外层的select3)、DERIVED:派生表的SELECT(FROM子句的子查询)4)、UNION:UNION中的第二个或后面的SELECT语句5)、UNION RESULT:UNION的结果。6)、DEPEN...原创 2020-06-27 23:29:14 · 9016 阅读 · 0 评论 -
SQL中的where条件,在数据库中提取与应用浅析
1 问题描述一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣。当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析、语法解析、权限检查、查询优化、SQL执行等一系列的步骤,简短的篇幅是绝对无能为力的。因此,本文挑选了其中的部分内容,也是我一直都想写的一个内容,做重点介绍:给定一条SQL,如何提取其中的where条件?where条件中的每个子条件,在SQL执行的过程中有分别起着什么样的作用?通过本文的介绍,...原创 2020-06-27 23:27:51 · 8828 阅读 · 0 评论 -
MySQL 到底支不支持事务嵌套
最近开发中遇到了使用MySQL,多次开启事务,出现了数据错乱问题,伪代码如下:begin;# 操作1begin;# 操作2rollback;执行完后出现了操作1的数据真正写入,只有操作2的数据回滚了。在第一个事务没有提交或回滚时,再开启第二个事务时,会自动提交第一个事务。这明显不符合心理预期,而且也无法回滚一部分操作。那么问题来了,MySQL 支不支持事务嵌套呢?这个问题很难准确回答支持还是不支持!首先,调用多次begin的写法,在MySQL里肯定是无法首先事务嵌套的。经原创 2020-06-27 23:26:13 · 9830 阅读 · 0 评论 -
MySQL8 设置远程访问授权
MySQL不允许从远程访问的方法开启 MySQL 的远程登陆帐号有两大步:1、确定服务器上的防火墙没有阻止 3306 端口。MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 3306 端口连接到 MySQL 的。如果您在安装 MySQL 时指定了其他端口,请在防火墙中开启您指定的 MySQL 使用的端口号。如果不知道怎样设置您的服务器上的防火墙,请向您的服务器管理员咨询。2、增加允许远程连接 MySQL 用户并授权。1)首先以 ro原创 2020-06-27 23:23:43 · 20148 阅读 · 1 评论 -
解决报错 Can not connect to local MySQL server through socket
1.启动命令systemctl start mysqld.service 或者/etc/init.d/mysqld start 结果同样的错误 2.错误是: Job for mysqld.service failed. See 'systemctl status mysqld.service' and 'journalctl -xn' for details. 3.按照提示输入命令 systemctl st...原创 2020-06-27 23:22:33 · 13047 阅读 · 0 评论 -
mysql 联表 delete
1、从数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉DELETEt1FROMt1,t2WHEREt1.id=t2.id 或DELETE FROMt1USINGt1,t2WHEREt1.id=t2.id2、从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉DELETEt1FROMt1LEFTJOINT2ONt1.id=t2.idWHEREt2.idISNULL或DELETE FROMt1,USINGt1LEF...原创 2020-06-27 23:17:13 · 9459 阅读 · 0 评论 -
mysql 联表 update
假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price;另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价格字段的80%。在Mysql中我们有几种手段可以做到这一点,一种是update table1 t1, table2 ts ...的方式:UPDATE product p productPrice ppSET ppprice priceWHERE pproductId productIdAN原创 2020-06-27 23:16:21 · 9259 阅读 · 0 评论 -
mysql 的 find_in_set函数 - 通过逗号分隔id的字段快速获取相关表对应id的数据
举个例子来说:有个文章表里面有个type字段,他存储的是文章类型,有 1头条,2推荐,3热点,4图文 .....11,12,13等等现在有篇文章他既是 头条,又是热点,还是图文,type中以 1,3,4的格式存储.们我们如何用sql查找所有type中有4图文标准的文章呢??这就要我们的find_in_set出马的时候到了.以下为引用的内容:select * from article where FIND_IN_SET('4',ty...原创 2020-06-27 23:15:19 · 9137 阅读 · 0 评论 -
MySQL字段类型说明
MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。 MyISAM表中行的最大大小为65534字节。每个BLOB和TEXT列帐户只占其中的5至9个字节。如果MyISM包括列类型,记录格式也是可变长度。当创建表时,在某些条件下,MySQL可以将一个列从变长类型改为固...原创 2020-06-27 23:13:08 · 9710 阅读 · 0 评论 -
详解MySQL5.7新增的JSON数据类型
json据说是MySQL5.7新增数据类型,以下为学习笔记1)创建使用json数据类型的表:CREATE TABLE oper_log ( id INT NOT NULL AUTO_INCREMENT, oper_name VARCHAR(30) NOT NULL, oper_detail JSON DEFAULT NULL,#注意字段类型为json PRIMARY KEY(id));2)插入数据-- 插入含有json数组的记录INSERT INTO oper_log(ope原创 2020-06-24 09:25:58 · 9758 阅读 · 0 评论 -
MySQL事务的实现原理
开篇相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等。今天想跟大家一起研究下事务内部到底是怎么实现的,在讲解前我想先抛出个问题:事务想要做到什么效果?按我理解,无非是要做到可靠性以及并发处理。可靠性:数据库要保证当insert或update操作时抛异常或者数据库crash的时候需要保障数据的操作前后的一致,想要做到这个,我需要知道我修改之前和修改之后的状态,所以就有了undo原创 2020-06-18 13:57:57 · 8913 阅读 · 0 评论 -
navicat连接报错:Authentication plugin ‘caching_sha2_password‘ cannot be loaded的处理方法
1.登录数据库 mysql -u root -p2.通过命令 select user,plugin from user where user='root'\G我们可以发现加密方式是caching_sha2_password3.然后使用命令:alter user 'root'@'%' identified with mysql_native_password by 'your password';注意:@的地址%和localhost是有很大差别的4.刷新权限: FLUSH PRIVILE.原创 2020-05-12 21:08:15 · 8150 阅读 · 0 评论 -
解决 MySQL 导入dump文件出现 GTID限制 和 主从正常但从库不同步数据 的问题
1.ERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.【分析】mysql8默认使用插件caching_sha2_password,有些client连接报这个错误,需要拿到server的public key来加密password。【解决】加参数可以解决:--get-server-public-key..原创 2020-05-12 21:02:35 · 8408 阅读 · 0 评论 -
Mysql怎样存储IP地址
在Mysql中并没有提供针对IP地址存储的数据格式,在开发中我们可以选择使用char、varchar、int来存储,根据mysql字段类型选择的规则:字段类型定义使用最合适(最小)、最简单的数据类型,优先选择使用int类型来存储,其在逻辑运算上也要比char、varchar更快int类型存储IP地址在Mysql中提供了两个函数,用来把IP地址与数字类型的相互转化 inet_aton():把IP地址转化为数字 这种算法其实借用了国际上对各国IP地址的区分中使用的ip number。 a.b原创 2020-05-11 16:59:45 · 7251 阅读 · 0 评论 -
MySQL中的float、double和decimal类型
MySQL中的float和decimal类型float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,decimal在mysql内存是以字符串存储的,用于定义货币要求精确度高的数据。在数据迁移中,float(M,D)是非标准定义,最好不要这样使用。M为精度,D为标度。mysql> create table t1(c1 float(10,2), c原创 2016-02-17 10:54:11 · 65693 阅读 · 0 评论