mysql
foxytale
dftba=don't froget to be awesome
展开
-
mysql的yearweek()函数转换与逆转换。
在sql开发中,经常会有按周进行group by,在将date处理成周时,mysql提供了很多方便的函数,例如week(),yearweek()等。其中yearweek()是包含年份的week()函数,能更方便的进行聚合。这次就提供一种对该函数的逆转换方法。SELECT CURDATE(),yearweek(curdate()),weekday(curdate()),原创 2015-07-29 10:27:26 · 5110 阅读 · 0 评论 -
mysql数据库使用trigger更新中间表
一些count类的查询,在很频繁时,一般不直接使用原表,二是使用trigger更新到中间表上,直接使用中间表获得查询结果。以下是我写的一个例子。只有insert与update操作。测试表与trigger创建,mid_test中sumflag的值为base_table中isflag大于0的值mysql> create table base_test(id int auto_inc原创 2015-12-05 19:44:05 · 1118 阅读 · 0 评论 -
间隙锁(gap lock)个人实验(一)
我们都知道间隙锁会锁掉操作表上,可能被修改的数据。那如果修改时,使用了子查询,子查询上的数据该如何上锁呢。以下是实验的表结构与索引结构mysql> desc otb;+-------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+原创 2015-09-16 19:44:16 · 888 阅读 · 0 评论 -
mysql的procedure错误回滚问题
先科普一点知识:mysql在一个事物中发生错误时,是不会回滚整个事物的。我们先证明这点mysql> desc wzy;+-------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+---------+------+-原创 2015-09-12 17:07:49 · 1739 阅读 · 0 评论 -
关于mysql的procedure的一些细节
今天在开发procedure时遇到些磕绊,感觉与其说是语法,不如说是潜规则.案例1:在开发一个使用cursor的过程时,遇到1337 - Variable or condition declaration after cursor or handler declaration,但是我实际上已经定义了的顺序是如下.……DECLARE topic INT(11);DECLARE cur原创 2015-08-22 13:29:17 · 836 阅读 · 0 评论 -
mysql的insert on duplicate与replace into的一些研究
mysql的innodb引擎是以主键为聚集索引的表结构,在日常的开发运维中经常会遇到duolicate key(重复主键)的报错为了避免这一问题,mysql提供了replace into与insert into onduplicate的语法,但这两个语法在实现上是不同的实验如下:mysql> show create table wzy;+-------+--------------原创 2015-08-21 15:04:46 · 789 阅读 · 0 评论 -
mysql中varchar(N)中的N代表什么
据说是面试题中很经典的一道,在这里做一个实验说明一下。CREATE TABLE `wzy` ( `ColUTF` varchar(5) CHARACTER SET utf8 DEFAULT NULL, `ColGBK` varchar(5) CHARACTER SET gbk DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1原创 2015-08-28 19:05:24 · 2699 阅读 · 0 评论 -
mysql的event坑
检查sql语法检查时间日期以上都可以在information_schema.event中看到除此之外,还可以用show create event event_name来查看注意,一定要开启global级的event_schedulershow global variables like '%event_sch%';原创 2015-08-13 16:53:00 · 677 阅读 · 0 评论 -
关于timestamp与datetime的一些理解
以下是测试表的表结构mysql> show create table ttest;+-------+--------------------------------------------------------------------------------------------------------------------------------------------------原创 2015-08-12 19:14:04 · 537 阅读 · 0 评论 -
mysql中关于order by的一些小细节
order by我们都知道是用于排序的今天看到一些很奇妙的写法order by --idorder by null以前没见过这东西,老稀奇了。兴致来了,就做个实验研究一下mysql> explain select * from test1 ;+----+-------------+-------------+------+---------------+------+---原创 2015-08-25 19:38:26 · 428 阅读 · 0 评论 -
MYSQL的UNIQUE索引包含null值及验证
在oracle我们知道唯一索引是不记录null值的。在mysql中却不一样,mysql的唯一索引是记录null值的。以下摘录5.6手册中的话A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a原创 2015-07-30 13:36:20 · 2985 阅读 · 0 评论 -
关于show tables命令的一场探险
已下是操作记录,在此先说结论show tables命令更像是操作系统级的命令,通过找出所有.frm的文件,以确定该数据库中是否有该表。而至于.frm文件是否是表的结构文件,并不会去验证mysql> desc test;ERROR 1146 (42S02): Table 'wzy.test' doesn't exist[root@localhost bak]#原创 2015-08-11 19:25:12 · 4046 阅读 · 0 评论 -
关于lower_case_file_system与lower_case_table_names参数
lower_case_file_system是一个只读参数,无法被修改,这个参数是用来告诉你linux在当前平台下,是否对文件名大小写敏感。lower_case_table_names为0时为大小写敏感,为1时为大小写不敏感。当你在lower_case_table_names=0时创建了大小写混合的表,且开启了innodb_file_per_table,此时创建出该表的数据文件名也是大原创 2015-08-11 16:22:00 · 14502 阅读 · 0 评论 -
mysql下实现窗口分析函数
窗口分析函数在做数据分析时十分常用,但是mysql却不支持。不过我们可以通过sql的形式实现这个功能构造表数据create table rank_over(id int,subid int,curd timestamp);……insert into rank_over values(8,3,now());insert into rank_over values(9,2,原创 2016-08-30 11:41:54 · 4455 阅读 · 1 评论