卿¥å¸¸å¼åä¸ï¼æä»¬ç»å¸¸ä¼åç°ï¼Mysqlä¸ä¸äºé»è¾ä¸ä¸æ ·çsql,å¾å¾æ§è½å·®å¼å¾å¤§ï¼è³äºä¸ºä»ä¹ä¼åçè¿æ ·çé®é¢ï¼ä»å¤©æä»¬å°±ççå 个常è§çæ¡ä¾
æ¡ä¾ä¸:æ¡ä»¶åæ®µå½æ°æä½
å设æä»¬æä¸å¼ 表å¦ä¸å»ºè¡¨è¯å¥
mysql> CREATE TABLE `tradelog` (
`id` int(11) NOT NULL,
`tradeid` varchar(32) DEFAULT NULL,
`operator` int(11) DEFAULT NULL,
`t_modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `tradeid` (`tradeid`),
KEY `t_modified` (`t_modified`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
å¤å¶
ç°å¨æä»¬ç鿱就æ¯è·å年份ä¸7æä»½çæ°æ®ï¼é»è¾ä¸å¹¶ä¸å¤æï¼æä»¬ä¹åæ³å¾å¿«æ³å°ä¸é¢è¯å¥
select count(*) from tradelog where month(t_modified)=7
å¤å¶
使¯æä»¬åç°å¨æ°æ®éå¤§çæ¶åï¼è¿æ¡è¯å¥è¿åçæ¶é´é常é¿ï¼ä½æ¯æä»¬ç确建ç«äºt_modifiedçç´¢å¼ï¼ä¸ºä»ä¹è¿æ¯è¿ä¹æ ¢å¢
æ¤æ¶æä»¬å¯ä»¥ççt_modifiedçç´¢å¼æ ï¼å¦ä¸å¾

ä¸é¢çæ°åæ¯å½æ°è®¡ç®çå¼ï¼æ¤æ¶æä»¬åç°ï¼å¦ææä»¬ä½¿ç¨ä¸é¢è¯å¥ä¼å¿«éçæ ¹æ®ä¸å¾ç绿è²ç®å¤´æ¾å°å¯¹åºçå¼
select * from tradelog where t_modified='2018-7-1'
å¤å¶
å®é ä¸ï¼B+æ æä¾äºå¿«éå®ä½çè½åï¼æ¥æºäºåä¸å±èç¹çæåºæ§ã
使¯ï¼å¦æè®¡ç®month()彿°çè¯ï¼ä½ ä¼çå°ä¼ å ¥7çæ¶åï¼å¨æ ç第ä¸å±å°±ä¸ç¥é该æä¹åäº,ä¹å°±æ¯è¯´ï¼å¯¹ç´¢å¼å彿°æä½ï¼ä¼ç ´åç´¢å¼å¼çæåºæ§ï¼å æ¤ä¼åå¨å°±å³å®æ¾å¼èµ°æ çæç´¢ã
ä½äºå®ä¸ï¼ä¼åå¨å¹¶æ²¡ææ¾å¼ä½¿ç¨ç´¢å¼ï¼ä½æ¯ä¼åå¨å¯ä»¥éåç´¢å¼ï¼å¯ä»¥éæ©ä¸»é®ç´¢å¼åt_modifiedåæ®µç´¢å¼ï¼ä¼åå¨åç°t_modifiedç´¢å¼æ æ¯è¾å°ï¼æç»è¿æ¯éæ©äºå段索å¼ï¼
å¯ä»¥çå°extraç弿¯Using index,说æä½¿ç¨äºè¦çç´¢å¼ãè½ç¶ä½¿ç¨äºç´¢å¼ï¼ä½æ¯ä¹æ¯å ¨ç´¢å¼æ«æã
æ¤æ¶æä»¬å¯ä»¥ä½¿ç¨ä¸é¢è¯å¥ï¼å®ç°æä»¬éè¦çç»æï¼ä¸é¢è¯å¥ä¹ç¨ä¸äºç´¢å¼çå¿«éå®ä½è½åï¼ä½æ¯æ¯è¾ç¹ç
mysql> select count(*) from tradelog where
-> (t_modified >= '2016-7-1' and t_modified<'2016-8-1') or
-> (t_modified >= '2017-7-1' and t_modified<'2017-8-1') or
-> (t_modified >= '2018-7-1' and t_modified<'2018-8-1');
å¤å¶
æ»ç»:åç°å¦ææä»¬å¯¹å段使ç¨å½æ°ï¼ä¼ç ´åç´¢å¼çæåºæ§ï¼æ¯æ æ³ä½¿ç¨ç´¢å¼å¿«éå®ä½çåè½ï¼èåªè½å ¨ç´¢å¼æ«æï¼éè¦æ³¨æçæ¯ï¼å½æ°æ²¡æç ´åç´¢å¼çæåºæ§ï¼ä¼åå¨ä¹ä¸ä¼èè使ç¨ç´¢å¼çå¿«éå®ä½è½åçï¼
æ¡ä¾äºï¼éå¼ç±»å转æ¢
æä»¬å ççä¸é¢è¯å¥
mysql> select * from tradelog where tradeid=110717;
å¤å¶
æä»¬åç°ä¸é¢è½ç¶æä»¬çtradeidæç´¢å¼ï¼ä½æ¯ä»è¿æ¯ä¼èµ°å ¨è¡¨æ«æï¼è¿ä¸ªåæ¯ä¸ºä»ä¹å¢ï¼
å ¶å®æä»¬åç°tradeidä»çç±»åæ¯varchar(32),èè¾å ¥çåæ°å¼ç¡®å®int,ç´¢å¼è¦åç±»å转æ¢ãå¨mysqlä¸ï¼åç¬¦ä¸²åæ°å忝è¾çè¯ï¼æ¯å°åç¬¦ä¸²è½¬æ¢ææ°å.
ä¸é¢çè¯å¥å®é ä¸å¨ä¼åå¨éé¢å°±å¦ä¸é¢è¯å¥
mysql> select * from tradelog where CAST(tradid AS signed int) = 110717;
å¤å¶
ä»ä¸ä¸ä¸ªæ¡ä¾æä»¬ç¥é使ç¨äºå½æ°æ¯ä¸ä¼èµ°ç´¢å¼çï¼ä¼åå¨ä¼æ¾å¼ç´¢å¼çå¿«éå®ä½è½åã
æ¡ä¾ä¸:éå¼å符ç¼ç 转æ¢
æä»¬å»ºç«ä¸é¢è¡¨ï¼ä¸æå ¥ä¸äºæ°æ®
mysql> CREATE TABLE `trade_detail` (
`id` int(11) NOT NULL,
`tradeid` varchar(32) DEFAULT NULL,
`trade_step` int(11) DEFAULT NULL, /*æä½æ¥éª¤*/
`step_info` varchar(32) DEFAULT NULL, /*æ¥éª¤ä¿¡æ¯*/
PRIMARY KEY (`id`),
KEY `tradeid` (`tradeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into tradelog values(1, 'aaaaaaaa', 1000, now());
insert into tradelog values(2, 'aaaaaaab', 1000, now());
insert into tradelog values(3, 'aaaaaaac', 1000, now());
insert into trade_detail values(1, 'aaaaaaaa', 1, 'add');
insert into trade_detail values(2, 'aaaaaaaa', 2, 'update');
insert into trade_detail values(3, 'aaaaaaaa', 3, 'commit');
insert into trade_detail values(4, 'aaaaaaab', 1, 'add');
insert into trade_detail values(5, 'aaaaaaab', 2, 'update');
insert into trade_detail values(6, 'aaaaaaab', 3, 'update again');
insert into trade_detail values(7, 'aaaaaaab', 4, 'commit');
insert into trade_detail values(8, 'aaaaaaac', 1, 'add');
insert into trade_detail values(9, 'aaaaaaac', 2, 'update');
insert into trade_detail values(10, 'aaaaaaac', 3, 'update again');
insert into trade_detail values(11, 'aaaaaaac', 4, 'commit');
å¤å¶
æä»¬å¨æ§è¡ä¸é¢æåè¯å¥
mysql> select d.* from tradelog l, trade_detail d where d.tradeid=l.tradeid and l.id=2; /*è¯å¥Q1*/
å¤å¶
ççæ¯å¦ä½¿ç¨äºç´¢å¼
æä»¬åç°ç¬¬ä¸è¡ä½¿ç¨ç´¢å¼ï¼è¿ä¸ªç´¢å¼æ¯å»ºç«å¨ä¸»é®ç´¢å¼ä¸çï¼å¹¶ä¸æ«æäºä¸è¡ï¼ä½æ¯ç¬¬äºè¡ï¼æä»¬åç°æ²¡æä½¿ç¨ç´¢å¼ï¼è¿è¡äºå ¨è¡¨æ«æã
å¨è¿ä¸ªæ§è¡è®¡åä¸ï¼æ¯ä»tradelog表ä¸åtradeidåæ®µï¼å¨å°trade_detail表æ¥è¯¢å¹é åæ®µï¼å æ¤æä»¬ç§°tradeLogå«é©±å¨è¡¨ï¼ètrade_detail为被驱å¨è¡¨.ætradeidç§°ä¸ºå ³èåæ®µ
ä»çå ·ä½æ§è¡æ¥éª¤å¦ä¸
- æ ¹æ®idå¨tradelog表æ¾å°ä¸è¡
- è·åå°tradeidåæ®µçå¼
- 卿 ¹æ®tradeidçå¼å°trade_detail表ä¸å¹é 符åçè¡ï¼èå¨explainä¸ç¬¬äºè¡æä»¬åç°key=null,è¯´ææ¯æç §éå主é®ç´¢å¼çæ¹å¼ï¼ä¸ä¸ªä¸ªå¤ætradeidç弿¯å¦ç¬¦å
æ£å¸¸æç §æä»¬ççè§£ï¼ç¬¬äºè¡çtradeidå®ä¹æ¯æç´¢å¼çï¼åºè¯¥ä¹æ¯ä½¿ç¨ç´¢å¼æå¯¹ï¼ä¸ºä»ä¹æ²¡æä½¿ç¨ç´¢å¼ç
å ¶å®ç¬¬ä¸æ¥ï¼ç¸å½æ¯ä¸é¢è¯å¥
mysql> select * from trade_detail where tradeid=$L2.tradeid.value;
å¤å¶
å ¶ä¸ï¼$L2.tradeid.valueçåç¬¦éæ¯utf8mb4ã
æ¤æ¶æä»¬å¯ä»¥æ³å°å符éuft8mb4æ¯uft8çè¶ éï¼ç´¢å¼å½ä¸¤ä¸ªå段æ¯è¾çæ¶åï¼ä¼æutf8è£ æutf8mb4å符éï¼å忝è¾.
å æ¤å¨æ§è¡ä¸é¢è¿ä¸ªè¯å¥çæ¶åï¼éè¦è¢«é©±å¨è¡¨çåæ®µä¸ä¸ªä¸ªè½¬æ¢æuft8mb4,å廿¯è¾ã
select * from trade_detail where CONVERT(traideid USING utf8mb4)=$L2.tradeid.value;
å¤å¶
æ¤æ¶æä»¬ç¥éï¼å¦æå段使ç¨äºå½æ°ï¼å°ä¸ä¼ä½¿ç¨ç´¢å¼å¿«éå®ä½è½åï¼è¿éæä»¬å°±æç½äºï¼ä¸ºä»ä¹è¢«é©±å¨è¡¨ä¼å ¨è¡¨æ«æ
ä½ä¸ºå¯¹æ¯æä»¬å¯ä»¥ä¸é¢è¯å¥ççææ
mysql>select l.operator from tradelog l , trade_detail d where d.tradeid=l.tradeid and d.id=4;
å¤å¶
æä»¬åç°ä¸ºä»ä¹æ§è¡è®¡åéé¢ç第äºå¥ä½¿ç¨äºç´¢å¼å¢ï¼æä»¬æ¥åæä¸ä¸
ä¾ç¶åä¸é¢åæç䏿 ·ï¼æä»¬çå°ä¸é¢è¯å¥
select operator from tradelog where traideid =$R4.tradeid.value;
å¤å¶
ç¶åæä»¬åç°$R4.tradeid.valueçåç¬¦éæ¯utf8ï¼æ¤æ¶mysql伿è¿ä¸ªå符转æutf8mb4ï¼å æ¤åæäºä¸é¢è¯å¥
select operator from tradelog where traideid =CONVERT($R4.tradeid.value USING utf8mb4);
å¤å¶
è¿éçå°æä»¬ä½¿ç¨ç彿°å¨ä½¿ç¨å¨äºåæ°ä¸ï¼å æ¤æ¤æ¶æ¯å¯ä»¥ä½¿ç¨traideidç´¢å¼ã
说å°äºè¿éï¼æä»¬ççå¦ä½å¯¹æä»¬å¼å§çsqlè¿è¡ä¼åï¼ä¸¤ç§æ¹æ¡
- ç´æ¥æè¢«é©±å¨è¡¨çtradeidçåæ®µåç¬¦æ¹æuft8mb4
alter table trade_detail modify tradeid varchar(32) CHARACTER SET utf8mb4 default null 2.
å¤å¶
- å¦ææ°æ®éæ¯è¾å¤§ç,å¯ä»¥ä½¿ç¨ä¸é¢è¯å¥ï¼ä¸»å¨å¨é©±å¨è¡¨è½¬æutf8
mysql> select d.* from tradelog l , trade_detail d where d.tradeid=CONVERT(l.tradeid USING utf8) and l.id=2;
å¤å¶
æ»ç»:ä¸é¢ä¸ä¸ªæ¡ä¾å ¶å®æ¯ä¸ä»¶äºï¼å°±æ¯å¯¹ç´¢å¼åæ®µå½æ°æä½ï¼å¯è½ä¼ç ´åç´¢å¼å¼çæåºæ§ï¼å æ¤ä¼åå¨å°±å³å®æ¾å¼èµ°æ æç´¢è½å.