
mysql
文章平均质量分 71
数据库
ximeneschen
这个作者很懒,什么都没留下…
展开
-
MYSQL8.0窗口函数
Mysql8.0的窗口函数。不同的是,。比如在MYSQL的最新版本MYSQL8已经。但是在就旧版本中还不支持这些函数,只能自己实现。实现方法主要。原创 2022-10-03 18:15:15 · 1425 阅读 · 0 评论 -
Mysql日期格式及内置日期函数
通常我们MySQL中设计datetime类型长度都默认为0:这时插入时间通常会是我们常见到的:2020-08-29 12:52:16格式。timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。,to_days():返回的是一个天数!从年份 0 开始的天数,from_days(days)作用与to_days相反。字符串转换日期 函数: str_to_date(str, format)即后者的时间范围很小。原创 2022-09-24 19:45:48 · 12008 阅读 · 0 评论 -
关于join语句的使用及其优化
所以,为了便于分析执行过程中的性能问题,我改用 straight_join 让 MySQL 使用固定的连接方式执行查询,这样优化器只会按照我们指定的方式去 join。今天,我和你介绍了 MySQL 执行 join 语句的两种可能算法,这两种算法是由能否使用被驱动表的索引决定的。这还只是两个小表,如果 t1 和 t2 都是 10 万行的表(当然了,这也还是属于小表的范围),就要扫描 100 亿行,这个算法看上去太“笨重”了。也就是说在这个例子里,“只需要一列参与 join 的表 t1”是那个相对小的表。...转载 2022-08-10 18:07:35 · 178 阅读 · 0 评论 -
mysql having的用法
在前面的例子里,我们可以在WHERE里应用城市名称限制,因为它不需要聚集。这样比在HAVING里增加限制更加高效,因为我们避免了为那些未通过WHERE检查的行进行分组和聚集计算。WHERE在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算),而HAVING在分组和聚集之后选取分组的行。(严格说来,你可以写不使用聚集的HAVING子句,但这样做只是白费劲。因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。having字句可以让我们筛选成组后的各种数据,...原创 2022-07-31 13:57:44 · 9336 阅读 · 0 评论 -
sql注入及mybatis防止sql注入
一、Sql 注入漏洞详解Sql 注入产生原因及威胁:当我们访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句。这种网站内部直接发送的Sql请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 Sql 语句,如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则会带来意想不到的危险。Sql 注入带来的威胁主要有如下几点猜解后台数据库,这是利用最多的方式,盗取网站的原创 2022-03-25 03:53:44 · 3749 阅读 · 0 评论 -
聚簇索引、非聚簇索引、普通索引、唯一索引
一、聚簇索引 VS 非聚簇索引聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行,myisam通过key_buffer把索引先缓存到内存中,当需要访问数据时(通过索引访问数据),在内存中直接搜索索引,然后通过索引找到磁盘相应数据,这也就是为什么索引不在key buffer命中时,速度慢的原因澄清一个概念:innodb中,在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找(回表),非聚簇索引都是原创 2021-12-15 17:48:30 · 5667 阅读 · 0 评论 -
Mysql8.0之后没有缓存功能
尽管MySQL Query Cache旨在提高性能,但它存在严重的可伸缩性问题,并且很容易成为严重的瓶颈。自MySQL 5.6(2013)以来,默认情况下已禁用查询缓存,因为众所周知,它不能与多核计算机上在高吞吐量工作负载情况下进行扩展。我们考虑了可以对查询缓存进行哪些改进,以及我们可以进行的优化,这些优化可以改善所有工作负载。虽然这些选择本身是正交的,但工程资源是有限的。也就是说,我们正在转变战略,投资于更普遍适用于所有工作负载的改进。建议把缓存放到客户端...原创 2021-11-24 18:27:41 · 1565 阅读 · 0 评论 -
记一次Mysql误删记录的挽救
由于误删了一条数据,只能通过mysqlbinlog恢复了参考文章参考文章参考文章原创 2021-10-19 16:14:54 · 95 阅读 · 0 评论 -
mysql8.0限制用户只能访问指定数据库,限制用户只有某种权限
mysql8有新的安全要求,不能像之前的版本那样一次性创建用户并授权需要先创建用户,再进行授权操作创建新用户: create user '#userName'@'#host' identified by '#passWord';#userName 代表你要创建的此数据库的新用户账号#host 代表访问权限,如下%代表通配所有host地址权限(可远程访问)localhost为本地权限(不可远程访问) 指定特殊Ip访问权限如10.138.106.102#passWord 代表你要创建的此数原创 2021-09-17 08:49:16 · 1897 阅读 · 0 评论 -
mysql 查询有 float 类型的字段查不到
问题之前在用 mysql 查询有 float 字段的时候,比如某一个字段 fee,明明有一条是 fee 为 1.99 的记录,但是就是查不到??select * from fee_mode where is_pp_recurring = 1 and is_enable = 1 and fee = 1.99后面查了一下,发现原来查询 float 字段是有坑的:原来在 MYSQL 中,字段类型为 float 的字段,如果不指定 float 的长度和小数点位数,要根据 float 字段的值精确查找,结转载 2021-09-15 15:44:40 · 1019 阅读 · 0 评论 -
update语句的返回值是什么
执行一条update语句,执行成功后返回值是 1 ,所以就理所当然的认为返回的是受影响的行数,但是当你再次执行这条update语句时,按正常的逻辑,数据已存在,更新不会成功,应当返回 0,但是返回值依旧是 1 (已测试过),所以返回值并不是受影响的行数,查看别人的文章,得知返回值是matched记录数(匹配到的行数)如果想设置返回值是受影响的行数,修改数据库链接配置:增加 useAffectedRows=true 即可数据库链接配置为:jdbc.driver=com.mysql.jdbc.Driv转载 2021-08-26 15:28:41 · 6850 阅读 · 0 评论 -
sharding-proxy,docker安装sharding-proxy
一、shardingJDBC和sharding-Proxy的区别关于shardingJDBC,我已经写过一篇文章可以参考,那么两者的区别到底在哪?Sharding-JDBCSharding-JDBC 采用在 JDBC 层扩展分库分表,支持读写分离,是一个以 jar 形式提供服务的轻量级组件,其核心思路是小而美地完成最核心的事情,基于 JDBC 层进行分片的好处是轻量、简单、兼容性好以及无需额外的运维工作。缺点是无法跨语言,目前仅支持 Java。Sharding-JDBC 适用场景对于关系型原创 2021-08-10 00:51:53 · 1411 阅读 · 0 评论 -
Mysql的分库分表(基于shardingsphere)
公司最近在搞服务分离,数据切分方面的东西,因为单张包裹表的数据量实在是太大,并且还在以每天60W的量增长。 之前了解过数据库的分库分表,读过几篇博文,但就只知道个模糊概念, 而且现在回想起来什么都是模模糊糊的。今天看了一下午的数据库分库分表,看了很多文章,现在做个总结,“摘抄”下来。(但更期待后期的实操) 会从以下几个方面说起: 第一部分:实际网站发展过程中面临的问题。 第二部分:有哪几种切分方式,垂直和水平的区别和适用面。第三部分:目前市面有的一些开源产品,技术,它们的优缺点是原创 2021-08-09 23:01:05 · 666 阅读 · 0 评论 -
MySQL数据同步,出现Slave_SQL_Running:no和slave_io_running:no问题的解决方法
一、问题描述:当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后或者其他原因导致MySQL无法同步了。二、Slave两个关键进程mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave_sql_running,一个是Slave_IO_Running,一个负责与主机的io通信,一个负责自己的slave mysql进程。三、如果是Slave_SQL_Running:no:解决办法如下:MariaDB [(none)]> stop原创 2021-08-07 14:44:06 · 830 阅读 · 0 评论 -
Mysql主从复制(docker例子)
一、BinlogBinlog 日志主要作用是数据恢复和主从复制。本身就是二进制格式的日志文件,网络传输无需进行协议转换。MySQL 集群的高可用,负载均衡,读写分离等功能都是基于Binlog 来实现的。关于Binlog的文章二、MySQL 主从复制主流架构模型我们基于 Binlog 可以复制出一台 MySQL 服务器,也可以复制出多台,取决于我们想实现什么功能。主流的系统架构有如下几种方式:一主一从 / 一主多从一主一从和一主多从是最常见的主从架构方式,一般实现主从配置或者读写分离都可以采用原创 2021-08-06 16:09:43 · 229 阅读 · 0 评论 -
Mysql - Binlog
一、什么是Binlog日志MySQL 的 Binlog 日志是一种二进制格式的日志,Binlog 记录所有的 DDL 和 DML 语句(除了数据查询语句SELECT、SHOW等),以 Event 的形式记录,同时记录语句执行时间。Binlog 的主要作用有两个:数据恢复因为 Binlog 详细记录了所有修改数据的 SQL,当某一时刻的数据误操作而导致出问题,或者数据库宕机数据丢失,那么可以根据 Binlog来回放历史数据。主从复制想要做多机备份的业务,可以去监听当前写库的 Binlog 日志原创 2021-08-05 22:23:09 · 352 阅读 · 0 评论 -
Mysql存在则更新,不存在则插入
INSERT INTO check_memory(macaddr,sn) VALUES('44','mac1') ON DUPLICATE KEY UPDATE `sn`='mac1';参考文章原创 2021-08-05 19:54:37 · 153 阅读 · 0 评论 -
float、double(浮点数)区别还有和decimal(定点数)的比较
一、三者的区别介绍float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)单精度浮点数在机内占4个字节,用32位二进制描述。双精度浮点数在机内占8个字节,用64位二进制描述。浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。数符占1位转载 2021-07-15 09:21:56 · 6824 阅读 · 0 评论 -
CentOS安装Mysql8
https://cloud.tencent.com/developer/article/1626795原创 2021-05-29 01:58:05 · 856 阅读 · 0 评论 -
MybatisPlus中使用多表数据,合并数据后再分页
List<Project> projectList = sysProjectMapper.selectList(queryWrapperProject); List<ProjectReported> projectReportedList = sysProjectReportedMapper.selectList(queryWrapper); List<ProjectReported> finalProject = new ArrayL..原创 2021-05-24 11:56:05 · 2415 阅读 · 0 评论 -
查看mysql表中的所有索引
mysql查看所有表的索引:SELECT a.TABLE_SCHEMA,a.TABLE_NAME,a.index_name,GROUP_CONCAT(column_name ORDER BY seq_in_index) AS `Columns`FROM information_schema.statistics aGROUP BY a.TABLE_SCHEMA,a.TABLE_NAME,a.index_name查询索引:select * from (SELECT a.TABLE_SCHEM转载 2020-12-28 13:29:55 · 8803 阅读 · 0 评论 -
CentOS安装Mysql8各种坑。。。
一、下载MySQL安装包1、打开MySQL官网https://www.mysql.com/downloads/2、选择MySQL Community (GPL) Downloads »3、选择MySQL Yum Repository4、选择Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package,点击DownLoad5、跳转到登录页面,点击下方No thanks, just sta转载 2020-12-21 14:35:45 · 1542 阅读 · 0 评论 -
为什么不推荐使用 select * ?是性能问题吗 ?
文章转载 2020-11-19 14:06:56 · 175 阅读 · 0 评论 -
mysql索引优化
emp中有500000条数据一、全值匹配建立索引explain select sql_no_cache *from emp where emp.age=30;扫描接近500000行建立索引:create index ind_age on emp(age);用上索引的同时,扫描减少至50000行;建立联合索引:create index ind_age_id on emp(age,deptId);注意:建优化索引时,索引的顺序即使和查询条件顺序不同,照样能用上索引,因为mysql原创 2020-08-06 12:12:32 · 201 阅读 · 0 评论 -
mysql联合索引的数据结构
一、本文主要讲解的内容有:联合索引在B+树上的存储结构联合索引的查找方式为什么会有最左前缀匹配原则在分享这篇文章之前,我在网上查了关于MySQL联合索引在B+树上的存储结构这个问题,翻阅了很多博客和技术文章,其中有几篇讲述的与事实相悖。庆幸的是看到搜索引擎列出的有一条是来自思否社区的问答,有答主回答了这个问题,贴出一篇文章和一张图以及一句简单的描述。PS:贴出的文章链接已经打不开了。所以在这样的条件下这篇文章就诞生了。二、联合索引的存储结构下面就引用思否社区的这个问答来展开我们今天要讨论的转载 2020-08-05 16:16:53 · 8955 阅读 · 0 评论 -
mysql-explain
一、总体看一下explain各字段二、idselect查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序三种情况:id相同,执行顺序由上至下id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行id相同或者不同的情况都同时存在关注点:id号每个号码,表示一趟独立的查询。一个sql 的查询趟数越少越好。二、 select_type有哪些查询的类型,主要是用于区别:普通查询、联合查询、子查询等的复杂查询SIMPLE:简单原创 2020-08-04 22:25:57 · 128 阅读 · 0 评论 -
MySQL 的覆盖索引与回表
一、两大类索引聚簇索引:如果表设置了主键,则主键就是聚簇索引如果表没有主键,则会默认第一个NOT NULL,且唯一(UNIQUE)的列作为聚簇索引以上都没有,则会默认创建一个隐藏的row_id作为聚簇索引InnoDB的聚簇索引的叶子节点存储的是行记录(其实是页结构,一个页包含多行数据),InnoDB必须要有至少一个聚簇索引。由此可见,使用聚簇索引查询会很快,因为可以直接定位到行记录。注意一点:只有InnoDB才有聚簇索引非聚簇索引(普通索引):普通索引也叫二级索引,除聚转载 2020-08-04 17:10:02 · 382 阅读 · 0 评论 -
Mysql优化分析
一、mysql性能下降的原因及对策数据过多–>分库分表关联了太多的表,太多join–>Sql优化没有充分利用到索引–>利用索引服务器调优及各个参数设置–>调整my.cnf以下是7种join图示:二、索引优化什么是索引MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。索引的目的在于提高查询效率,可以类比字典。如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往原创 2020-05-17 17:00:05 · 253 阅读 · 0 评论 -
Mysql总体架构
一、Mysql 的用户与权限管理mysql的用户管理:创建用户、查看用户、设置密码、修改用户、删除用户mysql权限管理:授予权限、收回权限、查看权限授权命令:grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;该权限如果发现没有该用户,则会直接新建一个用户。grant select,insert,delete,drop on atguigudb.* to li4@localhost; #给li4用户原创 2020-05-17 12:52:23 · 228 阅读 · 0 评论 -
数据库范式
初学数据库:数据库第一二三范式到底在说什么???范式:理解为一张数据表的表结构所符合的某种设计标准的级别。数据库范式分为1NF,2NF,3NF,BCNF,4NF,5NF。一般在我们设计关系型数据库的时候,最多考虑到BCNF就够。符合高一级范式的设计,必定符合低一级范式。1NF的定义为:符合1NF的关系中的每个属性都不可再分。图1所示的情况,就不符合1NF的要求。实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS),例如SQL Server,Oracle,MyS原创 2020-05-10 11:43:27 · 193 阅读 · 0 评论 -
Mysql流程控制结构
流程控制结构顺序、分支、循环1. 分支结构if函数语法:if(条件,值1,值2)功能:实现双分支应用在begin end中或外面case结构语法:情况1:类似于switchcase 变量或表达式when 值1 then 语句1;when 值2 then 语句2;...else 语句n;end 情况2:case when 条件1 then 语句1;w...原创 2020-03-22 12:22:33 · 118 阅读 · 0 评论 -
Mysql存储过程
存储过程和函数存储过程和函数:类似于java中的方法好处:1、提高代码的重用性2、简化操作存储过程含义:一组预先编译好的SQL语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率1. 创建语法CREATE PROCEDURE 存储过程名(参数列表)BEGIN 存储过程体(一组合法的SQL语句)E...原创 2020-03-22 11:43:16 · 147 阅读 · 0 评论 -
Mysql函数
含义:一组预先编译好的SQL语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率区别:存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新函数:有且仅有1 个返回,适合做处理数据后返回一个结果1. 创建语法CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型BEGI...原创 2020-03-22 12:01:09 · 146 阅读 · 0 评论 -
Mysql变量
系统变量: 全局变量 会话变量自定义变量: 用户变量 局部变量1. 系统变量说明:变量由系统定义,不是用户定义,属于服务器层面注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别使用步骤:1、查看所有系统变量show global|【session】variables;2、查看满足条件的部分系统变量show ...原创 2020-03-22 10:55:48 · 93 阅读 · 0 评论 -
Mysql视图
开门见山:mysql 视图,就是一张中间表,可如其他表一样使用。但是,进行增删改是有条件的,不能操作多张关联表的数据。可以类比excel的函数模板。1. Mysql视图1.视图是基于一个表或多个表或试图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。2.视图基于的表称为基表。3.视图是存储在数据字典里的一条select语句。4.通过创建视图可以提取数据的逻辑上的集合或组...原创 2020-03-21 20:18:56 · 205 阅读 · 0 评论 -
Mysql事务隔离级别及MVCC(多版本并发控制)
MySQL事务隔离级别先注明一点:以下讨论都是在多事务并发的情境下讨论的事务的特性(InnoDB引擎才有事务):ACID原子性:一个事务不可再分割,要么都执行要么都不执行一致性:一个事务执行会使数据从一个一致状态切换到另外一个一致状态隔离性:一个事务的执行不受其他事务的干扰持久性:一个事务一旦提交,则会永久的改变数据库的数据.事务隔离级别 事务隔离级别指的是在处理同一个数据的...原创 2020-03-15 14:33:21 · 330 阅读 · 0 评论 -
mysql
net start mysql;–启动mysql服务器net stop mysql;–关闭mysql服务器mysql -u root -p 回车之后输入密码即可进入mysqlquit; 或者 exit; --退出mysql–首先要进入mysql安装目录下的bin目录下,再输入如下语句:mysqladmin -u root -p 旧...原创 2020-03-21 18:48:18 · 242 阅读 · 0 评论