![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 73
镇杰。
这个作者很懒,什么都没留下…
展开
-
MySQL中in(‘1,2,3‘)只取第一个id为1对应的数据
MySQL中in里面如果是字符串的话,会自动使用类似CAST(‘5,6,7’ AS INT)方法转化成int类型,对于数字开头的字符串来说,转为数字的结果就是截取前面的数字部分(本例中第一个逗号前的数据),对于开头部分不能截取出数字的字符串来说,转换的结果自然就是0了。mysql 中执行 in函数的时候,会将入参字符串‘1,2’通过 CAST(‘1,2,3’ AS SIGNED) 方法优化,最终取第一个参数1,所以执行后的结果就是只有id=1的数据。t_user表有三条数据,id分别是1、2、3。原创 2022-10-14 16:53:30 · 2386 阅读 · 0 评论 -
Mysql中contact、group_concat、concat_ws
contact、group_concat、concat_ws原创 2022-08-17 17:59:31 · 3934 阅读 · 0 评论 -
Mysql update 语句到底做了些什么?
一条简单的update 的语句到底牵扯了多少的东西?看看具体流程:前提: student 只有id, 和name 两个字段,且只有id 一个主键,无其他索引。update student set name = 'gxw' where id = 2开启事务,将原内容写入undo log。 去Buffer Pool 中 查找id =2 所对应的数据。 如果在Buffer Pool中查找到了对应的数据,那么直接在Buffer Pool 中直接修改对应数据。如果没有找到,那么先从磁盘中找到对原创 2022-05-11 20:58:26 · 753 阅读 · 0 评论 -
mysql主键索引和普通索引之间的区别是什么
索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。MySQL提供多种索引类型供选择:普通索引 、唯一性索引、主键索引 、全文索引等等。下面本篇文章就来给大家介绍一下主键索引和普通索引之间的区别 ,希望对你们有所帮助。普通索引普通索引是最基本的索引类型,而且它没有唯一性之类的限制。普通索引可以通过以下几种方式创建:创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);修改表,例如ALTER TA原创 2022-05-11 12:43:26 · 4178 阅读 · 0 评论 -
mysql慢日志配置与查看
简介MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能。开启状态:查看是否开启慢查询功能:mysql> show variables like 'slow_query%';+---------------------+------------------------------------+| Variable_name | Value |+--------------原创 2022-05-11 08:49:00 · 386 阅读 · 0 评论 -
mysql回表查询优化
1.什么是回表查询前提:本次测试使用的是mysql 5.6版本。1. 1 mysql的存储引擎mysql的存储引擎分类比较多,比较常用的是MyISAM和InnoDb两种,具体各种存储 引擎就不详说了。1. 2 InnoDb存储引擎InnoDb存储引擎又有两大类索引聚集索引(clustered index)普通索引(secondary index)1. 3 聚集索引和普通索引的区别InnoDb的聚簇索引的叶子节点存储行记录,因此InnoDb必须要有聚簇索引且仅有一个聚簇索引。聚簇索引也是原创 2022-01-04 11:09:31 · 1281 阅读 · 0 评论 -
mysql——find_in_set用法
MySQL手册中find_in_set函数的语法解释:FIND_IN_SET(str,strlist)str 要查询的字符串strlist 字段名 参数以”,”分隔 如 (1,2,6,8,10,22)查询字段(strlist)中包含(str)的结果,返回结果为null或记录假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET原创 2021-08-25 18:12:22 · 3003 阅读 · 0 评论 -
详解mysql字段类型:int(4) int(10)区别、varchar char区别
一、mysql字段类型大致可以分为:数值、日期/时间、字符串数值类型:tinyint,smallint,mediumint,int/integer,bigint,float,double,decimal日期/时间类型:datetime,date,timestamp,time,year每个时间类型有一个有效值范围和一个零值,当指定不合法的mysql不能表示的值时使用零值TIMESTAMP类型有专有的自动更新特性。字符串类型:char,varchar,binary,varbina..原创 2021-02-27 19:51:28 · 4015 阅读 · 0 评论 -
Mysql 索引的设计原则
索引的设计可以遵循一些已有的原则,创建索引的时候应尽量考虑符合这些原则,便于提升索引的使用效率,更高效的使用索引。本节将介绍一些索引的设计原则。1. 选择唯一性索引唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。2. 为经常需要排序、分组和联合操作的字段建立索引经常需要 ORDER BY、GROUP BY、DISTINCT 和 UNIO原创 2021-02-26 13:16:12 · 148 阅读 · 0 评论 -
Mysql 查询语句分析 explain 详解
explain:可以模拟sql优化器执行sql语句,从而让开发人员知道自己的sql情况优化方法 官网:optimization.htmlexplain使用:explain + sql 语句select t.* from teacher t,course c,teacherCart tc where …explain的类型分析:① id:id值相同,从上往下顺序执行;查询表顺序,表数据条数由少到多执行(笛卡尔积)id不同,从内查到外层,id值越大越先查询id相同又有不同,先大后小,相同原创 2021-02-20 16:56:56 · 232 阅读 · 0 评论 -
Mysql最常用的十大函数
函数一:CONCAT使用场景:查询时把多个字段拼接成一个字符串 select concat('id:',`id`,',name:',`name`) from `student` 解 析:需要连接的字段用逗号分隔开来,自定义的拼接符号使用单引号包裹,也使用逗号分隔 注 意:这个函数需要注意的是,如果有一列值为空,那么这一列拼接的结果都会为null,为了避免这样的状况发生,需要在可能为空的列上添加函数二函数二:IFNULL 使用场景:查询时判断...原创 2021-02-19 10:43:47 · 4839 阅读 · 0 评论 -
Mysql之left join、right join、inner join、full join之间的区别
sql中的连接查询有inner join(内连接)、left join(左连接)、right join(右连接)、full join(全连接)四种方式,它们之间其实并没有太大区别,仅仅是查询出来的结果有所不同。大致理解成这样:例如我们有两张表:Orders表通过外键Id_P和Persons表进行关联。1.inner join(内连接),在两张表进行连接查询时,只保留两张表中完全匹配的结果集。我们使用inner join对两张表进行连接查询,sql如下:SELECT p.LastN原创 2021-02-01 16:43:17 · 1135 阅读 · 0 评论 -
Mysql底层原理
MySQL 的常用引擎1. InnoDBInnoDB 的存储文件有两个,后缀名分别是 .frm 和 .idb,其中 .frm 是表的定义文件,而 idb 是数据文件。InnoDB 中存在表锁和行锁,不过行锁是在命中索引的情况下才会起作用。InnoDB 支持事务,且支持四种隔离级别(读未提交、读已提交、可重复读、串行化),默认的为可重复读;而在 Oracle 数据库中,只支持串行化级别和读已提交这两种级别,其中默认的为读已提交级别。2. MyisamMyisam 的存储文件有三个,后缀原创 2021-01-27 09:36:58 · 384 阅读 · 0 评论 -
Mysql存储过程及应用场景
一、什么是存储过程简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,有点类似于应用程序的一个功能函数。存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;二、存储过程特性有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;函数的普遍特性:模块化,封装,代码复用;速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直转载 2021-01-25 11:12:58 · 1989 阅读 · 2 评论 -
Mysql触发器
一、基本概念触发器是一种特殊类型的存储过程,它不同于存储过程,主要是通过事件触发而被执行的,即不是主动调用而执行的;而存储过程则需要主动调用其名字执行触发器:trigger,是指事先为某张表绑定一段代码,当表中的某些内容发生改变(增、删、改)的时候,系统会自动触发代码并执行。二、作用可在写入数据前,强制检验或者转换数据(保证护数据安全) 触发器发生错误时,前面用户已经执行成功的操作会被撤销,类似事务的回滚 三、创建触发器基本语法delimiter 自定义结束符号cre..转载 2021-01-25 10:36:05 · 2388 阅读 · 1 评论 -
MySQL优化简单易懂
SQL 优化已经成为衡量程序猿优秀与否的硬性指标,甚至在各大厂招聘岗位职能上都有明码标注,如果是你,在这个问题上能吊打面试官还是会被吊打呢?有朋友疑问到,SQL 优化真的有这么重要么?如下图所示,SQL 优化在提升系统性能中是:成本最低和优化效果最明显的途径。如果你的团队在 SQL 优化这方面搞得很优秀,对你们整个大型系统可用性方面无疑是一个质的跨越,真的能让你们老板省下不止几沓子钱。 优化成本:硬件>系统配置>数据库表结构>SQL 及索引。 ...转载 2020-10-09 09:20:51 · 111 阅读 · 0 评论 -
主从检测,编写shell脚本实现邮件报警
安装mailxyum -y install mailx编辑maile配置文件(添加)vim /etc/mail.rc添加以下内容set from=123456@qq.com set smtp=smtp.qq.com set smtp-auth-user=123456@qq.comset smtp-auth-password=ncmekucjpoidsnset smtp-auth=login编写脚本#!/bin/bashlist=`mysql -e "show原创 2020-09-29 10:24:37 · 247 阅读 · 0 评论 -
mysql主从配置
mysql主从复制(超简单)主库:192.168.0.222从库:192.168.0.223怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下:1、主从服务器分别作以下操作: 1.1、版本一致 1.2、初始化表,并在后台启动mysql 1.3、修改root的密码2、修改主服务器master:find / -name "my.cnf" # 找到mysql配置文件 vim /etc/my.cnf # 编辑修改 主库配置 以下内容 ...原创 2020-09-29 10:21:19 · 125 阅读 · 0 评论 -
存储过程作用
存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。为什么要用存储过程呢?存储过程真的那么重要吗,它到底有什么好处呢?存储过程说白了就是一堆SQL 的合并。中间加了点逻辑控制。1.存储过程处理比较复杂的业务时比较实用。具体分为两个方面:(一)响应时间上来说有优势:如果你在前台处理的话原创 2020-09-08 14:28:33 · 785 阅读 · 0 评论 -
详谈MySQL和MariaDB区别与性能全面对比
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Or转载 2020-08-04 10:05:22 · 2942 阅读 · 0 评论 -
关系数据库关系运算
选择 选择的逻辑表达式的基本形式为:XθY。其中θ代表比较运算符,它可以是比较运算符。X、Y是属性名或常量或简单函数。它是从行的角度进行的运算。select * from order where id > 30 投影 关系R上的投影是从关系R中选出若干属性列组成新的关系。它是从列的角度进行的运算。由于投影取消了某些列之后可能出现重复的行,应取消...原创 2020-02-25 00:04:20 · 852 阅读 · 0 评论 -
数据库事务脏读、幻读、不可重复读的解决方法
概念脏读:脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。幻读:幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,...原创 2020-02-22 15:46:28 · 6380 阅读 · 1 评论 -
Mysql忘记密码快速解决方法
先找到数据库安装的位置找到一个my.ini的文件;编辑my.ini文件,找到 [mysqld] 这行在下面添加一段代码如下图, 这样就可以不用密码登录数据库 skip-grant-tables 然后保存之后再重启mysql服务这样在连接的时候就不需要密码也能成功;连接mysql数据库成功之后,使用一下语句重新设置mysql数据库的新的密码update `user` set passw...原创 2020-03-26 16:09:03 · 179 阅读 · 0 评论 -
Mysql分库分表详解
一、分库分表原因:关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分...原创 2020-03-16 23:43:53 · 193 阅读 · 0 评论 -
Mysql数据库设计之三范式和反范式
数据库范式 先说明范式中涉及两个索引概念:主键和复合主键。主键: 创建表时可以不设置主键 , 但是没有设置主键的表 ,底层会认为所有的键都是主键 ,所以在创建时使用了所有的字段创建索引 , 在查询时索引的存在几乎没有意义 。 复合主键: 两个或两个以上的字段作为评价一条数据记录的唯一性标志 。第一范式:确保每一列的原子性(列不可再分):保证数据表中每个字段都是不可再分的...原创 2020-03-16 14:24:51 · 219 阅读 · 0 评论 -
MySQL 复合索引、单一索引区别
概念:单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上; 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引); 复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引; 同时有两个概念叫做窄索引和宽索引,窄索引是指索引列为1-2列的索引,宽索引也就是索引列超过2列的索引; 设计索引的一个重要原则就是能用窄索引不用宽索引,因为窄...原创 2019-11-19 17:18:14 · 3057 阅读 · 2 评论 -
MYSQL数据库设计规范与原则
MYSQL数据库设计规范 1、数据库命名规范 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成; 命名简洁明确(长度不能超过30个字符); 例如:user, stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀; 除非是备份数据库可以加0...转载 2019-07-10 14:49:00 · 130 阅读 · 0 评论 -
Mysql常用函数
MySQL 字符串函数函数 描述 实例 ASCII(s) 返回字符串 s 的第一个字符的 ASCII 码。 返回 CustomerName 字段第一个字母的 ASCII 码: SELECT ASCII(CustomerName) AS NumCodeOfFirstCharFROM Customers; CHAR_LENGTH(s) ...原创 2020-03-15 23:46:46 · 97 阅读 · 0 评论 -
Mysql常用运算符及使用
1、算术运算符mysql采用的算术运算符和python的算术运算符基本相同,包含加(+)、减(-)、乘(*)、除(/)、取余(%)符号 作用 sql语句示例 解释 + 加法运算 UPDATE `goods` SET num= num+ 1; 通过 加数量1更新商品数量 - 减法运算 UPDATE `goods` SET num=...原创 2020-03-15 23:13:51 · 502 阅读 · 0 评论 -
Mysql——全文索引
概念:一般查询都是根据数值范围或者精准的字符串进行数据过滤查询,而全文索引则通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值或字符串比较。版本支持:在MySQL 5.7.6之前,全文索引只支持英文全文索引,不支持中文全文索引,需要利用分词器把中文段落预处理拆分成单词,然后存入数据库。从MySQL 5.7.6开始,MySQL内置了ngram全文解析器,用来支...原创 2020-03-11 17:41:15 · 1284 阅读 · 0 评论