
数据库
Moshow郑锴
Powered by Core iMoshow
-
原创 Mysql Multiple-Column Indexes(Mysql多重索引)
前言复习的灵感来自某天不小心划过跳到了mysql官方文档中,发现官方文档中其实对于Multiple-Column Indexes 也就是多重索引 中有所提及。总结就是:mysql多列索引是顺序索引,倒序或者跳序都无效。。。假设有`index(a,b,c)`,也就是可以仅使用第一个`a`,或者`a+b`,或者`a+b+c`,使用'b'或者'b+c`或者'b+c+a'或者'c+b+a'都是无效的。2021-01-17 00:51:2395
0
-
原创 mysql: Data truncated for column ‘id‘ at row 1
前言今天在update数据的时候遇到了一个奇怪的错误,我从一些数据中select并create table到另一个表,然后执行双表update操作,然后就遇到一下问题:Caused by: java.sql.SQLException: Data truncated for column 'id' at row 1create table enterprise_import_tier2 as ( select REPLACE(GROUP_CONCAT(u.bid_enterprise,';'2021-01-08 22:45:0977
0
-
原创 mysql截取字符串(SUBSTRING_INDEX)
前言手头有fix的任务,需要在mysql中,根据某个url截取部分字符串作为openId,url格式为xxxx.com/202012/t20201216_15360838.html,截取其中的t20201216_15360838出来作为openId,截取202012作为yyyy-mm的日期格式。解决方案1.mysql截取 / 和 . 中间的字符作为openIdSUBSTRING_INDEX(u.url,’/’,-1) 为根据 / 进行截取,获取后面的字符串SUBSTRING_INDEX(u.ur2020-12-16 20:48:41111
0
-
原创 mysql之关联删除(b表删除a表)
前言:除了上次的mysql关联更新之外,删除也可以是关联删除的。SQL实战:蹩脚的语句如下:delete unit_detail ud where ud.unit_id in (select x.unit_id from unit x where x.fix_flag=5;);改进版的关联删除语句:delete a from unit_detail as a inner join unit as b where a.unit_id=b.unit_id and b.fix_flag=5;2020-11-27 00:33:47221
0
-
原创 mysql之关联更新(update join,用b表更新a表记录)
前言发现之前并没有整理过mysql表关联更新,这里补上。有时候我们需要用b表去更新a表的记录,如果只有一个字段那通常我们可能就update set a.xxx=(select b.xxx from b where a.ib.id) ,但是字段一多,显得就不是特别方便了,加上不好做限制,所以就了update join。解决思路主表CREATE TABLE `unit` ( `unit_id` int(11) NOT NULL AUTO_INCREMENT, `price` decimal(102020-11-19 14:02:54673
0
-
原创 Mysql移除重复记录实战
前言这是一次mysql移除重复记录实战,想起来之前并没有share过,所以整理一下发上来大家参考。假设有company表:company_name+price为判断重复条件,也就是 group by 并 having count(*)>1 的条件需要保留最大company_id(也就是移除最小company_id的记录)有些记录不止重复了一两条,可能上百条,多次执行移除重复记录,最后手工筛查过多重复的实战记录纯SQL,供参考。############################2020-11-15 23:28:21188
0
-
原创 MySql行转列实战(根据符号分割并分行展示)
前言最近有个爬虫系统,需要针对抓取下来的信息中的单位进行处理,而单位是通过分号连接的字符串,例如xxx公司;xxx公司。在mysql中根据符号;进行分割,并分行展示。解决方案其中title是信息标题,company是公司名称。(基于真实项目实战,字段做了处理)select t.title,t.company from xxx tSELECT a.title,SUBSTRING_INDEX( SUBSTRING_INDEX( a.company, ';', b.help_topic_i2020-11-15 12:10:55244
0
-
原创 mysql中text和blob的长度
# text类型用来存储大量的文本数据,比较常见的类型。与Char、VarChat相比,text`不可以有默认值`。【一般普通文本建议用 `Text`,65K】【保存网页需要用到 `MediumText`,最大16M】# BLOB用于存储二进制数据,常常为图片或音频等大的对象。【建议使用`MediumBlob`16m起或者`LongBlob`4G,因为随便保存一个图片就超过65k了】2020-10-23 00:39:52409
0
-
原创 如何重置pgsql的密码(Reset Forgotten Password For postgres User)
BackgroundHow should we do if forgot our postgres User password . For some reason, after installing PostgreSQL, you may forget the password of the postgres user. In this case, you need to know how to reset the password.如果忘记了我们的postgres用户密码,该怎么办。 由于某些原因,2020-07-30 11:04:471879
0
-
原创 oracle知识整理(1) union和union all的区别,left join和right join的区别(各种join的区别)
union和union all的区别UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。UNION相当于真正的关联,会进行连接+排序+去重复UNION ALL相当于简单把结果连接起来,速度快UNION在进行表链接后将会按照字段的顺序进行排序,会筛选掉重复的记录,Union All不会去除重复记录,也不存在排序。所以从效率上说,...2020-01-02 18:08:252078
0
-
原创 ORA-1653: unable to extend table by 1024 in tablespace(oracle表空间满了的解决方案)
前言今天某项目的一个Repository的正常CRUD操作,发现报错信息ORA-1653:unable to extend table by 1024 in tablespace,什么意思呢,就是表空间已满,无法扩展.问题分析USERS表空间是默认用户表空间,在创建一个用户并没有指定此用户使用表空间时,该用户所有信息都会放入到users表空间中,如果有指定则一般是用户名相关的表空.--查看...2019-10-23 14:13:002389
0
-
原创 JDBC:The server time zone value ‘�й���ʱ��‘ is unrecognized or represents more than one time zone.
#2020年10月9日更新#__使用Asia/Shanghai来替代具有不确定性的UTC/GMT(很多人会以为可以UTC+8或者GMT+8,想法很美好但那种用法是不存在的)。新增DBeaver / IDEA 设置jdbc属性方法。#背景#今天项目切换到了mysql8.0.12,结果还多了一个报错,请注意…即使没有升级mysql到8.x,只升级jdbc到8.x也会导致该问题。The server time zone value ‘�й���ʱ��’ is unrecognized or represen2019-09-08 22:45:542468
0
-
原创 JDBC/MYSQL问题 : Unknown system variable 'query_cache_size'
背景今天运行一个开源项目,竟然遇到Caused by: java.sql.SQLException: Unknown system variable 'query_cache_size'的问题。真是神奇,query_cache_size是什么,如何解决?>>>先看详细报错信息:#by zhengkai.blog.csdn.net2019-09-08 22:20:09.82...2019-09-08 22:28:41992
5
-
原创 MariaDB ubuntu install guide
Install Command这些都是ubuntu下常用的几个MySQL/MariaDB命令#by https://blog.csdn.net/moshowgame#安装mariadb 10.3,如果是想用mysql则改为mysql-serversudo apt install mariadb-server#进入mysql/mariadb控制台sudo mysql -u root -...2019-09-01 00:06:31371
0
-
原创 朝CODE夕拾:数据库SQL语句性能优化
对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引。应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默认值。应尽量避免在where子句中使用!=或<>操作符,MySQL只有对以下操作符才使用索引:<,<=,=,...2019-01-22 10:12:03226
0
-
原创 DBA锁库查询(Oracle)
通常我们会遇到oracle被一些进程堵死,有时候严重影响系统,那么这套脚本可以查询出问题,给出建议,并且给出可以终结进程的命令select s.inst_id, s.sid, s.machine, s.username, s.osuser, s.schemaname, o.object_name, ...2018-04-10 11:54:584085
0
-
原创 oracle批量替换空格
空格产生的问题是多么的坑爹,明明select * from x where x.xxx=’xxxx’可以选择出来,偏偏那个值是’xxxx ‘导致查不出来。这个时候,需要批量替换空格update t_bd_material set fhelpcode=replace(fhelpcode,' ','');然后就ok了。...2018-05-11 12:09:512708
0
-
原创 Oracle中merge into的使用(代替Insert/Update)
merge into数据模板MERGE INTO table_name alias1 USING (table|view|sub_query) alias2ON (join condition) WHEN MATCHED THEN UPDATE table_name SET col1 = col_val1, col2 = col2_val ...2018-05-30 16:51:322830
0
-
原创 MYSQL之查询Timestamp某个日期的数据
实战SQL语句 @Query(value = &quot; select * from event e &quot; + &quot; where (e.event_title like CONCAT('%',?1,'%') or ?1 is null) &quot; + &quot; and (to_days(e.register_time)=to_days(?2)2018-06-13 16:58:3716228
2
-
原创 PgSql之操作JSON类型字段
假设这里有check_result的表,我们需要从里面查询检查报告json字段checkresult这样是可以查询到数据的SELECT ID , checkresult :: json -> 'name' AS check_name, checkresult FROM check_result WHERE ( checkresu...2018-06-01 14:11:526270
0
-
原创 mysql5.7之json格式与json_extract方法使用
数据初始化json_test表数据,id和jsonstr字段(类型json){&quot;no&quot;: &quot;7&quot;, &quot;title&quot;: &quot;运动方式&quot;, &quot;content&quot;: [{&quot;text&quot;: &2018-07-12 15:19:3022144
6
-
原创 空值判断,双表关联数据统计查询
SQL空值判断oracle的是NVL(value,nullvalue) pgsql的是COALESCE(value,nullvalue) mysql的是IFNULL(value,nullvalue)双表关联数据统计查询一个表是数据,一个表是项目 SELECT result2.facility_type_num, result2.facility_type_nam...2018-07-06 12:04:381588
0
-
原创 Oracle表分区详解
什么是表分区当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高...2018-08-14 11:40:54189
0
-
原创 create table select from 和 insert into table select from区别
create table select from 和 insert into table select from都是用来复制表,两者的主要区别为:create table select from 要求目标表不存在,因为在插入时会自动创建。insert into table select from 要求目标表存在,相当于复制插入。备份表数据: create table tmp_arti...2018-10-06 18:50:5413347
0
-
原创 mysql自动生成订单号(固定+时间+随机数)
SELECT CONCAT( 'SD', DATE_FORMAT(now(), '%Y%m%d%H%i%s'), lpad(round(round(rand(),4)*1000),4,'0') ) from dual;2018-09-30 11:24:064624
0
-
原创 mysql查询当前日期的一个月内的数据
背景有时候我们写sql查询一些东西,需要限定时间是一个月内的数据,这时候就可以使用这个语句了。实战一个月到未来的活动数据SELECT * from activity_info t where t.valid='Y' and t.act_date > (SELECT DATE_ADD(now(),INTERVAL -1 MONTH));一个月内到此刻的活动数据SELECT * f...2018-10-22 16:21:337784
0
-
原创 Oracle获取日期大全(当月的第一天/后一天/上一天/最后一天/上个月这一天)
由于经常会再oracle中获取当月的第一天/后一天/上一天/最后一天/上个月这一天,所以整理出下面的oracle获取日期大全出来,有什么更好的建议可以留言补充一下。日期说明oracle语句(假设现在是2018-11-28 11:11:11)返回日期当月第一天select trunc(sysdate, ‘mm’) from dual2018-11-1当年第一...2018-11-28 11:46:1112709
0
-
原创 oracle trigger触发器
– 记录TRIGGER表create or replace table BY_TRIGGER_LOG( trig_name varchar2(255), trig_time varchar2(255), trig_table varchar2(255), trig_column varchar2(255), trig_value varchar2(255)...2018-04-10 11:48:114365
0