(2)...SQL
IT云清
技术专家,团队主管,Apache Seata Committer,公众号:java4all
展开
-
mysql查看数据库和表使用空间
– 1.切换USE information_schema;– 2.查看数据库使用大小SELECT concat( round( sum(data_length / 1024 / 1024), 2 ), 'MB' ) AS DATAFROM TABLESWHERE table_schema = 'user_server';– 3.查看表使用大小SELECT concat( round( sum(data_length / 1024 / 1024),原创 2020-07-08 10:47:20 · 702 阅读 · 1 评论 -
java操作kudu 增删改查
1. 构建 maven 工程、导入依赖 <dependency> <groupId>org.apache.kudu</groupId> <artifactId>kudu-client</artifactId> <version>1.6.0</version> </dependency>2.增删改查/**原创 2020-05-12 20:12:14 · 2087 阅读 · 0 评论 -
mysql字符串包含关系查询
例如判断bill表中,detail字段中不包含money的结果集。SELECT * FROM bill a WHERE !LOCATE(a.money,a.detail);原创 2019-11-25 19:38:01 · 2001 阅读 · 0 评论 -
mysql查询数据库数据量
查询数据库数据量大小-- SHOW TABLE_SCHEMA;-- use information_schema;SELECT concat( round( sum(data_length / 1024 / 1024), 2 ), 'MB' ) AS DATAFROM TABLESWHERE table_schema = '你的数据库名字';...原创 2019-11-12 15:27:30 · 584 阅读 · 0 评论 -
mysql COALESCE函数
COALESCE(value,…)是一个可变参函数,可以使用多个参数。作用:接受多个参数,返回第一个不为NULL的参数,如果所有参数都为NULL,此函数返回NULL;当它使用2个参数时,和IFNULL函数作用相同。使用示例:SELECT IFNULL(NULL,'test'); //testSELECT IFNULL('wang','test'); //wangSELECT COALE...原创 2018-10-31 11:28:32 · 14791 阅读 · 1 评论 -
Lock wait timeout exceeded; try restarting transaction
这个错误,应该是锁等待超时,事务长时间没有提交,导致了回滚。1.错误如下:org.springframework.dao.CannotAcquireLockException: ### Error updating database. Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting t...原创 2018-09-04 14:37:25 · 6076 阅读 · 0 评论 -
mysql like性能优化
优化sql过程中,发现like的性能非常低,打算优化一下;网上很多优化方法,无非下面几种,抄来抄去的,我用213万条数据,每条数据50个字段左右(用的真实的生产环境的mysql数据库,和真实的成产环境的数据),做了性能测试;时间记录的次数不多,但是基本都做了10次左右,时间误差不大的,就只记录了3次,结果如下: 结论: 1.LOCATE,INSTR,REGEXP三个函数,效果在like面前没有...原创 2018-08-08 16:33:51 · 17217 阅读 · 8 评论 -
mysql 处理空格数据
mysql中有处理空格的函数,做个简单介绍: 1.TRIM()函数 这个函数的用法很简单,但是无法去除中间的空格-- 去除左右空格SELECT TRIM(' fd fd ');SELECT TRIM(BOTH' ' FROM ' fd fd ');-- 去除左边的空格SELECT TRIM(LEADING' 'FROM' fd fd ');-- 去除右边的空格SELECT...原创 2018-07-25 11:19:23 · 3270 阅读 · 5 评论 -
mysql order by的坑
1.下面两条语句的结果是一样的SELECT *from issue_info ORDER BY create_time ,issue_type DESCSELECT *from issue_info ORDER BY create_time ASC,issue_type DESC2.我们要按照多个字段排序时,需要显式的指出每一个字段的排序方式SELECT *from is...原创 2018-07-06 18:37:24 · 1709 阅读 · 0 评论 -
mysql if test的坑
在使用if test做判断时 mapper.xml中 <if test="myType != null and myType != ''"> //sql语句 </if>dao层List<IssueInfo> findPage(@Param("myType")Integer myType, Page<IssueInfo&g...原创 2018-07-11 09:48:29 · 7952 阅读 · 2 评论 -
Parameter 'stock' not found. Available parameters are [arg1, arg0, param1, param2]
SpringBoot 2.1.0,mybatis1.3.1,做一个简单的压测时,出现了一个和压力测试无关的其他的常见的问题:org.apache.ibatis.binding.BindingException: Parameter 'stock' not found. Available parameters are [arg1, arg0, param1, param2] at org.ap...原创 2018-11-28 16:04:11 · 1005 阅读 · 0 评论 -
mysql多条记录合并为一行
在某些情况下,我们需要把mysql查询出的多条记录合并为一行,可以使用GROUP_CONCAT函数,把结果用指定分隔符拼接起来。1.正常情况下:SELECT name from product_stock;结果为:2.现在需要把结果拼接到一行SELECT GROUP_CONCAT(name SEPARATOR ',') as name from product_stock;结果为...原创 2019-01-12 16:47:46 · 13460 阅读 · 0 评论 -
mysql表字段值处理回车符换行符
查询数据库时,字段值一直无法匹配上,但是看数据库,觉得没问题,仔细排查后,发现可能是数据入口有问题,导致这个字段的所有的值,后面都加的有回车和换行符。鼠标悬浮时没问题,但是如果真正的点击这个字段时,就会发现空了,光标向前移动下,就看到值了,可以确认时值后面换行了。查询出来如下:工商银行\n处理方案:UPDATE card_bin SET bank_name = REPLACE(RE...原创 2019-03-19 15:49:53 · 4837 阅读 · 0 评论 -
分布式事务系列--分布式跨库查询解决方案 mysql federated引擎的使用
分布式跨库查询时,可以尝试使用federated引擎,来创建远程表的映射,方便查询。1.开启引擎查询数据库是否支持SHOW ENGINES;有,说明支持,但是没有开启,开启一下:配置文件添加:federated,如下:[mysqld]federated## Remove leading # and set to the amount of RAM for the most i...原创 2019-03-20 11:38:15 · 2311 阅读 · 4 评论 -
In aggregated query without GROUP BY...this is incompatible with sql_mode=only_full_group_by
数据库查询时,出现如下错误:Caused by: com.mysql.jdbc.exceptions.jdbc4MySQLSyntaxErrorException: In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'credit_server.cred...原创 2019-03-13 17:16:23 · 1839 阅读 · 0 评论 -
mysql大于号小于号写法
mysql中大于号小于的写法<<<![CDATA[ < ]]><=<=<![CDATA[ <= ]]>>><![CDATA[ > ]]>>=>=<![CDATA[ >= ]]>&原创 2019-03-21 16:07:26 · 14263 阅读 · 4 评论 -
tkmybatis更新无效
项目中持久层引入了tkmybatis,在一个更新的操作中,遇到一个问题:根据主键更新数据,方法为:public interface UpdateByPrimaryKeySelectiveMapper<T> { /** * 根据主键更新属性不为null的值 * * @param record * @return */ ...原创 2019-04-28 16:17:04 · 3501 阅读 · 3 评论 -
mysql case when then用法
case when then 的基本用法SELECT CASEWHEN b.is_leave = 0 THEN '在职'WHEN b.is_leave = 1 THEN '离职'ELSE '状态为空'ENDFROM sys_user_front aLEFT JOIN sys_org_emp b ON a.info_id = b.info_idWHERE 1 = 1AND...原创 2019-06-19 09:12:33 · 35282 阅读 · 0 评论 -
Docker进入mysql容器
启动mysql后,如果想进入mysql的命令行,执行如下命令[root@izbp163wlhi02tcaxyuxb7z ~]# docker exec -it mysql1 bash //mysql1是我启动的mysql服务的nameroot@654c15160c66:/# mysql -uroot -pEnter password: //输入密码即可Welcome to the...原创 2018-07-01 10:40:00 · 58607 阅读 · 2 评论 -
mysql 字符串转日期
在mysql做数据库迁移时,如果数据不过程序,纯sql操作,那么将字符串转为日期格式可以使用如下方式:SELECT DATE('2017-02-11')SELECT DATE('2017/02/11')SELECT STR_TO_DATE('2015/02/25','%Y/%m/%d')SELECT STR_TO_DATE('2015-02-25','%Y-%m-%d')转换...原创 2018-05-04 15:01:47 · 16203 阅读 · 0 评论 -
mysql中count()函数的用法
数量查询时,有如下几种方式:1.下面三种方式,在多数情况下效率是基本相同的,但问题在于,很多情况下,我们数据库可能有脏数据,比如重复数据,或者某条数据重要字段是null的,那下面的这几种,会把这种脏数据也统计上,本质都是统计满足条件的行数的:select count(*) from `user` select count(1) from `user` select co...原创 2018-04-03 15:44:13 · 3509 阅读 · 1 评论 -
SQL---UNION 和 UNION ALL 操作符
SQL---UNION 和 UNION ALL 操作符原创 2017-10-17 09:13:09 · 354 阅读 · 1 评论 -
SQL---DATE_ADD()函数
Mysql中,DATE_ADD()函数原创 2017-10-11 14:11:41 · 12029 阅读 · 0 评论 -
SQL---NOW()函数,如何在mysql数据库中插入当前日期,当前时间
INSERT INTO product VALUES ('香蕉','3.5',NOW());原创 2017-09-04 18:48:59 · 51913 阅读 · 15 评论 -
SQL---NULL值处理(1)
SQL处理null值原创 2017-10-23 22:28:27 · 558 阅读 · 0 评论 -
SQL---NULL值处理(2)
SQL的null值处理原创 2017-10-23 22:36:27 · 395 阅读 · 0 评论 -
SQL--动态列名
前几天遇到一个问题,就是查询时,列名是不固定的,是动态的,是一个传递过来的变量,简写如下: select entName,entCode,province from ent_table where province=#{province} and #{type} = 1这个type,是这个表的列名,但是不固定,具体是哪一列,需要看前面传递过来的是什么,当时用上面的这个语句,怎么...原创 2017-10-24 22:25:05 · 7589 阅读 · 1 评论 -
SQL---count()函数结果为null时替换为0
在sql中,做count()统计时,如果结果为null,这条数据是不显示的,但是经常会有类似的需求,比如:统计江西省下的某11个市的企业数量,如果有些城市企业数量为null,会发现最后返回的结果不到11条。怎么办?原创 2017-11-14 15:51:37 · 46839 阅读 · 4 评论 -
SQL---计算两个日期之间的时间差
在进行日期处理的时候,有时会需要计算一下两个日期之间相差几年零几个月,这里记录一下,如何用mysql数据库和java结合,准确的拿到两个日期之间的时间差。1.mysql数据库中,利用TIMESTAMPDIFF函数,拿到两个日期之间相差的月数,当然,也可以拿到天数,年数,如下:SELECT TIMESTAMPDIFF(DAY,'2012-10-01','2013-01-13') as dayDiff...原创 2017-11-29 09:29:38 · 20946 阅读 · 0 评论 -
SQL---Lpad()函数,Rpad()函数,数据库
用 处:这是mysql的两个函数,用来填充某个字段的查询结果的。比如下面,想查询出frname这个字段,但是我想让查询结果长度固定,不足的用我自己定义的东西去填充,那就用这个函数就好了;这就是一个简单的填充的函数。select LPAD(frname,7,'xo') as '左填充', RPAD(frname,8,'xo') as '又填充', frname as 不填充f...原创 2017-08-16 22:06:40 · 23650 阅读 · 4 评论 -
SQL---Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column '
数据库中插入数据或执行sql语句时一直报下面这个错误:Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on c...原创 2017-12-27 17:45:15 · 5137 阅读 · 0 评论 -
union all 和 order by 连用的问题
在mybatis中,如果union 或者union all 和 order by连用,会发现运行会报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'a' in 'order clause'这里的字段a是无法识别的。这里写一段伪代码如下:select a,b,cfrom t原创 2018-01-26 10:31:37 · 3627 阅读 · 0 评论 -
SQL---mybatis如何返回主键id
使用mybatis时,insert方法如何返回主键?方法一:<insert id="add" parameterType="com.java4all.User"> <selectKey resultType="java.lang.String" order="AFTER" keyProperty="id"> SEL原创 2018-03-06 21:32:04 · 1524 阅读 · 0 评论 -
SQL---insert方法中使用foreach
如何在Mysql语句的insert语句中使用foreach方法,做循环插入?这里有一个user的集合,users,将其遍历插入到数据库表user中,方法如下:<insert id="addList" parameterType="com.java4all.User"> INSERT INTO user(name,age,address) <fo...原创 2018-03-06 21:40:09 · 19694 阅读 · 10 评论 -
SQL---mysql删除重复数据
开发时,经常会有清理数据库中重复数据的需求,比如下面这张表report_apply :我们需要删除report_name重复的数据,具体步骤如下:-- 重复数据SELECT report_name from report_apply GROUP BY report_name HAVING count(report_name) > 1-- 重复数据中最小的id留下SELECT MIN(i...原创 2018-03-08 14:00:31 · 526 阅读 · 0 评论 -
SQL---mysql的truncate函数,mysql的round函数
都是保留小数位数的,具体用法如下,注释的是该语句的 查询结果:-- 1.23SELECT TRUNCATE(1.2323,2)-- 1.32SELECT TRUNCATE(1.3276,2)-- 1SELECT TRUNCATE(1.3276,0)-- 0SELECT TRUNCATE(1.3276,-5)-- 1.23SELECT ROUND(1.2323,2)-- 1.3...原创 2018-03-02 14:16:36 · 1836 阅读 · 0 评论 -
SQL---mysql新增字段
ALTER TABLE people ADD COLUMN name VARCHAR(100) DEFAULT NULL COMMENT '姓名' AFTER age; 修改表 people 增加字段name 长度100 默认为null 备注:姓名 在age字段后面;...原创 2018-03-14 10:28:44 · 105374 阅读 · 9 评论 -
SQL---常用sql整理
最常用的sql语句用法原创 2017-10-28 11:16:46 · 411 阅读 · 0 评论