mysql
xiaoniuxqq
这个作者很懒,什么都没留下…
展开
-
利用mysql自定义变量提取数据各分组的前n项
提取数据的各类前n行原创 2022-09-23 18:22:00 · 213 阅读 · 0 评论 -
mybatis使用自定义变量
mybatis,自定义变量原创 2022-09-23 18:12:50 · 2034 阅读 · 1 评论 -
mysql使用正则表达式查询
mysql 正则表达式原创 2022-06-13 15:42:41 · 379 阅读 · 0 评论 -
mysql利用用户变量实现的累加
set @old=95;update test mai1 inner join test mai on mai.id=mai1.id-1set mai1.total_value=(@old:=@old+mai.value)where mai1.id>1原创 2021-12-24 16:46:45 · 777 阅读 · 0 评论 -
mysql时间处理函数收集
当前日期:select curdate();下月2号:select date_add(curdate()-day(curdate()-2),interval 1 month)下月1号:select date_add(curdate()-day(curdate()-1),interval 1 month)本月1号:select curdate()-day(curdate()-1)select DATE_ADD(curdate(),interval -day(curdate())+1 day);原创 2021-04-25 17:37:07 · 71 阅读 · 0 评论 -
mysql设置groupby不需全部字段
set @@sql_mode=(SELECT REPLACE(@@sql_mode,‘ONLY_FULL_GROUP_BY,’,’’));原创 2021-04-16 17:41:43 · 1401 阅读 · 0 评论 -
mysql 强制索引
– 普通强制索引select * from test ms force index(index_user_id)where ms.user_id in (103218688282329088,31015110789443584,104990874965901312,104990874965901318,134592641865089024);– 主键强制索引select * from test ms force index(PRI)where ms.id in (1,10000000,10000原创 2021-04-06 16:32:09 · 90 阅读 · 0 评论 -
mysql for update
最近在仔细分析mysql的for update行锁。1、for update可能会破坏mysql的事务隔离级别,比如设置的是可重复度,但是for update语句的查询结果是读已提交的数据。例如:ms.t的值为700事务1:@1:set autocommit=0; :@3:select * from test ms where ms.id=1 for update;@4:update test ms set ms.t=200 where ms.id=1;@7:commi原创 2021-04-06 15:18:52 · 497 阅读 · 0 评论 -
查看数据库容量
查看表:selecttable_schema as ‘数据库’,table_name as ‘表名’,table_rows as ‘记录数’,truncate(data_length/1024/1024, 2) as ‘数据容量(MB)’,truncate(index_length/1024/1024, 2) as ‘索引容量(MB)’from information_schema.tables where table_schema=‘screport’order by data_lengt原创 2021-04-01 16:36:18 · 121 阅读 · 0 评论 -
记一次mysql for update失效原因排查
在上线后跟踪mysql的某操作历史表,发现部分操作纪律未在上一条的基础上进行更改。该操作是在分布式服务中,多服务并行运行,但均置于事务中并用for update排它锁锁住的,理论上说不应该出现并发修改。整理了一下mysql的for update排它锁能实现的条件:1、必须置于事务中,事务要能生效,特别是spring中事务方法必须是public,且必须是由类外调用该事务方法。2、for update的查询语句必须规范,要么查询条件是主键,要么查询条件要走索引,至于最终是锁行还是锁表都有可能。3、如果有读写分原创 2021-03-31 15:02:07 · 4257 阅读 · 2 评论 -
mysql的update select语法
mysql的update select语法与oracle有所不同:update A inner join(select id,name from B) c on A.id = c.id set A.name = c.name;原创 2020-08-13 15:11:11 · 219 阅读 · 0 评论 -
mysql如何优化使用索引
在mysql的innodb中数据是存在主键索引上的,通过普通索引查询出来的是主键值,之后会再跳到主键索引上去获取数据,这个过程叫回表。例如表中为name和age创建了联合索引,查询sql为:select * from table where name like '张%' and age=81、在mysql5.5版本中会根据联合索引的最左匹配原则,查询所有首字母为张的人,然后向右一个一个去回表查询age=8的人。假如姓张的有8000W个,最终满足条件的有100W人,那么就会根据索引查询8000W次,回原创 2020-06-22 11:31:04 · 156 阅读 · 0 评论 -
mysql和oracle的分组排序sql
oracle的分组排序:select * from ( select row_number() over(partition by ms.school_id order by ms.create_time desc) mm,ms.* from mark_switch ms) t1 where t1.mm=1 mysql的分组排序:原创 2020-05-28 18:55:09 · 254 阅读 · 0 评论 -
修改mysql数据库的表字符集和排序
alter table application_detail CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;如果需要批量修改:SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;')FROM information_schema.TABLESWHERE TABLE_SCHEMA =原创 2020-05-18 18:37:32 · 758 阅读 · 0 评论 -
mysql清空数据库中所有的表
1、SELECT concat('DROP TABLE IF EXISTS ', table_name, ‘;’)FROM information_schema.tablesWHERE table_schema = ‘mydb’;2、返回的结果集,复制出来再运行一次。(复制,可以shift批量选中,也可以导出)参考https://www.cnblogs.com/adair/p/7675202.html...原创 2020-05-14 15:50:43 · 190 阅读 · 0 评论 -
Mysql 父子集查询
1.通过子查询父集SELECT T2.* FROM ( SELECT @r AS _id, (SELECT @r := parent_code FROM city_info WHERE city_code = _id) AS parent_id, @l := @l + 1 AS lvl FROM ...原创 2020-03-30 14:46:56 · 658 阅读 · 0 评论 -
centos7下mysql5.7日志配置
在mysql配置文件(/etc/my.cnf)中写入: general_log=1 general_log_file=/usr/local/mysql/mysql-5.7.22/log/general.log slow_query_log=1 slow_query_log_file=/usr/local/mysql/mysql-5.7.22/log/slowqueries.log lon...原创 2018-06-27 09:25:46 · 9079 阅读 · 0 评论 -
mysql如果没有值就插入,有值就更新
INSERT INTO library_reader_mapping (reader_id_card,library_code,borrow_card, create_time, active_time, gate_in_time) VALUES (?, ?,?, now(), now(),now()) ON DUPLICATE KEY UPDATE gate_in_time=now()还可以...原创 2018-06-22 16:35:59 · 2682 阅读 · 0 评论 -
mysql数据库语句例子
1、DROP PROCEDURE IF EXISTS insertsCREATE PROCEDURE inserts(IN i INT,IN limitNum INT)BEGINWHILE iDOINSERT INTO test VALUES(i,CONCAT('name',i),CONCAT('上海',i),CONCAT('插入detail',i));SET i=i+1;原创 2018-01-10 17:28:31 · 175 阅读 · 0 评论 -
mysql安装5.8
https://segmentfault.com/a/1190000014643464原创 2018-06-27 09:32:51 · 2207 阅读 · 0 评论 -
查询mysql数据库事物锁
1:查看当前的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;2:查看当前锁定的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;3:查看当前等锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; 查出死锁进程:SHOW PRO...原创 2018-08-09 14:42:33 · 5724 阅读 · 0 评论 -
innodb快速估计总行数值
innodb引擎在统计方面和myisam是不同的,Myisam内置了一个计数器,所以在使用 select count(*) from table 的时候,直接可以从计数器中取出数据。而innodb必须全表扫描一次方能得到总的数量。所以在大表统计总行数的时候非常慢,600万行的数据用了0.937s。如果只需要获取大约值那么可以:show status from product; 来得到大约值这...原创 2018-10-10 17:13:41 · 552 阅读 · 0 评论 -
mysql慢日志的使用和优化
https://blog.csdn.net/m_nanle_xiaobudiu/article/details/79288257转载 2019-05-12 17:21:47 · 245 阅读 · 0 评论 -
mysql-5.7.22-linux-glibc2.12安装流程
在安装过程中可能会报libaio缺失,所以提前安装:yum install libaio安装流程:1、在官网上下载mysql-5.7.22-linux,我下载的是mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz。 2、解压tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz 3、移动目录mv m...原创 2018-05-30 16:59:26 · 5733 阅读 · 0 评论 -
MySQL中查询、删除重复记录的方法大全
已验证: DELETE FROM test WHERE id not in (select t.id from (select MAX(id) as id from test t1 GROUP BY url) t)原创 2018-06-05 23:43:27 · 107 阅读 · 0 评论 -
mysql数据引擎,锁
查看数据库的正在使用的引擎: show variables like ‘%storage_engine%’; 查看数据库提供什么引擎: show engines; 你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): show create table 表名; 如何查看Mysql服务器上的版本 额 系统函数啊 select version(...原创 2018-03-08 15:29:32 · 108 阅读 · 0 评论 -
mysql优化案例
1、使用join还是子查询: select * from employee left join test on test.id=employee.id select employee.*,(select id from test where test.id=employee.id) t from employee; 当两张表都挺小的时候,发现他们效率相差不大,当表变大时左查询的效率大于子查询...原创 2018-03-08 14:40:47 · 109 阅读 · 0 评论 -
常用的mysql函数
一、字符串类。注:mysql在处理字符串时,字符下标从1开始。1、concat(string1, string2, ……); //连接字符串mysql> select concat(‘leng’, ‘xue’, ‘gang’) as name; +————-+ | name | +————-+ | lengxuegang | +————-+ 1 row ...转载 2018-02-28 09:19:14 · 147 阅读 · 0 评论 -
sql执行顺序
有数据employee表: id salary 1 123 2 345 3 345 4 200 执行sql: select salary from employee order by salary desc limit 1 offset 2 选取第三名,结果为345 如果执行sql: select DISTINCT salary from employe...原创 2018-03-07 14:12:41 · 114 阅读 · 0 评论 -
mysql优化
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。为查询缓存...转载 2018-02-08 21:15:08 · 147 阅读 · 0 评论 -
mysql数据库关键字
DELIMITER :结束符号,默认情况下,delimiter是分号;原创 2018-01-10 17:03:01 · 933 阅读 · 0 评论 -
数据库--视图的基本概念以及作用
视图(子查询):是从一个或多个表导出的虚拟的表,其内容由查询定义。具有普通表的结构,但是不实现数据存储。对视图的修改:单表视图一般用于查询和修改,会改变基本表的数据,多表视图一般用于查询,不会改变基本表的数据。[sql] view plain copy --创建视图-- create or replace view v_student as select转载 2018-01-08 00:13:25 · 3528 阅读 · 1 评论 -
mysql的trigger触发器用法
TRIGGER简介trigger是mysql的触发器, 当建立触发器时,会监控特定的事件,当触发时会激活对象,处理trigger_stmt,即要执行的语句。 比如表的新增一条记录时,你需要更新记录的值得总和,则可以用trigger来实现。Trigger创建语句[plain] view plain copyCREATE TRIGGER trigger_name trigge转载 2018-01-15 00:00:58 · 364 阅读 · 0 评论 -
mysql储存过程
存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。——————–基本语法——————–一.创建存储过程 create procedure sp_name() begin ……… end二.调用存储过程 1.基本语法:call sp_name() 注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递三.删除存储过程 1.基本转载 2018-01-14 21:33:35 · 1516 阅读 · 0 评论 -
mysql定义变量
MySQL存储过程中,定义变量有两种方式: 1.使用set或select直接赋值,变量名以 @ 开头. 例如:set @var=1; 可以在一个会话的任何地方声明,作用域是整个会话,称为用户变量。2.以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如: DECLARE var1 INT DEFAULT 0; 主要用在存储过程中,或者是给存储传参数中。原创 2018-01-14 22:37:24 · 33441 阅读 · 2 评论 -
mysql的一些参数
max_allowed_packet = 1024 设置查询语句长度原创 2018-02-28 21:43:34 · 119 阅读 · 0 评论 -
mysql命令
1、show full processlist; :查询服务器状态 2、show status like ‘last_query_cost’ 查看mysql技术的当前查询的成本原创 2018-02-28 22:01:19 · 137 阅读 · 0 评论 -
mysql的插入insert into
1、普通插入:insert into当插入数据时,例如:INSERT INTO books (name) VALUES (‘MySQL Manual’)2、忽略重复插入:insert ignore into 当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。例如:INSERT IGNORE IN...原创 2018-05-28 11:30:06 · 6999 阅读 · 0 评论 -
mysql中从select结果中update
mysql貌似没法直接使用update table set a=x from select 但是可以使用inner join来实现: update librarys INNER JOIN (select * from librarys where hallCode=’AHRF’ OR hallCode=’AGZE’) aa set librarys.system_source=3 where...原创 2018-05-08 17:57:45 · 716 阅读 · 0 评论 -
count,distinct和group by对null值的操作
distinct 会将所有null视为一项 group by 将所有null值视为一项 count 不会计算null值项,count(null)=0select count() from (select count() as num from library_books group by stayLibraryHallCode) temp; 输出结果是3229 select COUNT...原创 2018-05-21 12:03:53 · 10917 阅读 · 0 评论