sql
天马行空-
学好基础知识才是最重要的。忌:好高骛远,眼高手低。
展开
-
Mysql IN对字符串,整数 类型数据 查询的参数与表字段类型不一致时
现象 :只想查出id 为15 的数据,但是出来好多其他的数据。里面都包含15 ,后来经过检查发现表里数据列的类型为varchar 指定成字符串就不会查询其他的数据了。于是查了一下资料 mysql 字符串与数值类型比较 :SELECT "abc"=1;-- 结果:0SELECT "1abc"=1;-- 结果:1SELECT "abc"=0;-- 结果:1SELECT "a2bc"=2;-- 结果:0SELECT "02a2bc"=2;-- 结果:1这里看到的结果原创 2020-10-19 18:03:57 · 908 阅读 · 0 评论 -
mysql 获取自增主键id 补零 插入新行
先介绍使用到的mysql函数 RIGHT 和 CONCATMySQL 中的 RIGHT(s,n) 函数返回字符串 s 最右边的 n 个字符。SELECT RIGHT('中华人民共和国', 4); 结果: 民共和国MySQL中CONCAT 函数 CONCAT(str1,str2,…) str1 字符串注意:返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。SELECT CONCAT('中华人民', "共和国"); 执...原创 2020-06-19 14:15:51 · 1450 阅读 · 0 评论 -
java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
解决 项目中 Lock wait timeout exceeded; try restarting transaction; nested exception is java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction 错误原因 是因为MySQL的事务产生了死锁 。解决办法(转载 2017-08-30 16:06:44 · 1566 阅读 · 1 评论 -
mybatis执行批量更新
这里我是用的是mysql 数据库mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上* &allowMultiQueries=true *即可。如 :jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true转载 2017-10-19 10:42:07 · 321 阅读 · 0 评论 -
mysql 有则更新无则插入
表结构如下:CREATE TABLE `test` ( `name` varchar(255) DEFAULT NULL, `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1236 DEFAULT CHARSET=utf8;有则更新无则插入repl转载 2017-10-25 14:01:24 · 8124 阅读 · 0 评论 -
Mysql删除重复数据
id 为主键 songid 为内容重复的列-- 删除重复数据DELETE FROM test WHERE id in (SELECT id FROM ( SELECT id FROM test a WHERE ((SELECT COUNT(*) FROM test WHERE songid = a.songid) > 1) and id not in (select min(id)原创 2018-01-26 10:50:35 · 209 阅读 · 0 评论 -
数据处理常用的sql语句整理
一下语句都是基于 mysql数据库 查询是否使用索引 explain select * FROM t_table1;结果列的含义: table:此次查询操作是关联哪张数据表 type:连接查询操作类型,一般根据索引查询的话为const,如果没有索引,则遍历所有数据那么为All(此种方式效率极低) possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。 key:...原创 2018-04-19 17:59:49 · 2715 阅读 · 0 评论 -
数据库锁表解决办法
----------------------------数据库锁表----------------------------------------------------- 查询 未提交事务 select * from information_schema.innodb_trx;-- 杀掉对应进程 kill trx_mysql_thread_id;...转载 2018-04-19 18:06:00 · 628 阅读 · 0 评论 -
mysql编写数据库设计说明文档
-- 展示对应表的所有 列名,类型,和描述set @rownum=0;SELECT @rownum:=@rownum+1 AS rownum , COLUMN_NAME AS 列名, (CASE WHEN IS_NULLABLE = 'YES' THEN '是' ELSE '否' END) AS 是否为空, COLUMN_COMMENT AS 列的描述, COLUMN_TYPE AS ...原创 2018-07-10 10:39:25 · 5092 阅读 · 0 评论 -
关于mysql查询时间范围的问题
时间格式如上图。但是前端传入的参数确是 YYYY-MM-DD 的 没有带时分秒。如果按照下面这两种方式会查不全select * from test where create_time between '2018-07-30' and '2018-07-31';select * from test where create_time >= '2018-07-30' and ...原创 2018-08-02 12:02:48 · 54493 阅读 · 5 评论 -
mysql 使用别名进行删除操作
单表删除DELETE t from table2 t where t.id = "ff3a59cd-c109-4422-bfb6-6b0e33357943";多表关联删除两种写法一:DELETE t from table t INNER JOIN table2 t2 on t.id =t2.id where t2.name="张三";二:DELETE原创 2017-06-17 14:36:33 · 796 阅读 · 0 评论 -
MySQL查看、创建和删除索引的方法
原文出自:http://www.jb51.net/article/73372.htm本文实例讲述了MySQL查看、创建和删除索引的方法。分享给大家供大家参考。具体如下:1.索引作用在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。例如,有转载 2017-05-20 15:42:21 · 599 阅读 · 0 评论 -
乐观锁和悲观锁
为什么需要锁(并发控制)?在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。典型的冲突有:l 丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户A把值从6改为2,用户B把值从2改为6,则用户A丢失了他的更新。l 脏读:当一个事务读取其它完成一半事务的记录时,就会发生脏读取。例如:用户A,B看到的值都是6,用转载 2016-03-21 12:49:47 · 421 阅读 · 0 评论 -
对同一个表中不同的字段进行升序降序的操作sql中排序的误区
一般初学者的误区:select * from student order by createtime, updatetime DESC;所有指定的字段都以最后一个字段排序。实际上:mysql中默认情况无排序,按照输入的先后排列。(也就是ID升序)select * from student order by createtime, updatetim...原创 2016-04-13 21:53:56 · 2831 阅读 · 0 评论 -
Mysql按字段分组取最大值记录
要求:获得按table1_id分组,并且age最大的记录信息,即2、3、5条方法一:select * from (select * from table2 order by age desc) as a group by a.table1_id方法二:select a.* from table2 as a where age = (select max(age) from table2 where...转载 2016-08-16 11:43:34 · 14411 阅读 · 12 评论 -
SQL针对单列删除重复数据只保留一条id最大的数据
delete from t_student where id in ( SELECT id from (SELECT * from t_student where name in (select name from t_student where name is NOT NULL group by name having count(name) > 1) a原创 2016-10-11 13:26:31 · 3712 阅读 · 0 评论 -
mysql 删除表中的列
-- 创建列ALTER TABLE '表名' ADD '列名' char(2) default '默认值 可以不写' COMMENT '描述';-- 删除创建的列 ALTER TABLE '表名' drop column '列名';原创 2016-11-07 15:22:52 · 809 阅读 · 0 评论 -
msql 日期查询
select * from t_student where DATEDIFF(NOW(),create_time) = 0 当天的记录 DATEDIFF(NOW(),create_time) = 0+ N ; N 每增加一则日期减一天。转载 2016-10-19 10:52:17 · 296 阅读 · 0 评论 -
mysql 的常用的时间函数
CREATE TABLE `t_student` ( `id` varchar(32) NOT NULL COMMENT 'id', `name` varchar(32) DEFAULT NULL COMMENT 'name`', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` d原创 2016-12-08 13:18:25 · 324 阅读 · 0 评论 -
MySQL 查询结果按in集合顺序显示
参考原文:http://www.jb51.net/article/25639.htm在实现翻页功能时,我们通常先获取对应页码数据的 id值然后通过 in 去获取具体参数信息因为in 在查询的时候是按照记录的id来升序排序的,导致经常数据的顺序不对。这样的话有时候,需要二次排序。 select * from table where id IN (3,6,9,1,2,5,8转载 2017-05-11 11:12:25 · 1281 阅读 · 0 评论 -
关于mybatis只能查询英文,不能查询中文的问题!!!
我也遇到这个问题了,不过根本原因是我请求是用get方式,这种方式将中文带在地址中,中文和空格等都就会被重新转码,如%E7%BC%96%E8,所以我用post方式将数据放到body就不会有这 问题了,同时jdbc.url=添加 “?useUnicode=true&characterEncoding=utf8” 下面这种情况就是导致mybatis英文查询可以 中文查询失败的原因转载 2017-04-11 10:37:32 · 1358 阅读 · 0 评论 -
sql分页全部有 分页后查不到
今天又碰到一个有意思的问题跟大家分享一下。 我使用的是hibernate框架SELECT * from test ORDER BY createtime desc将数据分析了一遍,发现一个问题列表中需要根据时间来排序desc降序根据这个现象作出了解释,当你按照时间排序时(有很多时间一样的数据存在)就会出现这种问题。在数据库中不会提现出来,当你使用了hql来根据分页查原创 2016-01-11 18:26:29 · 774 阅读 · 0 评论