sql
文章平均质量分 64
HD243608836
这个作者很懒,什么都没留下…
展开
-
MySQL的SQL语句的执行顺序
一张图即可完美描述:转载 2023-02-23 16:57:48 · 130 阅读 · 0 评论 -
【原创】spring data jpa在mysql分页中的实例(一次访问同时获取数据和总数)
mysql中语句如下selectlimit 0,10;原创 2022-11-16 18:42:13 · 1814 阅读 · 1 评论 -
mysql没有for循环语句(使用while替代)
while i < 10 do #结束循环的条件: 当i大于10时跳出while循环。if i > 10 then #结束循环的条件: 当i大于10时跳出loop循环。create procedure test() #创建无参存储过程,名称为test。create procedure test() #创建无参存储过程,名称为test。#往test表添加数据。转载 2022-09-21 22:00:08 · 1876 阅读 · 0 评论 -
mysql自己update更新自己(根据本表字段更新本表)
【代码】mysql自己更新自己(根据本表字段更新本表)原创 2022-09-19 21:55:01 · 2514 阅读 · 0 评论 -
创建MySQL只读权限用户
,此处表示所有数据库皆可被读取到。另外,指定只读某个数据库方式,例如。原创 2022-09-06 11:04:27 · 491 阅读 · 0 评论 -
写缓冲(change buffer)——这次彻底懂了
上篇《缓冲池(buffer pool),彻底懂了!》介绍了InnoDB缓冲池的工作原理。一、简单回顾一下:(1)MySQL数据存储包含内存与磁盘两个部分;(2)内存缓冲池(buffer pool)以页(page)为单位,缓存最热的数据页(data page)与索引页(index page);(3)InnoDB以变种LRU算法管理缓冲池,并能够解决“预读失效”与“缓冲池污染”的问题;画外音:细节详见《缓冲池(buffer pool),彻底懂了!》。毫无疑问,对于读请求.转载 2022-05-26 15:25:14 · 382 阅读 · 0 评论 -
MySQL Innodb Redo Log两阶段提交 和 BinLog之间的调用执行顺序
一、RedoLog和Binlog区别1. redo log 是 InnoDB 引擎特有的; binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用。2. redo log 是逻辑物理日志,页面内的操作记录的是逻辑日志,页间的操作记录的是物理日志; binlog 是逻辑日志,相当于是Mysql server层的日志,适用于所有引擎,且可以通过参数控制写入。3. redo log 是循环写的,空间固定会用完; binlog 是可以追加写入的。“追加写”是指 ...转载 2022-04-23 12:12:35 · 592 阅读 · 0 评论 -
必须了解的mysql三大日志-binlog、redo log和undo log
日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详细介绍这三种日志。binlogbinlog用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。binlog是mysql的逻辑日志,并且由Server层进行记录,使用任何存储引擎的mysql数据库都会记转载 2022-04-23 10:39:55 · 211 阅读 · 0 评论 -
mysql数据库redo/undo log、binlog 的详解及其区别
一、redo log 和 undo logredo log 是重做日志,提供 前滚 操作;undo log 是回退日志,提供 回滚 操作。只用 undo log 实现原子性和持久性的缺陷:事务提交前需要将 Undo Log 写磁盘(提供可回滚功能,保证原子性),这会造成多次磁盘 IO(不考虑各种优化例如 SQL 解析优化等),这些 IO 算是顺序 IO; 事务提交后需要将数据立即更新到数据库中,这又会造成至少一次磁盘 IO,这是一次随机 IO。如何优化?事务提交后如果能够将数据缓存一段转载 2022-03-10 17:38:09 · 779 阅读 · 0 评论 -
sql中Count(*)函数、Group By、Having的联合使用
COUNT(*) 函数返回在给定的选择中被选的行数。语法:SELECT COUNT(*) FROM table使用:现在有一个表,名叫app_category,从Navicat中可以看到表中所有数据,如图所示,可见表中有297条数据使用count函数的时候可以看到:当然仅仅是这个样子,是木有意义的,我用个可视化工具一眼看穿,要这个函数就显得鸡肋了,那么我们继续往下看。场景是这样的:表app_category与表category关联。且表间关系是一对多,即同一个app_c...转载 2022-03-02 18:05:23 · 5657 阅读 · 0 评论 -
mysql 两表关联更新update...inner join(用一个表更新另一个表)
SQL 两表关联更新UPDATE (用一个表更新另一个表)方法1: 1 2 updatetable1setfield1=table2.field1fromtable2 wheretable1.id=table2.id 1 2 3 --简写 updatet1sett1.c2 = t2.c2fromt2 wheret1.c1 = t2.c1 方法2:...转载 2022-01-05 16:16:29 · 6330 阅读 · 0 评论 -
sql的group by分组和聚合函数(max、min等)的使用(很好理解版)
原文链接:https://pyai.top 已经找不到原文章,博主删了摘自:https://blog.csdn.net/intmainhhh/article/details/80777582为什么不能够select * from Table group by id,为什么一定不能是*,而只能是某一个列或者某个列的聚合函数,group by 多个字段可以怎么去很好的理解呢?正文开始先来看下表1,表名为test:表一 testid name number 1 aa转载 2022-01-05 15:37:25 · 6290 阅读 · 0 评论 -
mysql update不支持同一个表的子查询更新
先看示例:SELECT uin,account,password,create_user_uin_tree FROM sys_user结果:表中的create_user_uin_tree标识该条记录由谁创建。创建新用户时,根据当前登录用户的uin及新创建的用户uin,有如下SQL:select concat(ifNULL(create_user_uin_tree,concat('_',2,'_')),'|_','97',"_") from sys_user where u转载 2022-01-04 16:20:37 · 1302 阅读 · 0 评论 -
sql判断字段是否为null,是否为空串
问题现象:今天在项目中思考了一个问题:如何在sql中判断一个字段是否为 null值 , 是否为 空串 呢?问题分析:需要注意的是: null值 和 空串 并不是同一个概念!!!!!!null值 就是这个字段没有赋值,也就是java中常说的 null ;而 空串 是指这个字段有赋值, 只是该值是一个 空字符串, 也就是java中常说的 空串 .既然明白了 这两者的区别之后,那就要给大家介绍一下,如何在sql中判断某个字段 时候为 null 或 空串 了!在postgresql数转载 2021-12-24 12:15:33 · 27565 阅读 · 2 评论 -
mysql怎样优化调整innodb_log_buffer_size
官方文档并没有直接告诉如何调整innodb_log_buffer_size 大小,根据对mysql 的状态信息了解知道innodb_log_buffer_size 跟Innodb_os_log_written 和Com_commit 状态有关系。Innodb_os_log_written:innodb 引擎redo log 多少个字节被写入 Com_commit : 在autocommit = 0 时候 有多少个innodb 事务提交 ,如果autocommit = 1,innodb...转载 2021-12-02 15:26:01 · 1019 阅读 · 0 评论 -
MySQL千万级数据库数据插入insert速度加速调优
问题描述:普通台式机,采集数据,表中已经有>1000万数据量。采集回来的数据插入表中的时候很慢,每条约100毫秒。解决方法:1、加大mysql配置中的bulk_insert_buffer_size,这个参数默认为8Mbulk_insert_buffer_size=100M2、改写所有insert into语句为insert delayed into这个insert delayed不同之处在于:立即返回结果,后台进行处理插入。3、还有一个技巧是在一条insert中插转载 2021-12-02 12:35:34 · 15780 阅读 · 0 评论 -
linux(centos7)中mysql5.7开启binlog及日志内容查看(必须配置server-id)
一、如何开启5.7版本,直接在配置文件中指定:[mysqld]log-bin=mysql-binserver-id=1binlog_format=ROW二、坑接下来是两年前写这篇博客时候的踩坑记录,不感兴趣的,可以直接跳过该部分,直接跳到第二章:开启MySQL的binlog日志_happyfly的博客-CSDN博客_mysql开启binlog按照上面的步骤(这个教程应该是近期作者更新过了,下面踩的坑已经被修复了)操作,结果启动失败。然后查看我这边的配置文件:[转载 2021-11-30 16:05:11 · 4304 阅读 · 0 评论 -
linux中使用crontab定时生成mysql数据库的sql备份压缩gz文件
注意:直接生成gz压缩文件,不会生成压缩前文件1. db_backup.sh文件(此处我把mysqldump使用的数据库用户名密码已填写在/etc/my.cnf中了,避免产生那个密码安全警告日志)#!/bin/bash# crontab is very special for init $PATH, and python3 is in /usr/local/bin/. source /etc/profile can import it# or Absolute path (just li原创 2021-11-29 18:28:47 · 947 阅读 · 0 评论 -
mysql中lock tables与unlock tables(锁表/解锁)使用总结
先说结论:LOCK TABLES为当前线程锁定表。 UNLOCK TABLES释放被当前线程持有的任何锁。当线程发出另外一个LOCK TABLES时,或当服务器的连接被关闭时,当前线程锁定的所有表会自动被解锁。如果一个线程获得在一个表上的一个READ锁,该线程和所有其他线程只能从表中读。如果一个线程获得一个表上的一个WRITE锁,那么只有持锁的线程READ或WRITE表,其他线程被阻止。正文:php mysql lock tables 使用有感mysql 的 表锁 lock ta.转载 2021-11-08 17:53:38 · 14755 阅读 · 0 评论 -
MySQL之BETWEEN AND包含范围查询总结
一、时间范围查询参数格式与数据库类型相对应时,between and包含头尾,否则依情况当数据库字段中存储的是yyyy-MM-dd格式,即date类型: 用between and查询, 参数yyyy-MM-dd格式时,包含头尾,相当于x>=y && x<=z. 当是yyyy-MM-dd HH:mm:ss格式,即datetime类型: 用between and查询, 参数yyyy-MM-dd HH:mm:ss格式时,包含头尾,x>=y &&am.转载 2021-11-05 13:34:05 · 9046 阅读 · 3 评论 -
Spring DATA JPA 中findAll 进行OrderBy
需要在 repository 中 定义这样的方法 :findAllByOrderByUpdatedAtDesc()public List findAllByOrderByUpdatedAtDesc();重要:(中间要多加一个By)findAllByOrderByUpdatedAtDesc();The little ‘By’ does all the magic.————————————————原文链接:https://blog.csdn.net/remote_roamer/artic转载 2021-10-26 17:09:21 · 433 阅读 · 0 评论 -
mysql数据库常见约束——主键、unique、not null
一、创建表创建表的语句create table name (name type default 约束 comment ,name type default 约束 comment ,………)1、name:字段名一般情况下,如果有多个单词构成,用下划线间隔2、type:类型(1)int :整数类型(2)double(5,2) :长度为5位保留2位小数(3)char :长度不变 UUID 手机号 身份证号(4)varchar :长度不确定 姓名(5)blob :电影转载 2021-10-26 16:54:11 · 2774 阅读 · 0 评论 -
Mysql中tinyint(1)和tinyint(4)到底有什么区别?
1. tinyint存储只是用一个字节,就是8位,只能存储2^8个数字,也就是256个数字,在mysql实现中,有符号是-128-127,无符号是0-2552. tinyint后面的括号带的数字,以后称之为M,和存贮的值没有任何关系,只是在某些情况下和显示的宽度有关系特殊的在java中,数据库中的tinyint(1)会自动转换为java中的boolean类型,tinyint(4)正常转换为数字int类型1. 常规测试使用基本的表,插入基本的数据查询后发现没有任何区别可以发现..转载 2021-10-26 16:29:59 · 8140 阅读 · 0 评论 -
SQL条件放在on、where、having的区别和关系(简单明了)
在写SQL语句的时候,我们经常会用到各种表连接(left join, right join, inner join, full join),还有各种分组聚合函数(sum, min, max, avg, count),那么我们在写SQL的时候,对于不同的过滤条件具体是应该放在连接操作中的 ON 后面,还是分组操作的 having 后面,还是 where条件中呢。在看了很多前辈的知识帖子之后,总结出的三种条件关键字的执行顺序如下:简单的来讲,就是:on > where > 聚合函数转载 2021-10-25 15:52:57 · 408 阅读 · 0 评论 -
SQL中各种JOIN操作后接ON和WHERE关键字的区别(清晰明了)
0.先说结论1. LEFT JOIN(以及 RIGHT JOIN、FULL JOIN)的特殊性,不管 ON 条件是否为真,数据库都会返回左侧(或右侧、左右两侧)表中的全部记录。2.INNER JOIN 没这样的特殊性,所以过滤条件放在 ON 中或 WHERE 中,其返回的结果是一样的。本文主要介绍 SQL(Structured Query Language)中 JOIN 操作后接 ON 和 WHERE 关键字的区别。说明:本文的用法示例是面向 MySQL 数据库的。1 概述当我们.转载 2021-10-25 15:42:09 · 2020 阅读 · 1 评论 -
各省简称译成英文
安徽,皖:Anhui,简称AH北京,京:Beijing,简称BJ福建,闽:Fujian,简称FJ甘肃,甘:Gansu,简称GS广东,粤:Guangdong,简称GD广西,桂:Guangxi,简称GX贵州,黔:Guizhou,简称GZ海南,豫:Hainan,简称HI河北,冀:Hebei,简称HE河南,豫:Henan,简称HA黑龙江,黑:Heilongjiang,简称HL湖北,鄂:Hubei,简称HB湖南,湘:Hunan,简称BN吉林,吉:Jilin,简称JL转载 2021-10-25 15:05:38 · 5842 阅读 · 0 评论 -
mysql查询replace用法详解
一、基本语法REPLACE ( string_expression , string_pattern , string_replacement )参数string_expression 要搜索的字符串表达式。string_expression 可以是字符或二进制数据类型。string_pattern 是要查找的子字符串。string_pattern 可以是字符或二进制数据类型。string_pattern 不能是空字符串 ('')。string_replacement 替换字符串。转载 2021-10-20 18:31:16 · 27481 阅读 · 1 评论 -
mysql语句insert into结合select实现数据插入
简单粗暴,直接上代码insert into 表名(列名,列名,列名...) //接下来直接写select语句即可,不需要写values() select 列名,列名,列名... from 表名 where 查询条件若查询结果为多条记录,则自动进行批量插入 可以一个表自己insert给自己注意:insert的列名与select的列名要一致...转载 2021-10-20 17:42:35 · 1119 阅读 · 0 评论 -
mysql中新建数据库create table的COLLATE是什么?
本文由horstxu发表在mysql中执行show create table <tablename>指令,可以看到一张表的建表语句,example如下:CREATE TABLE `table1` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `field1` text COLLATE utf8_unicode_ci NOT NULL COMMENT '字段1', `field2` varchar(12.转载 2021-08-27 18:14:44 · 3979 阅读 · 0 评论 -
on、where和having条件的放置详解
总结:对于left join,不管on后面跟什么条件,左表的数据全部查出来,因此要想过滤需把条件放到where后面对于inner join,满足on后面的条件表的数据才能查出,可以起到过滤作用。也可以把条件放到where后面。数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。在使用left jion时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、转载 2021-08-06 19:42:32 · 489 阅读 · 0 评论 -
Mysql tinyint长度为1时在java中被转化成boolean型——踩坑(好文章!)
在项目中遇到一个巨坑,程序没问题,从mysql查询到的tinyint数据中莫名其妙的变成了布尔类型,导致后续出错。这种细节性的问题,只有遇到时才会关注到,记录备忘。下面是详细解释:在项目中有一个字段为user_type,长度设置为1,表示注册用户和非注册用户,是注册用户为 1,否则为 2。因为查询语句是使用的Jfinal相关函数,查找到其中的获取数据类型字段程序,如下所示:在图中光标处断点发现,通过getObeject后,类型变为boolean。而其中tinyint长度为4的,经过转化后没有问转载 2021-06-24 22:44:10 · 1224 阅读 · 0 评论 -
mysql中count带条件查询——count( 条件 or null )(好文章!)
方法一:SELECT count( t.command_name = 'UNLOCK' OR NULL ) unlockFrequencyFROM表 t1234567方法二:select count(t.command_name) from t where t.command_name = 'UNLOCK'1方法三:select count(if( t.command_name = 'UNLOCK' ,1,null)) fr...转载 2021-06-04 14:20:21 · 11117 阅读 · 6 评论 -
Java中Long型数据类型对应MySQL数据库中哪种类型对应关系?
Long型id数据对应MySQL数据库中 bigint 数据类型; System.out.println(1==1L); //ture System.out.println(1L); //1 System.out.println(1L+"2"); //12java类 mysql数据库java.lang.Byte byte TINYINTjava.lang.Short short...转载 2021-05-28 17:51:50 · 4757 阅读 · 0 评论 -
MySQL bigint(20),int(11),建表zerofill是什么意思(好文章!!简单明了!)
MySQL中我们建表的时候,类型可以用bigint(20), 这是什么意思呢?首先我们看bigint, MySQL的整型类型有这样几种:类型 占用字节 tinyint 1 smallint 2 mediumint 3 int 4 bigint 8 这是决定存储需要占用多少字节,那么后边的数字(M)代表什么意思呢tinyint(M),M默认为4;SMALLINT(M),M默认为6...转载 2021-05-28 16:55:22 · 1417 阅读 · 0 评论 -
Hibernate中多对多的annotation的写法——jpa OneToMany ManyToMany(中间表可以有多个字段)(好文章!!)
一般情况下,多对多的关联关系是需要中间表的;情况一:如果中间表仅仅是做关联用的,它里面仅有2个外键做联合主键,则使用ManyToMany(不用写中间表的Model,只需要写出两张主表的model即可)学生表:@Entity@Table(name = "T_STUDENT")@SequenceGenerator(name = "SEQ_STUDENT", sequenceName = "SEQ_STUDENT")public class Student implements S..转载 2021-04-25 19:22:08 · 909 阅读 · 0 评论 -
外键(简单清晰!好文章!)
当我们用主键唯一标识记录时,我们就可以在students表中确定任意一个学生的记录:students:id name other columns... 1 小明 ... 2 小红 ... 我们还可以在classes表中确定任意一个班级记录:classes:id name other columns... 1 一班 ... 2 二班 ... 但是我们如何确定students表的一条记录,例如,id=转载 2021-04-25 11:07:13 · 239 阅读 · 0 评论 -
mysql的timestamp(时间戳)详解以及2038问题的解决方案(好文章!!)
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。生产环境中部署着各种版本的MySQL,包括MySQL 5.5/5.6/5.7三个大版本和N个小版本,由于MySQL在向上兼容性较差,导致相同SQL在不同版本上表现各异,下面从几个方面来详细介绍时间戳数据类型。时间戳数据存取在MySQL上述三个大版本中,默认时间戳(Timestamp)类型的取值范围为’1970-01-01 00:00:01’ UTC 至’2038-0转载 2021-03-22 15:21:27 · 5135 阅读 · 0 评论 -
MySQL添加外键约束foreign key语法(好文章!!)
sql语句格式:·添加外键约束(外键是在从表上添加,而不是主表!!):# altertable从表addconstraint外键名(形如:FK_从表_主表)foreignkey(从表外键字段)references主表(主键字段);ALTER TABLE orders ADD CONSTRAINT fk_users_ordersFOREIGN KEY(uid) REFERENCES users(uid)或者创建时:# CREATE TABLE [从表](CRE...转载 2021-03-17 16:56:35 · 1667 阅读 · 0 评论 -
Spring连接Mysql时遇到的TimeZone的问题(好文章!!)
我的Mysql版本是 8.0.18使用的Driver是 com.mysql.cj.jdbc.Driver当我们连接时没有指定时区,mysql会使用设置中time_zone所设置的时区,这个值默认是SYSTEM,也就是指向system_time_zone这个变量,在中国,这个值显示是CST。mysql> show variables like "%time_zone%";+------------------+--------+| Variable_name | Value |转载 2021-03-16 13:47:55 · 449 阅读 · 0 评论 -
springboot 2.0 配置时间格式化不生效问题——WebMvcConfigurer(好文章!!)
在开发中日期最常打交道的东西之一,但是日期又会存在各式各样的格式,常见的情形就是,从数据库取出的日期往往都是时间戳(毫秒数)的形式,这个一般情况下是前端不想要的结果,需要进行处理,那在springboot中比较简单:1. pom.xml中添加依赖<!-- 日期格式化 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring...转载 2021-03-11 17:49:20 · 1629 阅读 · 0 评论