
mysql
yytoo2
专业打杂
展开
-
update未走索引导致全表锁住
事件经过:前段时间, 自动化测试的小姐姐向我们开发人员反应, 由于我方经常debug导致锁表, 她们的用例经常失败.该问题出现的时机基本一致,通过show OPEN TABLES where In_use > 0;以及show processlist, 确定sql.但是奇怪的是这次的事故竟然是把整个表锁了, 而不是以往只是某条数据被锁住(开发和测试未单独分库, 调试时的某些数据偶尔会导致锁表情况).对sql进行分析后发现, 这条update后面的where竟然没有走索引!!!原因:我们使用原创 2020-07-24 18:54:22 · 2442 阅读 · 2 评论 -
mysql中汉字和长度的关系
mysql5.0以上mysql中, varchar(n)和char(n)表示n个字符, 不区分汉字和英文, 也就是说char(1)能存入1个英文字符, 也能存入1个汉字, 而不是1/3个或者1/2个汉字;但是实际上存入n个汉字和存入n个英文所占用的字节是有区别的,对于开发者来说, 并不用关注字节数,mysql 屏蔽了具体的存储细节,而直接以实际字符的个数来决定char存储的个数....原创 2019-10-14 19:45:05 · 4383 阅读 · 0 评论 -
mysql concat注意事项
mysql中使用concat函数拼接信息是比较实用的方式, 返回结果为连接参数产生的字符串,使用逗号分隔参数: CONCAT(str1,str2,…) 但是需要注意两点:1. 如有任何一个参数为NULL ,则返回值为 NULL。解决方法: 使用IFNULL函数对null的数据赋默认值: CONCAT(id , IFNULL(name, '')) ...原创 2018-06-21 14:21:55 · 1078 阅读 · 0 评论 -
MYSQL查询一个月内的记录(按表中某个记录时间戳的字段)
假如有表demo,表内有字段:id,name,created_date. created_date字段记录了每条记录插入的时间戳。假如要查询表中6月份的记录那么比较简单的方法是:SELECT * FROM demo WHERE DATE_FORMAT(FROM_UNIXTIME(demo.`created_date`),'%Y%m')=201806;这里是使用了DATE_FORMAT将时间戳变为...原创 2018-06-05 14:18:23 · 5326 阅读 · 1 评论 -
mysql存储过程如何跳出当前程序
DELIMITER $$USE `demo`$$DROP PROCEDURE IF EXISTS `demo1`$$CREATE DEFINER=`root`@`%` PROCEDURE `demo1`()leave_name:BEGINDECLARE t_error INT DEFAULT 0;DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET...原创 2018-05-28 15:49:34 · 4115 阅读 · 0 评论 -
group by按需求保留数据——mysql
在使用group by的时候,我们有时需要根据表中某个字段(学生选课——student.`class`)进行去重,但是我们要根据另一个字段(该字段也有可能是inner join关联过来的其它表的)选择去重后留下来的数据(保留同样选课中学号——student.`num`最大的学生信息)group by在选择显示的数据的时候是默认按照选择的字段(student.`class`)顺序排列的,我们可以原创 2017-09-04 13:58:51 · 4378 阅读 · 0 评论 -
mysql导入过大.sql文件报错处理
在使用SQLyog导入数据库时,出现了报错提示。查看后发现错误时由于导入时用的.sql文件过大导致的。首先查看了下.sql文件大小为360M,然后使用sql语句查询数据库最大支持的大小:SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet';随后根据需求对该值进行修改:SET GLOBAL max_allowed_packet=1024*原创 2017-11-17 11:54:40 · 6555 阅读 · 1 评论 -
sql语句查看数据库某个字段是否有重复的值
可以用group by和count结合找出具有重复值的项,然后用select具体查出重复的内容1. SELECT * FROM (SELECT cf.*, COUNT(*) counts FROM cf GROUP BY cf.phone) a WHERE a.counts>1;这条sql语句中的子查询,对数据库字段phone进行group by分组后,显示 不重复的信息和每个分组中含有原创 2017-10-24 10:03:03 · 15024 阅读 · 0 评论 -
myeclipse使用link文件安装插件——github为例
使用.link文件的方式为myeclipse安装插件可以便于插件的管理,且插件可放在myeclipse安装目录以外的地方这里以github插件为例:1. 下载部分首先查看当前myeclipse版本,我这边是myeclipse10 。且eclispe plantform版本为3.7.2.v20120207……所以在插件下载页面http://wiki.eclipse.org/EGit/原创 2017-09-07 10:37:47 · 424 阅读 · 0 评论 -
mysql下以标准时间格式输出存储的时间戳数据
SELECT FROM_UNIXTIME(1476427742); //‘1476427742’为在数据库中存储的时间戳显示结果为:from_unixtime(1476427742)2016-10-14 14:49:02也可以加入‘format’参数使用自己规定的方式显示,例如:SELECT FROM_UNIXTIME(1476427742,'%Y年%m月%d日');原创 2017-06-28 11:59:58 · 1278 阅读 · 0 评论 -
筛选固定长度的字符串并在其后添加字符
要用到两个函数,一个是length(column),一个是concat('str',column)length()长度函数的作用是计算column中各个字符长度;concat()的作用是连接两个字符串(此处记得把连接后的字符串赋值回去);例:UPDATE students SET NAME=CONCAT(NAME,'Y') WHERE LENGTH(NAME)='4';原创 2017-06-28 11:59:14 · 662 阅读 · 0 评论 -
mysql将日期时间转换为UNIX时间戳
有时会用到手动修改mysql中的日期,但是mysql中日期存储为UNIX时间戳格式,这时候需要先将日期改为UNIX时间戳进行存储,具体sql语句如下:SELECT UNIX_TIMESTAMP('2016-10-27 12:23:00');结果:1477542180也可以不填写具体时间SELECT UNIX_TIMESTAMP('2016-10-27');结果:14774976原创 2017-06-28 11:58:27 · 914 阅读 · 0 评论 -
mysql中的alter
首先添加字段:ALTER TABLE demo1 ADD member_id VARCHAR(20) DEFAULT 'tom'; 此处在表demo1中添加了字段member_id且数据类型为VARCHAR(20), VARCHAR为边长字符串,且预留空间为20个字符;同时设置了默认值‘tom’。ALTER TABLE demo1 MODIFY member_id VARCH原创 2017-06-28 11:57:57 · 274 阅读 · 0 评论 -
mysql中的join
inner join只显示满足on后面条件的的列select table1.column1, table2.column2 as renamefrom table1inner join table2on table1.column2=table2.column2;输出结果仅为满足table1.column2=table2.column2的table1.column1,和tabl原创 2017-06-28 11:57:19 · 454 阅读 · 0 评论 -
mysql中的select limit statement
如果不需要列出所有select查询结果,例如只想查看最新的一条记录或者前几条记录,这时候可以用limit仅列出我们想要的几条数据,具体语法如下:SELECT columnFROM table [where conditions] [ORDER BY column [ASC|DESC]] //order by是用来排序的,column就是具体按哪列排序(注1)LIMIT原创 2017-06-28 11:56:00 · 375 阅读 · 0 评论 -
mysql自动填写id
在使用数据库时我们经常要使作为主键的某列自动按顺序填写,比较常见的就是id字段,可以用一下语句实现id字段的自动填写:CREATE TABLE students ( id MEDIUMINT NOT NULL AUTO_INCREMENT, //设置id的类型为mediumint,且非空自增1并填写 name CHAR(30) NOT NULL, PRIM原创 2017-06-28 11:54:06 · 4193 阅读 · 0 评论