|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ç®å½ æ¬ç« éè¿æ¼ç¤ºå¦ä½ä½¿ç¨mysql客æ·ç¨åºåé å使ç¨ä¸ä¸ªç®åçæ°æ®åºï¼æä¾ä¸ä¸ªMySQLçå ¥é¨æç¨ãmysqlï¼ææ¶ç§°ä¸ºâç»ç«¯çè§å¨âæåªæ¯âçè§âï¼æ¯ä¸ä¸ªäº¤äºå¼ç¨åºï¼å è®¸ä½ è¿æ¥ä¸ä¸ªMySQLæå¡å¨ï¼è¿è¡æ¥è¯¢å¹¶å¯çç»æãmysqlå¯ä»¥ç¨äºæ¹æ¨¡å¼ï¼ä½ é¢å ææ¥è¯¢æ¾å¨ä¸ä¸ªæä»¶ä¸ï¼ç¶ååè¯mysqlæ§è¡æä»¶çå å®¹ãæ¬ç« å°ä»ç»ä½¿ç¨mysqlçä¸¤ä¸ªæ¹æ³ã è¦æ³æ¥çç±mysqlæä¾ç鿩项ç®è¡¨ï¼å¯ä»¥ç¨--helpé项æ¥è°ç¨ï¼ shell> mysql --help æ¬ç« åå®mysqlå·²ç»è¢«å®è£ å¨ä½ çæºå¨ä¸ï¼å¹¶ä¸æä¸ä¸ªMySQLæå¡å¨å¯ä»¥è¿æ¥ãå¦åï¼è¯·èç»MySQL管çåãï¼å¦æä½ æ¯ç®¡çåï¼åéè¦æ¥é æ¬æåçå ¶å®ç« èï¼ä¾å¦ç¬¬5ç« ï¼æ°æ®åºç®¡çãï¼ æ¬ç« æè¿°å»ºç«å使ç¨ä¸ä¸ªæ°æ®åºçå ¨è¿ç¨ãå¦æä½ ä» ä» å¯¹è®¿é®ä¸ä¸ªå·²ç»åå¨çæ°æ®åºæå ´è¶£ï¼å¯ä»¥è·³è¿æè¿°ææ ·åå»ºæ°æ®åºå宿å å«ç表çç« èã ç±äºæ¬ç« æ¯ä¸ä¸ªæç¨ï¼çç¥äºè®¸å¤ç»èãå ³äºè¿éææ¶åç主é¢ç详ç»ä¿¡æ¯ï¼è¯·æ¥é æ¬æåçç¸å ³ç« èã
为äºè¿æ¥æå¡å¨ï¼å½è°ç¨mysqlæ¶ï¼é常éè¦æä¾ä¸ä¸ªMySQLç¨æ·åå¹¶ä¸å¾å¯è½éè¦ä¸ä¸ª
å¯ç ã妿æå¡å¨è¿è¡å¨ç»å½æå¡å¨ä¹å¤çå
¶å®æºå¨ä¸ï¼è¿éè¦æå®ä¸»æºåãè系管çå以æ¾åºè¿è¡è¿æ¥æä½¿ç¨çåæ°
(å³ï¼è¿æ¥ç主æºãç¨æ·åå使ç¨çå¯ç )ãç¥éæ£ç¡®çåæ°åï¼å¯ä»¥æç
§ä»¥ä¸æ¹å¼è¿è¡è¿æ¥ï¼ shell> mysql -h host -u user -p Enter password: ******** hoståuseråå«ä»£è¡¨MySQLæå¡å¨è¿è¡ç主æºååMySQLè´¦æ·ç¨æ·åãè®¾ç½®æ¶æ¿æ¢ä¸ºæ£ç¡®çå¼ã******** ä»£è¡¨ä½ çå¯ç ï¼å½mysqlæ¾ç¤ºEnter password:æç¤ºæ¶è¾å ¥å®ã 妿ææï¼ä½ åºè¯¥çè§mysql>æç¤ºç¬¦åçä¸äºä»ç»ä¿¡æ¯ï¼ shell> mysql -h host -u user -p Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 25338 to server version: 5.1.2-alpha-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>mysql> æç¤ºç¬¦åè¯ä½ mysqlåå¤ä¸ºä½ è¾å ¥å½ä»¤ã ä¸äºMySQLå®è£ å è®¸ç¨æ·ä»¥å¿åï¼æªå½åï¼ç¨æ·è¿æ¥å°æ¬å°ä¸»æºä¸è¿è¡çæå¡å¨ãå¦æä½ çæºå¨æ¯è¿ç§æ åµï¼ä½ åºè¯¥è½ä¸å¸¦ä»»ä½é项å°è°ç¨mysqlä¸è¯¥æå¡å¨è¿æ¥ï¼ shell> mysql æåå°è¿æ¥åï¼å¯ä»¥å¨mysql>æç¤ºä¸è¾å ¥QUIT (æ\q)éæ¶éåºï¼ mysql> QUIT Byeå¨Unixä¸ï¼ä¹å¯ä»¥æcontrol-D鮿弿å¡å¨ã å¨ä¸åç« èç大夿°ä¾åé½åè®¾ä½ è¿æ¥å°äºæå¡å¨ãç±mysql>æç¤ºææã 3.2. è¾å ¥æ¥è¯¢ç¡®ä¿ä½ è¿æ¥ä¸äºæå¡å¨ï¼å¦å¨å åçç« è讨论çãè¿æ¥ä¸æå¡å¨å¹¶å¸ä»£è¡¨éæ©äºä»»ä½æ°æ®åºï¼ä½è¿æ ·å°±å¯ä»¥äºãç¥éå ³äºå¦ä½æ¥è¯¢çåºæ¬ç¥è¯ï¼æ¯é©¬ä¸è·³è³å建表ãç»ä»ä»¬è£ è½½æ°æ®å¹¶ä¸ä»ä»ä»¬æ£ç´¢æ°æ®æ´éè¦ãæ¬èæè¿°è¾å ¥å½ä»¤çåºæ¬ååï¼ä½¿ç¨å 个æ¥è¯¢ï¼ä½ è½å°è¯äºè§£mysqlæ¯å¦ä½å·¥ä½çã è¿æ¯ä¸ä¸ªç®åçå½ä»¤ï¼è¦æ±æå¡å¨åè¯å®ççæ¬å·åå½åæ¥æãå¨mysql>æç¤ºè¾å ¥å¦ä¸å½ä»¤å¹¶æå车é®ï¼ mysql> SELECT VERSION(), CURRENT_DATE; +-----------------+--------------+
| VERSION() | CURRENT_DATE |
+-----------------+--------------+
| 5.1.2-alpha-log | 2005-10-11 |
+-----------------+--------------+
1 row in set (0.01 sec)
mysql>è¿è¯¢é®è¯´æmysqlçå 个æ¹é¢: · ä¸ä¸ªå½ä»¤é常ç±SQLè¯å¥ç»æï¼éåè·çä¸ä¸ªåå·ãï¼æä¸äºä¾å¤ä¸éè¦åå·ãæ©å æå°çQUITæ¯ä¸ä¸ªä¾åãå颿们å°çå°å ¶å®çä¾åãï¼ Â· å½ååºä¸ä¸ªå½ä»¤æ¶ï¼mysqlå°å®åéç»æå¡å¨å¹¶æ¾ç¤ºæ§è¡ç»æï¼ç¶åæ¾ç¤ºå¦ä¸ä¸ªmysql>æ¾ç¤ºå®åå¤å¥½æ¥åå ¶å®å½ä»¤ã · mysqlç¨è¡¨æ ¼(è¡åå)æ¹å¼æ¾ç¤ºæ¥è¯¢è¾åºã第ä¸è¡å å«åçæ ç¾ï¼éåçè¡æ¯æ¥è¯¢ç»æãé常ï¼åæ ç¾æ¯ä½ åèªæ°æ®åºè¡¨çåçååãå¦æä½ æ£å¨æ£ç´¢ä¸ä¸ªè¡¨è¾¾å¼èé表åçå¼(å¦åæçä¾å)ï¼mysqlç¨è¡¨è¾¾å¼æ¬èº«æ è®°åã · mysqlæ¾ç¤ºè¿åäºå¤å°è¡ï¼ä»¥åæ¥è¯¢è±äºå¤é¿æ¶é´ï¼å®ç»ä½ æä¾æå¡å¨æ§è½çä¸ä¸ªå¤§è´æ¦å¿µãå 为ä»ä»¬è¡¨ç¤ºæ¶éæ¶é´(䏿¯ CPU ææºå¨æ¶é´)ï¼å¹¶ä¸å 为ä»ä»¬åå°è¯¸å¦æå¡å¨è´è½½åç½ç»å»¶æ¶çå½±åï¼å æ¤è¿äºå¼æ¯ä¸ç²¾ç¡®çãï¼ä¸ºäºç®æ´ï¼å¨æ¬ç« å ¶å®ä¾åä¸ä¸åæ¾ç¤ºâéåä¸çè¡âãï¼ è½å¤ä»¥å¤§å°åè¾å ¥å ³é®è¯ãä¸åæ¥è¯¢æ¯çä»·çï¼ mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE; è¿æ¯å¦å¤ä¸ä¸ªæ¥è¯¢ï¼å®è¯´æä½ è½å°mysqlç¨ä½ä¸ä¸ªç®åç计ç®å¨ï¼ mysql> SELECT SIN(PI()/4), (4+1)*5; +------------------+---------+
| SIN(PI()/4) | (4+1)*5 |
+------------------+---------+
| 0.70710678118655 | 25 |
+------------------+---------+
1 row in set (0.02 sec)è³æ¤æ¾ç¤ºçå½ä»¤æ¯ç¸å½ççåè¡è¯å¥ãä½ å¯ä»¥å¨ä¸è¡ä¸è¾å ¥å¤æ¡è¯å¥ï¼åªéè¦ä»¥ä¸ä¸ªåå·é´éå¼åè¯å¥ï¼ mysql> SELECT VERSION(); SELECT NOW(); +-----------------+
| VERSION() |
+-----------------+
| 5.1.2-alpha-log |
+-----------------+
1 row in set (0.00 sec)
+---------------------+
| NOW() |
+---------------------+
| 2005-10-11 15:15:00 |
+---------------------+
1 row in set (0.00 sec)ä¸å¿ å ¨å¨ä¸ä¸ªè¡å ç»åºä¸ä¸ªå½ä»¤ï¼è¾é¿å½ä»¤å¯ä»¥è¾å ¥å°å¤ä¸ªè¡ä¸ãmysqléè¿å¯»æ¾ç»æ¢åå·è䏿¯è¾å ¥è¡çç»ææ¥å³å®è¯å¥å¨åªå¿ç»æãï¼æ¢å¥è¯è¯´ï¼mysqlæ¥åèªç±æ ¼å¼çè¾å ¥ï¼å®æ¶éè¾å ¥è¡ä½ç´å°çè§åå·ææ§è¡ãï¼ è¿éæ¯ä¸ä¸ªç®åçå¤è¡è¯å¥çä¾åï¼ mysql> SELECT -> USER() -> , -> CURRENT_DATE; +---------------+--------------+
| USER() | CURRENT_DATE |
+---------------+--------------+
| jon@localhost | 2005-10-11 |
+---------------+--------------+å¨è¿ä¸ªä¾åä¸ï¼å¨è¾å ¥å¤è¡æ¥è¯¢ç第ä¸è¡åï¼è¦æ³¨ææç¤ºç¬¦å¦ä½ä»mysql>å为->ï¼è¿æ£æ¯mysqlå¦ä½æåºå®æ²¡è§å°å®æ´çè¯å¥å¹¶ä¸æ£å¨çå¾ å©ä½çé¨åãæç¤ºç¬¦æ¯ä½ çæåï¼å ä¸ºå®æä¾æä»·å¼çåé¦ï¼å¦æä½¿ç¨è¯¥åé¦ï¼å°æ»æ¯ç¥émysqlæ£å¨çå¾ ä»ä¹ã å¦æä½ å³å®ä¸æ³æ§è¡æ£å¨è¾å ¥è¿ç¨ä¸çä¸ä¸ªå½ä»¤ï¼è¾å ¥\cåæ¶å®ï¼ mysql> SELECT -> USER() -> \c mysql>è¿éä¹è¦æ³¨ææç¤ºç¬¦ï¼å¨ä½ è¾å ¥\c以åï¼å®åæ¢åå°mysql>ï¼æä¾åé¦ä»¥è¡¨æmysqlå夿¥åä¸ä¸ªæ°å½ä»¤ã ä¸è¡¨æ¾ç¤ºåºå¯ä»¥çè§çå个æç¤ºç¬¦å¹¶ç®è¿°å®ä»¬æè¡¨ç¤ºçmysqlçç¶æï¼
å½ä½ æç®å¨ä¸ä¸ªåè¡ä¸ååºä¸ä¸ªå½ä»¤æ¶ï¼é常ä¼âå¶ç¶âåºç°å¤è¡è¯å¥ï¼ä½æ¯æ²¡æç»æ¢åå·ãå¨è¿ç§æ åµä¸ï¼mysqlçå¾ è¿ä¸æ¥è¾å ¥ï¼ mysql> SELECT USER() ->妿åºç°è¿ç§æ åµ(ä½ è®¤ä¸ºè¾å®äºè¯å¥ï¼ä½æ¯åªæä¸ä¸ª->æç¤ºç¬¦ååº)ï¼å¾å¯è½mysqlæ£å¨çå¾ åå·ãå¦æä½ æ²¡ææ³¨æå°æç¤ºç¬¦çæç¤ºï¼å¨æè¯å°ä½ éè¦åä»ä¹ä¹åï¼ä½ å¯è½ä¼ååä¸ä¼å¿ãè¾å ¥ä¸ä¸ªåå·å®æè¯å¥ï¼mysqlå°æ§è¡ï¼ mysql> SELECT USER() -> ; +---------------+
| USER() |
+---------------+
| jon@localhost |
+---------------+å¨å符串æ¶éæé´å°åºç° '> å "> æç¤ºç¬¦ï¼æç¤ºMySQLæ£çå¾ å符串çç»æï¼ãå¨MySQLä¸ï¼å¯ä»¥åç±â'âæâ"âå符æ¬èµ·æ¥çå符串 (ä¾å¦ï¼'hello'æ"goodbye")ï¼å¹¶ä¸mysqlå 许è¾å ¥è·¨è¶å¤è¡çå符串ãå½çå°ä¸ä¸ª '> æ "> æç¤ºç¬¦æ¶ï¼è¿æå³çå·²ç»è¾å ¥äºå å«ä»¥â'âæâ"âæ¬å·å符å¼å§çå符串çä¸è¡ï¼ä½æ¯è¿æ²¡æè¾å ¥ç»æ¢å符串çå¹é å¼å·ãè¿æ¾ç¤ºä½ ç²å¿å°çæäºä¸ä¸ªå¼å·å符ãä¾å¦ï¼ mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30; '>å¦æä½ è¾å ¥SELECTè¯å¥ï¼ç¶åæEnterï¼å车ï¼é®å¹¶çå¾ ç»æï¼ä»ä¹é½æ²¡æåºç°ãä¸è¦æè®¶ï¼â为ä»ä¹è¯¥æ¥è¯¢è¿ä¹é¿å¢ï¼âï¼æ³¨æ">æç¤ºç¬¦æä¾ç线索ãå®åè¯ä½ mysqlææè§å°ä¸ä¸ªæªç»æ¢å符串çä½ä¸é¨åãï¼ä½ çè§è¯å¥ä¸çé误åï¼å符串"Smith丢æäºç¬¬äºä¸ªå¼å·ãï¼ èµ°å°è¿ä¸æ¥ï¼ä½ 该åä»ä¹ï¼æç®åçæ¯åæ¶å½ä»¤ãç¶èï¼å¨è¿ç§æ åµä¸ï¼ä½ ä¸è½åªæ¯è¾å ¥\cï¼å 为mysqlä½ä¸ºå®æ£å¨æ¶éçå符串çä¸é¨åæ¥è§£éå®ï¼ç¸åï¼åºè¾å ¥å ³éçå¼å·å符(è¿æ ·mysqlç¥éä½ å®æäºå符串)ï¼ç¶åè¾å ¥\cï¼ mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30; '> '\c mysql>æç¤ºç¬¦åå°mysql>ï¼æ¾ç¤ºmysqlåå¤å¥½æ¥åä¸ä¸ªæ°å½ä»¤äºã `> æç¤ºç¬¦ç±»ä¼¼äº '> å"> æç¤ºç¬¦ï¼ä½è¡¨ç¤ºä½ å·²ç»å¼å§ä½æ²¡æç»æä»¥`> å¼å§çè¯å«ç¬¦ã ç¥é'>å">æç¤ºç¬¦çå«ä¹å¾éè¦ï¼å ä¸ºå¦æä½ é误å°è¾å ¥ä¸ä¸ªæªç»æ¢çå符串ï¼ä»»ä½åé¢è¾å ¥çè¡å°è¦è¢«mysql忽ç¥--å æ¬å å«QUITçè¡ï¼è¿å¯è½ä»¤äººç¸å½å°æï¼ç¹å«æ¯å¦æåæ¶å½åå½ä»¤åè¿ä¸ç¥éä½ éè¦æä¾ç»æ¢å¼å·ã ç¥éææ ·è¾å ¥å½ä»¤ï¼ä¾¿å¯ä»¥è®¿é®æ°æ®åºäºã åå®å¨ä½ çå®¶(ä½ çâå¨ç©åâ)䏿å¾å¤å® ç©ï¼å¹¶ä¸ä½ æ³è·è¸ªå ³äºå®ä»¬åç§ç±»åçä¿¡æ¯ãä½ å¯ä»¥éè¿å建表æ¥ä¿åä½ çæ°æ®å¹¶æ ¹æ®æéè¦çä¿¡æ¯è£ è½½ä»ä»¬ï¼ç¶åä½ å¯ä»¥ä»è¡¨ä¸æ£ç´¢æ°æ®æ¥åçå ³äºå¨ç©ä¸åç§ç±»çé®é¢ãæ¬èæ¾ç¤ºå¦ä½åå°ææè¿äºäºæ ï¼ Â· åå»ºæ°æ®åº · åå»ºæ°æ®åºè¡¨ · è£ è½½æ°æ®å°æ°æ®åºè¡¨ · 以åç§æ¹æ³ä»è¡¨ä¸æ£ç´¢æ°æ® · 使ç¨å¤ä¸ªè¡¨ å¨ç©åæ°æ®åºå¾ç®å(ç¹æç)ï¼ä½æ¯ä¸é¾æå®æ³è±¡æå¯è½ç¨å°ç±»ä¼¼æ°æ®åºççå®ä¸çæ åµãä¾å¦ï¼å夫å¯ä»¥ä½¿ç¨è¿æ ·çä¸ä¸ªæ°æ®åºæ¥è¿½è¸ªå®¶çï¼æè å ½å»å¯ä»¥ç¨å®è·è¸ªç çè®°å½ãä»MySQLç½åä¸å¯ä»¥è·å¾åé¢ç« èä¸å°ç¨å°ç嫿é¨åæ¥è¯¢åæ ·ä¾æ°æ®çå¨ç©åååãætaråç¼©æ ¼å¼ (http://downloads.mysql.com/docs/menagerie-db.tar.gz)åZipåç¼©æ ¼å¼ (http://downloads.mysql.com/docs/menagerie-db.zip)ã 使ç¨SHOWè¯å¥æ¾åºæå¡å¨ä¸å½ååå¨ä»ä¹æ°æ®åºï¼ mysql> SHOW DATABASES; +----------+
| Database |
+----------+
| mysql |
| test |
| tmp |
+----------+å¯è½ä½ çæºå¨ä¸çæ°æ®åºå表æ¯ä¸åçï¼ä½æ¯å¾å¯è½æmysqlåtestæ°æ®åºãmysqlæ¯å¿ éçï¼å ä¸ºå®æè¿°ç¨æ·è®¿é®æéï¼testæ°æ®åºç»å¸¸ä½ä¸ºç¨æ·è¯èº«æçå·¥ä½åºã 请注æå¦ææ²¡æSHOW DATABASESæéï¼åä¸è½çè§æææ°æ®åºãåè§13.5.1.3èï¼âGRANTåREVOKEè¯æ³âã 妿testæ°æ®åºåå¨ï¼å°è¯è®¿é®å®ï¼ mysql> USE test Database changed注æï¼USEï¼ç±»ä¼¼QUITï¼ä¸éè¦ä¸ä¸ªåå·ãï¼å¦æä½ 忬¢ï¼ä½ å¯ä»¥ç¨ä¸ä¸ªåå·ç»æ¢è¿æ ·çè¯å¥ï¼è¿æ ç¢ï¼USEè¯å¥å¨ä½¿ç¨ä¸ä¹æå¦å¤ä¸ä¸ªç¹æ®çå°æ¹ï¼å®å¿ é¡»å¨ä¸ä¸ªåè¡ä¸ç»åºã ä½ å¯åå¨åé¢çä¾åä¸ä½¿ç¨testæ°æ®åº(å¦æä½ è½è®¿é®å®)ï¼ä½æ¯ä½ å¨è¯¥æ°æ®åºå建çä»»ä½ä¸è¥¿å¯ä»¥è¢«è®¿é®å®çå ¶å®äººå é¤ï¼å æ¤ï¼ä½ åºè¯¥è¯¢é®MySQL管çå许å¯ä½ 使ç¨èªå·±çä¸ä¸ªæ°æ®åºãåå®ä½ æ³è¦è°ç¨ä½ çmenagerieï¼ç®¡çåéè¦æ§è¡è¿æ ·ä¸æ¡å½ä»¤ï¼ mysql> GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host'; è¿éyour_mysql_nameæ¯åé ç»ä½ çMySQLç¨æ·åï¼your_client_hostæ¯æè¿æ¥çæå¡å¨æå¨ç主æºã
å¦æç®¡çåå¨è®¾ç½®æéæ¶ä¸ºä½ åå»ºäºæ°æ®åºï¼ä½ å¯ä»¥å¼å§ä½¿ç¨å®ãå¦åï¼ä½ éè¦èªå·±åå»ºæ°æ®åºï¼ mysql> CREATE DATABASE menagerie; å¨Unixä¸ï¼æ°æ®åºåç§°æ¯åºå大å°åç(ä¸åSQLå ³é®å)ï¼å æ¤ä½ å¿ é¡»æ»æ¯ä»¥menagerieè®¿é®æ°æ®åºï¼èä¸è½ç¨MenagerieãMENAGERIEæå ¶å®ä¸äºåéã对表å乿¯è¿æ ·çãï¼å¨Windowsä¸ï¼è¯¥éå¶ä¸éç¨ï¼å°½ç®¡ä½ å¿ é¡»å¨ä¸ä¸ªç»å®çæ¥è¯¢ä¸ä½¿ç¨åæ ·ç大å°åæ¥å¼ç¨æ°æ®åºå表ã使¯ï¼ç±äºå¤ç§åå ï¼ä½ä¸ºæå¥½çæ¯ä¾ï¼ä¸å®è¦ä½¿ç¨ä¸æ°æ®åºå建æ¶çåæ ·ç大å°åãï¼ åå»ºæ°æ®åºå¹¶ä¸è¡¨ç¤ºéå®å¹¶ä½¿ç¨å®ï¼ä½ å¿ é¡»æç¡®å°æä½ã为äºä½¿menagerieæä¸ºå½åçæ°æ®åºï¼ä½¿ç¨è¿ä¸ªå½ä»¤ï¼ mysql> USE menagerie Database changedæ°æ®åºåªéè¦åå»ºä¸æ¬¡ï¼ä½æ¯å¿ 须卿¯æ¬¡å¯å¨mysqlä¼è¯æ¶å¨ä½¿ç¨åå éæ©å®ãä½ å¯ä»¥æ ¹æ®ä¸é¢çä¾åæ§è¡ä¸ä¸ªUSEè¯å¥æ¥å®ç°ãè¿å¯ä»¥å¨è°ç¨mysqlæ¶ï¼éè¿å½ä»¤è¡éæ©æ°æ®åºï¼åªéè¦å¨æä¾è¿æ¥åæ°ä¹åæå®æ°æ®åºåç§°ãä¾å¦ï¼ shell> mysql -h host -u user -p menagerie Enter password: ******** 注æï¼åææ¾ç¤ºçå½ä»¤è¡ä¸çmenagerie䏿¯ä½ ç å¯ç ãå¦æä½ æ³è¦å¨å½ä»¤è¡ä¸å¨-pé项åæä¾ å¯ç ï¼åä¸è½æå ¥ç©ºæ ¼(ä¾å¦ï¼å¦-pmypasswordï¼ä¸æ¯-p mypassword)ã使¯ï¼ä¸å»ºè®®å¨å½ä»¤è¡è¾å ¥å¯ç ï¼å ä¸ºè¿æ ·ä¼æ´é² å¯ç ï¼è½è¢«å¨æºå¨ä¸ç»å½çå ¶å®ç¨æ·çª¥æ¢å°ã 3.3.2. å建表åå»ºæ°æ®åºæ¯å¾å®¹æçé¨åï¼ä½æ¯å¨è¿æ¶å®æ¯ç©ºçï¼æ£å¦SHOW TABLESå°åè¯ä½ çï¼ mysql> SHOW TABLES; Empty set (0.00 sec)è¾é¾çé¨åæ¯å³å®ä½ çæ°æ®åºç»æåºè¯¥æ¯ä»ä¹ï¼ä½ éè¦ä»ä¹æ°æ®åºè¡¨ï¼åæ°æ®åºè¡¨ä¸æä»ä¹æ ·çåã ä½ å°éè¦ä¸ä¸ªå å«ä½ æ¯ä¸ªå® ç©çè®°å½ç表ãå®å¯ç§°ä¸ºpet表ï¼å¹¶ä¸å®åºè¯¥å å«ï¼æå°ï¼æ¯ä¸ªå¨ç©çååãå 为ååæ¬èº«ä¸æ¯å¾æè¶£ï¼è¡¨åºè¯¥å å«å¦å¤çä¿¡æ¯ãä¾å¦ï¼å¦æå¨ä½ è±¢å »å® ç©çå®¶åºæè¶ è¿ä¸ä¸ªäººï¼ä½ å¯è½æ³è¦ååºæ¯ä¸ªå¨ç©ç主人ãä½ å¯è½ä¹æ³è¦è®°å½ä¾å¦ç§ç±»åæ§å«çä¸äºåºæ¬çæè¿°ä¿¡æ¯ã å¹´é¾å¢ï¼é£å¯è½æè¶£ï¼ä½æ¯åå¨å°ä¸ä¸ªæ°æ®åºä¸ä¸æ¯ä¸ä»¶å¥½äºæ ãå¹´é¾éçæ¶é´æµéèååï¼è¿æå³çä½ å°è¦ä¸æå°æ´æ°ä½ çè®°å½ãç¸å, åå¨ä¸ä¸ªåºå®å¼ä¾å¦çæ¥æ¯è¾å¥½ï¼é£ä¹ï¼æ è®ºä½æ¶ä½ éè¦å¹´é¾ï¼å¯ä»¥ä»¥å½åæ¥æååºçæ¥æä¹é´çå·®æ¥è®¡ç®å®ãMySQLæä¾äºæ¥æè¿ç®å½æ°ï¼å æ¤è¿å¹¶ä¸å°é¾ãåå¨åºçæ¥æèéå¹´é¾è¿æå ¶å®ä¼ç¹ï¼ · ä½ å¯ä»¥ä½¿ç¨æ°æ®åºå®æè¿æ ·çä»»å¡ï¼ä¾å¦çæå³å°å°æ¥çå® ç©çæ¥çæç¤ºãï¼å¦æä½ 认为è¿ç±»æ¥è¯¢æç¹è ¢ï¼æ³¨æï¼è¿ä¸ä»å塿°æ®åºæ¥è¯å«åºä¸ä¹ è¦åç»çæ¥ç¥è´ºçå®¢æ·æ¯åä¸ä¸ªé®é¢ï¼å ä¸ºè®¡ç®æºå¸®å©ç§äººèç»ãï¼ Â· ä½ å¯ä»¥ç¸å¯¹äºæ¥æè䏿¢æ¯å½åæ¥ææ¥è®¡ç®å¹´é¾ãä¾å¦ï¼å¦æä½ 卿°æ®åºå卿»äº¡æ¥æï¼ä½ è½å¾å®¹æå°è®¡ç®åºä¸åªå® ç©æ»æ¶æå¤å¤§ã ä½ å¯è½æ³å°pet表ä¸å ¶å®æç¨çå ¶å®ç±»åä¿¡æ¯ï¼ä½æ¯å°ç®å为æ¢è¿äºå·²ç»è¶³å¤äºï¼ååã主人ãç§ç±»ï¼æ§å«ãåºçåæ»äº¡æ¥æã 使ç¨ä¸ä¸ªCREATE TABLEè¯å¥æå®ä½ çæ°æ®åºè¡¨çå¸å±ï¼ mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); VARCHARéåäºnameãowneråspeciesåï¼å 为å弿¯åé¿çãè¿äºåçé¿åº¦ä¸å¿ é½ç¸åï¼èä¸ä¸å¿ æ¯20ãä½ å¯ä»¥æéä»1å°65535çä»»ä½é¿åº¦ï¼ä»ä¸éæ©ä¸ä¸ªæåççå¼ãï¼å¦æéæ©å¾ä¸åéï¼åæ¥è¯æä½ éè¦ä¸ä¸ªæ´é¿çåæ®µï¼MySQLæä¾ä¸ä¸ªALTER TABLEè¯å¥ãï¼ å¯ä»¥ç¨å¤ç§ç±»åç弿¥è¡¨ç¤ºå¨ç©è®°å½ä¸çæ§å«ï¼ä¾å¦ï¼"m"å"f"ï¼æ"male"å"female"ã使ç¨åå符"m"å"f"æ¯æç®åçæ¹æ³ã 徿¾ç¶ï¼birthådeathååºéç¨DATEæ°æ®ç±»ã åå»ºäºæ°æ®åºè¡¨åï¼SHOW TABLESåºè¯¥äº§çä¸äºè¾åºï¼ mysql> SHOW TABLES; +---------------------+
| Tables in menagerie |
+---------------------+
| pet |
+---------------------+为äºéªè¯ä½ çè¡¨æ¯æä½ ææçæ¹å¼å建ï¼ä½¿ç¨ä¸ä¸ªDESCRIBEè¯å¥ï¼ mysql> DESCRIBE pet; +---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+ä½ å¯ä»¥éæ¶ä½¿ç¨DESCRIBEï¼ä¾å¦ï¼å¦æä½ å¿è®°è¡¨ä¸çåçåç§°æç±»åæ¶ã å建表åï¼éè¦å¡«å ¥å 容ãéè¿LOAD DATAåINSERTè¯å¥å¯ä»¥å®æè¯¥ä»»å¡ã åå®ä½ çå® ç©çºªå½æè¿°å¦ä¸ãï¼åå®å¨MySQL䏿æçæ¥ææ ¼å¼æ¯YYYY-MM-DDï¼è¿å¯è½ä¸ä½ ä¹ æ¯çä¸åãï¼
å ä¸ºä½ æ¯ä»ä¸ä¸ªç©ºè¡¨å¼å§çï¼å¡«å å®çä¸ä¸ªç®ææ¹æ³æ¯å建ä¸ä¸ªææ¬æä»¶ï¼æ¯ä¸ªå¨ç©åä¸è¡ï¼ç¶åç¨ä¸ä¸ªè¯å¥å°æä»¶çå å®¹è£ è½½å°è¡¨ä¸ã ä½ å¯ä»¥å建ä¸ä¸ªææ¬æä»¶âpet.txtâï¼æ¯è¡å å«ä¸ä¸ªè®°å½ï¼ç¨å®ä½ç¬¦(tab)æå¼åå¼ï¼å¹¶ä¸ä»¥CREATE TABLEè¯å¥ä¸ååºç忬¡åºç»åºã对äºä¸¢å¤±çå¼(ä¾å¦æªç¥çæ§å«ï¼æä»ç¶æ´»ççå¨ç©çæ»äº¡æ¥æ)ï¼ä½ å¯ä»¥ä½¿ç¨NULLå¼ã为äºå¨ä½ çææ¬æä»¶ä¸è¡¨ç¤ºè¿äºå 容ï¼ä½¿ç¨\Nï¼åæçº¿ï¼åæ¯Nï¼ãä¾å¦ï¼Whistleré¸çè®°å½åºä¸º(è¿éå¼ä¹é´çç©ºç½æ¯ä¸ä¸ªå®ä½ç¬¦)ï¼
è¦æ³å°ææ¬æä»¶âpet.txtâè£ è½½å°pet表ä¸ï¼ä½¿ç¨è¿ä¸ªå½ä»¤ï¼ mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet; 请注æå¦æç¨Windowsä¸çç¼è¾å¨ï¼ä½¿ç¨\r\nå为è¡çç»æç¬¦ï¼å建æä»¶ï¼åºä½¿ç¨ï¼ mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet -> LINES TERMINATED BY '\r\n'; ï¼å¨è¿è¡OS XçAppleæºä¸ï¼åºä½¿ç¨è¡ç»æç¬¦'\r'ãï¼ å¦æä½ æ¿æï¼ä½ è½æç¡®å°å¨LOAD DATAè¯å¥ä¸æåºåå¼çåé符åè¡å°¾æ è®°ï¼ä½æ¯é»è®¤æ è®°æ¯å®ä½ç¬¦åæ¢è¡ç¬¦ãè¿å¯¹è¯»å ¥æä»¶âpet.txtâçè¯å¥å·²ç»è¶³å¤ã å¦æè¯¥è¯å¥å¤±è´¥ï¼å¯è½æ¯ä½ å®è£
çMySQLä¸ä¸ä½¿ç¨é»è®¤å¼çæ¬å°æä»¶å
¼å®¹ãå
³äºå¦ä½æ´æ¹è¯·åè§5.6.4èï¼âLOAD DATA LOCALå®å
¨é®é¢ 妿æ³è¦ä¸æ¬¡å¢å ä¸ä¸ªæ°è®°å½ï¼å¯ä»¥ä½¿ç¨INSERTè¯å¥ãæç®åç形弿¯ï¼æä¾æ¯ä¸åçå¼ï¼å ¶é¡ºåºä¸CREATE TABLEè¯å¥ä¸åç顺åºç¸åãåå®Dianeæä¸åªæ°ä»é¼ å½å为Puffballï¼ä½ å¯ä»¥ä½¿ç¨ä¸é¢çINSERTè¯å¥æ·»å 䏿¡æ°è®°å½ï¼ mysql> INSERT INTO pet -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL); 注æï¼è¿éåç¬¦ä¸²åæ¥æå¼å为å¼å·æ©èµ·æ¥çå符串ãå¦å¤ï¼å¯ä»¥ç´æ¥ç¨INSERTè¯å¥æå ¥NULL代表ä¸åå¨çå¼ãä¸è½ä½¿ç¨LOAD DATAä¸æç¤ºçç\Nã ä»è¿ä¸ªä¾åï¼ä½ åºè¯¥è½çå°æ¶åå¾å¤çé®å ¥ç¨å¤ä¸ªINSERTè¯å¥èéå个LOAD DATAè¯å¥è£ è½½ä½ çåå§è®°å½ã SELECTè¯å¥ç¨æ¥ä»æ°æ®è¡¨ä¸æ£ç´¢ä¿¡æ¯ãè¯å¥çä¸è¬æ ¼å¼æ¯ï¼ SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to_selectæåºä½ æ³è¦çå°çå 容ï¼å¯ä»¥æ¯åçä¸ä¸ªè¡¨ï¼æ*è¡¨ç¤ºâææçåâãwhich_tableæåºä½ æ³è¦ä»å ¶æ£ç´¢æ°æ®ç表ãWHEREå奿¯å¯é项ï¼å¦æéæ©è¯¥é¡¹ï¼conditions_to_satisfyæå®è¡å¿ é¡»æ»¡è¶³çæ£ç´¢æ¡ä»¶ã 3.3.4.1. éæ©æææ°æ®SELECTæç®åç形弿¯ä»ä¸ä¸ªè¡¨ä¸æ£ç´¢ææè®°å½ï¼ mysql> SELECT * FROM pet; +----------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+--------+---------+------+------------+------------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Fang | Benny | dog | m | 1990-08-27 | NULL |
| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
+----------+--------+---------+------+------------+------------+å¦æä½ æ³è¦æµè§æ´ä¸ªè¡¨ï¼å¯ä»¥ä½¿ç¨è¿ç§å½¢å¼çSELECTï¼ä¾å¦ï¼ååè£ è½½äºåå§æ°æ®é以åã乿å¯è½ä½ æ³å°Bowserççæ¥çèµ·æ¥ä¸å¾å¯¹ãæ¥é ä½ åæ¥çå®¶è°±ï¼ä½ åç°æ£ç¡®çåºçå¹´æ¯1989ï¼è䏿¯1979ã è³å°æä¸¤ç§ä¿®æ£æ¹æ³ï¼ · ç¼è¾æä»¶âpet.txtâæ¹æ£é误ï¼ç¶å使ç¨DELETEåLOAD DATAæ¸ ç©ºå¹¶éæ°è£ è½½è¡¨: · mysql> DELETE FROM pet; · mysql> LOAD DATA LOCAL INFILE 'pet.txt' INTO TABLE pet; ç¶è, å¦æè¿æ ·æåï¼å¿ 须鿰è¾å ¥Puffballè®°å½ã · ç¨ä¸ä¸ªUPDATEè¯å¥ä» ä¿®æ£é误记å½ï¼ · mysql> UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser'; UPDATEåªæ´æ¹æé®é¢çè®°å½ï¼ä¸éè¦éæ°è£ è½½æ°æ®åºè¡¨ã 3.3.4.2. éæ©ç¹æ®è¡
å¦ä¸æç¤ºï¼æ£ç´¢æ´ä¸ªè¡¨æ¯å®¹æçãåªéè¦ä»SELECTè¯å¥ä¸å æWHEREåå¥ã使¯ä¸è¬ä½ 䏿³çå°æ´ä¸ªè¡¨ï¼ç¹å«å°å½è¡¨åå¾å¾å¤§æ¶ãç¸åï¼ä½ é常对åçä¸ä¸ªå
·ä½çé®é¢æ´æå
´è¶£ï¼å¨è¿ç§æ
åµä¸å¨ä½ æ³è¦çä¿¡æ¯ä¸è¿è¡ä¸äºéå¶ã让æä»¬çä¸äºä»ä»¬åççæå
³ä½ å® ç©çé®é¢çéæ©æ¥è¯¢ã å¯ä»¥ä»è¡¨ä¸åªéæ©ç¹å®çè¡ãä¾å¦ï¼å¦æä½ æ³è¦éªè¯ä½ 对Bowserççæ¥æåçæ´æ¹ï¼æä¸è¿°æ¹æ³éæ©Bowserçè®°å½ï¼ mysql> SELECT * FROM pet WHERE name = 'Bowser'; +--------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+-------+---------+------+------------+------------+
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+-------+---------+------+------------+------------+è¾åºè¯å®æ£ç¡®ç年份记å½ä¸º1989ï¼è䏿¯1979ã å符串æ¯è¾æ¶é常对大å°äºä¸ææï¼å æ¤ä½ å¯ä»¥å°ååæå®ä¸º"bowser"ã"BOWSER"çï¼æ¥è¯¢ç»æç¸åã ä½ å¯ä»¥å¨ä»»ä½å䏿宿¡ä»¶ï¼ä¸åªä» ä» æ¯nameãä¾å¦ï¼å¦æä½ æ³è¦ç¥éåªä¸ªå¨ç©å¨1998以ååºççï¼æµè¯birthåï¼ mysql> SELECT * FROM pet WHERE birth > '1998-1-1'; +----------+-------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+-------+
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
+----------+-------+---------+------+------------+-------+å¯ä»¥ç»åæ¡ä»¶ï¼ä¾å¦ï¼æ¾åºéæ§ççï¼ mysql> SELECT * FROM pet WHERE species = 'dog' AND sex = 'f'; +-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+ä¸é¢çæ¥è¯¢ä½¿ç¨ANDé»è¾æä½ç¬¦ï¼ä¹æä¸ä¸ªORæä½ç¬¦ï¼ mysql> SELECT * FROM pet WHERE species = 'snake' OR species = 'bird'; +----------+-------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+-------+
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
+----------+-------+---------+------+------------+-------+ANDåORå¯ä»¥æ··ç¨ï¼ä½ANDæ¯ORå ·ææ´é«çä¼å 级ãå¦æä½ ä½¿ç¨ä¸¤ä¸ªæä½ç¬¦ï¼ä½¿ç¨åæ¬å·ææå¦ä½å¯¹æ¡ä»¶è¿è¡åç»æ¯ä¸ä¸ªå¥½ä¸»æï¼ mysql> SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm') -> OR (species = 'dog' AND sex = 'f'); +-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+3.3.4.3. éæ©ç¹æ®å
å¦æä½ ä¸æ³çå°è¡¨ä¸çææè¡ï¼å°±å½åä½ æå
´è¶£çåï¼ç¨éå·åå¼ãä¾å¦ï¼å¦æä½ æ³è¦ç¥éä½ çå¨ç©ä»ä¹æ¶ååºççï¼éæ©nameåbirthåï¼ mysql> SELECT name, birth FROM pet; +----------+------------+
| name | birth |
+----------+------------+
| Fluffy | 1993-02-04 |
| Claws | 1994-03-17 |
| Buffy | 1989-05-13 |
| Fang | 1990-08-27 |
| Bowser | 1989-08-31 |
| Chirpy | 1998-09-11 |
| Whistler | 1997-12-09 |
| Slim | 1996-04-29 |
| Puffball | 1999-03-30 |
+----------+------------+æ¾åºè°æ¥æå® ç©ï¼ä½¿ç¨è¿ä¸ªæ¥è¯¢ï¼ mysql> SELECT owner FROM pet; +--------+
| owner |
+--------+
| Harold |
| Gwen |
| Harold |
| Benny |
| Diane |
| Gwen |
| Gwen |
| Benny |
| Diane |
+--------+请注æè¯¥æ¥è¯¢åªæ¯ç®åå°æ£ç´¢æ¯ä¸ªè®°å½çowneråï¼å¹¶ä¸ä»ä»¬ä¸çä¸äºåºç°å¤æ¬¡ã为äºä½¿è¾åºåå°æå°ï¼å¢å å ³é®åDISTINCTæ£ç´¢åºæ¯ä¸ªå¯ä¸çè¾åºè®°å½ï¼ mysql> SELECT DISTINCT owner FROM pet; +--------+
| owner |
+--------+
| Benny |
| Diane |
| Gwen |
| Harold |
+--------+å¯ä»¥ä½¿ç¨ä¸ä¸ªWHEREåå¥ç»åè¡éæ©ä¸åéæ©ãä¾å¦ï¼è¦æ³æ¥è¯¢çåç«çåºçæ¥æï¼ä½¿ç¨è¿ä¸ªæ¥è¯¢ï¼ mysql> SELECT name, species, birth FROM pet -> WHERE species = 'dog' OR species = 'cat'; +--------+---------+------------+
| name | species | birth |
+--------+---------+------------+
| Fluffy | cat | 1993-02-04 |
| Claws | cat | 1994-03-17 |
| Buffy | dog | 1989-05-13 |
| Fang | dog | 1990-08-27 |
| Bowser | dog | 1989-08-31 |
+--------+---------+------------+3.3.4.4. åç±»è¡
ä½ å¯è½å·²ç»æ³¨æå°åé¢çä¾åä¸ç»æè¡æ²¡æä»¥ç¹å®çé¡ºåºæ¾ç¤ºãç¶èï¼å½è¡ææç§æ¹å¼æåºæ¶ï¼æ£æ¥æ¥è¯¢è¾åºé常æ´å®¹æãä¸ºäºæåºç»æï¼ä½¿ç¨ORDER
BYåå¥ã è¿éæ¯å¨ç©çæ¥ï¼ææ¥ææåºï¼ mysql> SELECT name, birth FROM pet ORDER BY birth; +----------+------------+
| name | birth |
+----------+------------+
| Buffy | 1989-05-13 |
| Bowser | 1989-08-31 |
| Fang | 1990-08-27 |
| Fluffy | 1993-02-04 |
| Claws | 1994-03-17 |
| Slim | 1996-04-29 |
| Whistler | 1997-12-09 |
| Chirpy | 1998-09-11 |
| Puffball | 1999-03-30 |
+----------+------------+å¨å符类ååä¸ï¼ä¸ææå ¶ä»æ¯è¾æä½ç±»ä¼¼ï¼åç±»åè½æ£å¸¸æ åµä¸æ¯ä»¥åºå大å°åçæ¹å¼æ§è¡çãè¿æå³çï¼å¯¹äºçåä½å¤§å°åä¸åçåï¼å¹¶æªå®ä¹å ¶é¡ºåºãå¯¹äºæä¸åï¼å¯ä»¥ä½¿ç¨BINARYå¼ºå¶æ§è¡åºå大å°åçåç±»åè½ï¼å¦ï¼ORDER BY BINARY col_name. é»è®¤æåºæ¯ååºï¼æå°çå¼å¨ç¬¬ä¸ãè¦æ³ä»¥éåºæåºï¼å¨ä½ æ£å¨æåºçååä¸å¢å DESCï¼éåº ï¼å ³é®åï¼ mysql> SELECT name, birth FROM pet ORDER BY birth DESC; +----------+------------+
| name | birth |
+----------+------------+
| Puffball | 1999-03-30 |
| Chirpy | 1998-09-11 |
| Whistler | 1997-12-09 |
| Slim | 1996-04-29 |
| Claws | 1994-03-17 |
| Fluffy | 1993-02-04 |
| Fang | 1990-08-27 |
| Bowser | 1989-08-31 |
| Buffy | 1989-05-13 |
+----------+------------+å¯ä»¥å¯¹å¤ä¸ªåè¿è¡æåºï¼å¹¶ä¸å¯ä»¥æä¸åçæ¹å对ä¸åçåè¿è¡æåºãä¾å¦ï¼æååºå¯¹å¨ç©çç§ç±»è¿è¡æåºï¼ç¶åæéåºæ ¹æ®çæ¥å¯¹åå¨ç©ç§ç±»è¿è¡æåºï¼æå¹´è½»çå¨ç©å¨æåé¢ï¼ï¼ä½¿ç¨ä¸åæ¥è¯¢ï¼ mysql> SELECT name, species, birth FROM pet -> ORDER BY species, birth DESC; +----------+---------+------------+
| name | species | birth |
+----------+---------+------------+
| Chirpy | bird | 1998-09-11 |
| Whistler | bird | 1997-12-09 |
| Claws | cat | 1994-03-17 |
| Fluffy | cat | 1993-02-04 |
| Fang | dog | 1990-08-27 |
| Bowser | dog | 1989-08-31 |
| Buffy | dog | 1989-05-13 |
| Puffball | hamster | 1999-03-30 |
| Slim | snake | 1996-04-29 |
+----------+---------+------------+注æDESCå ³é®åä» éç¨äºå¨å®åé¢çåå(birth)ï¼ä¸å½±åspeciesåçæåºé¡ºåºã 3.3.4.5. æ¥æè®¡ç®MySQLæä¾äºå ä¸ªå½æ°ï¼å¯ä»¥ç¨æ¥è®¡ç®æ¥æï¼ä¾å¦ï¼è®¡ç®å¹´é¾ææåæ¥æé¨åã è¦æ³ç¡®å®æ¯ä¸ªå® ç©æå¤å¤§ï¼å¯ä»¥è®¡ç®å½åæ¥æçå¹´ååºçæ¥æä¹é´çå·®ã妿å½åæ¥æçæ¥åå¹´æ¯åºçæ¥ææ©ï¼ååå»ä¸å¹´ã以䏿¥è¯¢æ¾ç¤ºäºæ¯ä¸ªå® ç©çåºçæ¥æãå½åæ¥æå年龿°å¼çå¹´æ°åã mysql> SELECT name, birth, CURDATE(), -> (YEAR(CURDATE())-YEAR(birth)) -> - (RIGHT(CURDATE(),5)<RIGHT(birth,5)) -> AS age -> FROM pet; +----------+------------+------------+------+
| name | birth | CURDATE() | age |
+----------+------------+------------+------+
| Fluffy | 1993-02-04 | 2003-08-19 | 10 |
| Claws | 1994-03-17 | 2003-08-19 | 9 |
| Buffy | 1989-05-13 | 2003-08-19 | 14 |
| Fang | 1990-08-27 | 2003-08-19 | 12 |
| Bowser | 1989-08-31 | 2003-08-19 | 13 |
| Chirpy | 1998-09-11 | 2003-08-19 | 4 |
| Whistler | 1997-12-09 | 2003-08-19 | 5 |
| Slim | 1996-04-29 | 2003-08-19 | 7 |
| Puffball | 1999-03-30 | 2003-08-19 | 4 |
+----------+------------+------------+------+æ¤å¤ï¼YEAR()æåæ¥æçå¹´é¨åï¼RIGHT()æåæ¥æçMM-DD (æ¥åå¹´)é¨åçæå³é¢5个åç¬¦ãæ¯è¾MM-DDå¼ç表达å¼é¨åçå¼ä¸è¬ä¸º1æ0ï¼å¦æCURDATE()çå¹´æ¯birthçå¹´æ©ï¼å年份åºåå»1ãæ´ä¸ªè¡¨è¾¾å¼æäºé¾æï¼ä½¿ç¨alias (age)æ¥ä½¿è¾åºçåæ è®°æ´ææä¹ã 尽管æ¥è¯¢å¯è¡ï¼å¦æä»¥æä¸ªé¡ºåºæåè¡ï¼åè½æ´å®¹æå°æµè§ç»æãæ·»å ORDER BY nameåå¥æç §åå对è¾åºè¿è¡æåºåè½å¤å®ç°ã mysql> SELECT name, birth, CURDATE(), -> (YEAR(CURDATE())-YEAR(birth)) -> - (RIGHT(CURDATE(),5)<RIGHT(birth,5)) -> AS age -> FROM pet ORDER BY name; +----------+------------+------------+------+
| name | birth | CURDATE() | age |
+----------+------------+------------+------+
| Bowser | 1989-08-31 | 2003-08-19 | 13 |
| Buffy | 1989-05-13 | 2003-08-19 | 14 |
| Chirpy | 1998-09-11 | 2003-08-19 | 4 |
| Claws | 1994-03-17 | 2003-08-19 | 9 |
| Fang | 1990-08-27 | 2003-08-19 | 12 |
| Fluffy | 1993-02-04 | 2003-08-19 | 10 |
| Puffball | 1999-03-30 | 2003-08-19 | 4 |
| Slim | 1996-04-29 | 2003-08-19 | 7 |
| Whistler | 1997-12-09 | 2003-08-19 | 5 |
+----------+------------+------------+------+ä¸ºäºæageèénameæåºè¾åºï¼åªè¦å使ç¨ä¸ä¸ªORDER BYåå¥ï¼ mysql> SELECT name, birth, CURDATE(), -> (YEAR(CURDATE())-YEAR(birth)) -> - (RIGHT(CURDATE(),5)<RIGHT(birth,5)) -> AS age -> FROM pet ORDER BY age; +----------+------------+------------+------+
| name | birth | CURDATE() | age |
+----------+------------+------------+------+
| Chirpy | 1998-09-11 | 2003-08-19 | 4 |
| Puffball | 1999-03-30 | 2003-08-19 | 4 |
| Whistler | 1997-12-09 | 2003-08-19 | 5 |
| Slim | 1996-04-29 | 2003-08-19 | 7 |
| Claws | 1994-03-17 | 2003-08-19 | 9 |
| Fluffy | 1993-02-04 | 2003-08-19 | 10 |
| Fang | 1990-08-27 | 2003-08-19 | 12 |
| Bowser | 1989-08-31 | 2003-08-19 | 13 |
| Buffy | 1989-05-13 | 2003-08-19 | 14 |
+----------+------------+------------+------+å¯ä»¥ä½¿ç¨ä¸ä¸ªç±»ä¼¼çæ¥è¯¢æ¥ç¡®å®å·²ç»æ»äº¡å¨ç©çæ»äº¡å¹´é¾ãä½ éè¿æ£æ¥death弿¯å¦æ¯NULLæ¥ç¡®å®æ¯åªäºå¨ç©ï¼ç¶åï¼å¯¹äºé£äºéNULLå¼çå¨ç©ï¼éè¦è®¡ç®åºdeathåbirthå¼ä¹é´çå·®ï¼ mysql> SELECT name, birth, death, -> (YEAR(death)-YEAR(birth)) - (RIGHT(death,5)<RIGHT(birth,5)) -> AS age -> FROM pet WHERE death IS NOT NULL ORDER BY age; +--------+------------+------------+------+
| name | birth | death | age |
+--------+------------+------------+------+
| Bowser | 1989-08-31 | 1995-07-29 | 5 |
+--------+------------+------------+------+æ¥è¯¢ä½¿ç¨death IS
NOT NULLèédeath
!= NULLï¼å 为NULLæ¯ç¹æ®çå¼ï¼ä¸è½ä½¿ç¨æ®éæ¯è¾ç¬¦æ¥æ¯è¾ï¼ä»¥åä¼ç»åºè§£éãåè§3.3.4.6èï¼âNULLå¼æä½ å¦æä½ æ³è¦ç¥éåªä¸ªå¨ç©ä¸ä¸ªæè¿çæ¥ï¼æä¹åï¼å¯¹äºè¿ç±»è®¡ç®ï¼å¹´åå¤©æ¯æ å ³çï¼ä½ åªéè¦æåbirthåçæä»½é¨åãMySQLæä¾å ä¸ªæ¥æé¨åçæå彿°ï¼ä¾å¦YEAR( )ãMONTH( )åDAYOFMONTH( )ãå¨è¿éMONTH()æ¯éåç彿°ã为äºçå®ææ ·å·¥ä½ï¼è¿è¡ä¸ä¸ªç®åçæ¥è¯¢ï¼æ¾ç¤ºbirthåMONTH(birth)çå¼ï¼ mysql> SELECT name, birth, MONTH(birth) FROM pet; +----------+------------+--------------+
| name | birth | MONTH(birth) |
+----------+------------+--------------+
| Fluffy | 1993-02-04 | 2 |
| Claws | 1994-03-17 | 3 |
| Buffy | 1989-05-13 | 5 |
| Fang | 1990-08-27 | 8 |
| Bowser | 1989-08-31 | 8 |
| Chirpy | 1998-09-11 | 9 |
| Whistler | 1997-12-09 | 12 |
| Slim | 1996-04-29 | 4 |
| Puffball | 1999-03-30 | 3 |
+----------+------------+--------------+æ¾åºä¸ä¸ªæçæ¥çå¨ç©ä¹æ¯å®¹æçãåå®å½åææ¯4æï¼é£ä¹æå¼æ¯4ï¼ä½ å¯ä»¥æ¾å¨5æåºççå¨ç© (5æ)ï¼æ¹æ³æ¯ï¼ mysql> SELECT name, birth FROM pet WHERE MONTH(birth) = 5; +-------+------------+
| name | birth |
+-------+------------+
| Buffy | 1989-05-13 |
+-------+------------+妿å½åæä»½æ¯12æï¼å°±æç¹å¤æäºãä½ ä¸è½åªæ1å 尿份æ°(12)ä¸å¹¶å¯»æ¾å¨13æåºççå¨ç©ï¼å 为没æè¿æ ·çæä»½ãç¸åï¼ä½ åºå¯»æ¾å¨1æåºççå¨ç©(1æ) ã ä½ çè³å¯ä»¥ç¼åæ¥è¯¢ï¼ä¸ç®¡å½åæä»½æ¯ä»ä¹å®é½è½å·¥ä½ãéç¨è¿ç§æ¹æ³ä¸å¿ 卿¥è¯¢ä¸ä½¿ç¨ä¸ä¸ªç¹å®çæä»½ï¼DATE_ADD( )å 许å¨ä¸ä¸ªç»å®çæ¥æä¸å 䏿¶é´é´éã妿å¨NOW( )å¼ä¸å ä¸ä¸ä¸ªæï¼ç¶åç¨MONTH()æåæä»½ï¼ç»æäº§ççæ¥æå¨æä»½ï¼ mysql> SELECT name, birth FROM pet -> WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH)); å®æè¯¥ä»»å¡çå¦ä¸ä¸ªæ¹æ³æ¯å 1以å¾åºå½åæä»½çä¸ä¸ä¸ªæ(å¨ä½¿ç¨åæ¨¡å½æ°(MOD)åï¼å¦ææä»½å½å弿¯12ï¼åâåæ»âå°å¼0)ï¼ mysql> SELECT name, birth FROM pet -> WHERE MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1; 注æï¼MONTHè¿åå¨1å12ä¹é´çä¸ä¸ªæ°åï¼ä¸MOD(something,12)è¿åå¨0å11ä¹é´çä¸ä¸ªæ°åï¼å æ¤å¿ é¡»å¨MOD( )以åå 1ï¼å¦åæä»¬å°ä»11æ( 11 )è·³å°1æ(1)ã NULLå¼å¯è½ä»¤äººæå°å¥æªç´å°ä½ ä¹ æ¯å®ãæ¦å¿µä¸ï¼NULLæå³çâæ²¡æå¼âæâæªç¥å¼âï¼ä¸å®è¢«çä½ä¸ä¼ä¸åçå¼ãä¸ºäºæµè¯NULLï¼ä½ ä¸è½ä½¿ç¨ç®æ¯æ¯è¾ æä½ç¬¦ä¾å¦=ã<æ!=ã为äºè¯´æå®ï¼è¯è¯ä¸åæ¥è¯¢ï¼ mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL; +----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
| NULL | NULL | NULL | NULL |
+----------+-----------+----------+----------+徿¾ç¶ä½ ä¸è½éè¿è¿äºæ¯è¾å¾å°ææä¹çç»æãç¸å使ç¨IS NULLåIS NOT NULLæä½ç¬¦ï¼ mysql> SELECT 1 IS NULL, 1 IS NOT NULL; +-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
| 0 | 1 |
+-----------+---------------+请注æå¨MySQLä¸ï¼0æ NULLæå³çåèå ¶å®å¼æå³ççãå¸å°è¿ç®çé»è®¤ç弿¯1ã 对NULLçç¹æ®å¤ç峿¯å¨åé¢çç« èä¸ï¼ä¸ºäºå³å®åªä¸ªå¨ç©ä¸åæ¯æ´»ççï¼ä½¿ç¨death IS NOT NULLèä¸ä½¿ç¨death != NULLçåå ã å¨GROUP BYä¸ï¼ä¸¤ä¸ªNULLå¼è§ä¸ºç¸åã æ§è¡ORDER BYæ¶ï¼å¦æè¿è¡ ORDER BY ... ASCï¼åNULLå¼åºç°å¨æåé¢ï¼è¥è¿è¡ORDER BY ... DESCï¼åNULLå¼åºç°å¨æåé¢ã NULLæä½ç常è§é误æ¯ä¸è½å¨å®ä¹ä¸ºNOT NULLçåå æå ¥0æç©ºå符串ï¼ä½äºå®å¹¶é妿¤ãå¨NULL表示"æ²¡ææ°å¼"çå°æ¹ææ°å¼ã使ç¨IS [NOT] NULLåå¯ä»¥å¾å®¹æå°è¿è¡æµè¯ï¼å¦ä¸æç¤ºï¼ mysql> SELECT 0 IS NULL, 0 IS NOT NULL, '' IS NULL, '' IS NOT NULL; +-----------+---------------+------------+----------------+
| 0 IS NULL | 0 IS NOT NULL | '' IS NULL | '' IS NOT NULL |
+-----------+---------------+------------+----------------+
| 0 | 1 | 0 | 1 |
+-----------+---------------+------------+----------------+å æ¤å®å
¨å¯ä»¥å¨å®ä¹ä¸ºNOT
NULLçåå
æå
¥0æç©ºå符串ï¼å®é
æ¯NOT
NULLãåè§A.5.3èï¼âä¸NULL弿å
³çé®é¢ MySQLæä¾æ åçSQL模å¼å¹é ï¼ä»¥åä¸ç§åºäºè±¡Unixå®ç¨ç¨åºå¦viãgrepåsedçæ©å±æ£åè¡¨è¾¾å¼æ¨¡å¼å¹é çæ ¼å¼ã SQL模å¼å¹é å è®¸ä½ ä½¿ç¨â_âå¹é ä»»ä½å个å符ï¼èâ%âå¹é ä»»ææ°ç®å符(å æ¬é¶å符)ãå¨ MySQLä¸ï¼SQLçæ¨¡å¼é»è®¤æ¯å¿½ç¥å¤§å°åçãä¸é¢ç»åºä¸äºä¾åãæ³¨æä½¿ç¨SQLæ¨¡å¼æ¶ï¼ä¸è½ä½¿ç¨=æ!=ï¼èåºä½¿ç¨LIKEæNOT LIKEæ¯è¾æä½ç¬¦ã è¦æ³æ¾åºä»¥âbâå¼å¤´çååï¼ mysql> SELECT * FROM pet WHERE name LIKE 'b%'; +--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+è¦æ³æ¾åºä»¥âfyâç»å°¾çååï¼ mysql> SELECT * FROM pet WHERE name LIKE '%fy'; +--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+è¦æ³æ¾åºå å«âwâçååï¼ mysql> SELECT * FROM pet WHERE name LIKE '%w%'; +----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+è¦æ³æ¾åºæ£å¥½å å«5个å符çååï¼ä½¿ç¨â_âæ¨¡å¼åç¬¦ï¼ mysql> SELECT * FROM pet WHERE name LIKE '_____'; +-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+ç±MySQLæä¾ç模å¼å¹é çå ¶å®ç±»åæ¯ä½¿ç¨æ©å±æ£å表达å¼ãå½ä½ 对è¿ç±»æ¨¡å¼è¿è¡å¹é æµè¯æ¶ï¼ä½¿ç¨REGEXPåNOT REGEXPæä½ç¬¦(æRLIKEåNOT RLIKEï¼å®ä»¬æ¯åä¹è¯)ã æ©å±æ£å表达å¼çä¸äºå符æ¯ï¼ · â.âå¹é ä»»ä½å个çå符ã · å符类â[...]âå¹é 卿¹æ¬å·å çä»»ä½å符ãä¾å¦ï¼â[abc]âå¹é âaâãâbâæâcâã为äºå½åå符çèå´ï¼ä½¿ç¨ä¸ä¸ªâ-âãâ[a-z]âå¹é ä»»ä½åæ¯ï¼èâ[0-9]âå¹é 任使°åã · â * âå¹é é¶ä¸ªæå¤ä¸ªå¨å®åé¢çå符ãä¾å¦ï¼âx*âå¹é 任使°éçâxâå符ï¼â[0-9]*âå¹é 任使°éçæ°åï¼èâ.*âå¹é 任使°éçä»»ä½å符ã
为äºè¯´ææ©å±æ£å表达å¼å¦ä½å·¥ä½ï¼ä¸é¢ä½¿ç¨REGEXPéåä¸é¢æç¤ºçLIKEæ¥è¯¢ï¼ ä¸ºäºæ¾åºä»¥âbâå¼å¤´çååï¼ä½¿ç¨â^âå¹é ååçå¼å§ï¼ mysql> SELECT * FROM pet WHERE name REGEXP '^b'; +--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+å¦æä½ æ³å¼ºå¶ä½¿REGEXPæ¯è¾åºå大å°åï¼ä½¿ç¨BINARYå ³é®åä½¿å ¶ä¸ä¸ä¸ªå符串å为äºè¿å¶å符串ã该æ¥è¯¢åªå¹é åç§°é¦åæ¯çå°åâbâã mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b'; ä¸ºäºæ¾åºä»¥âfyâç»å°¾çååï¼ä½¿ç¨â$âå¹é ååçç»å°¾ï¼ mysql> SELECT * FROM pet WHERE name REGEXP 'fy$'; +--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+ä¸ºäºæ¾åºå å«ä¸ä¸ªâwâçååï¼ä½¿ç¨ä»¥ä¸æ¥è¯¢ï¼ mysql> SELECT * FROM pet WHERE name REGEXP 'w'; +----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+æ¢ç¶å¦æä¸ä¸ªæ£å表达å¼åºç°å¨å¼çä»»ä½å°æ¹ï¼å ¶æ¨¡å¼å¹é äºï¼å°±ä¸å¿ å¨å åçæ¥è¯¢ä¸å¨æ¨¡å¼ç两侧æ¾ç½®ä¸ä¸ªéé 符以使å¾å®å¹é æ´ä¸ªå¼ï¼å°±åä½ ä½¿ç¨äºä¸ä¸ªSQL模å¼é£æ ·ã ä¸ºäºæ¾åºå 嫿£å¥½5个å符çååï¼ä½¿ç¨â^âåâ$âå¹é ååçå¼å§åç»å°¾ï¼å5个â.âå®ä¾å¨ä¸¤è ä¹é´ï¼ mysql> SELECT * FROM pet WHERE name REGEXP '^.....$'; +-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+ä½ ä¹å¯ä»¥ä½¿ç¨â{n}ââéå¤n次âæä½ç¬¦éååé¢çæ¥è¯¢ï¼ mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$'; +-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+éå½Gï¼MySQLæ£åè¡¨è¾¾å¼ æä¾äºå ³äºæ£å表达å¼ç奿³ç详ç»ä¿¡æ¯ã
æ°æ®åºç»å¸¸ç¨äºåçè¿ä¸ªé®é¢ï¼âæä¸ªç±»åçæ°æ®å¨è¡¨ä¸åºç°çé¢åº¦?âä¾å¦ï¼ä½ å¯è½æ³è¦ç¥éä½ æå¤å°å® ç©ï¼ææ¯ä½ä¸»äººæå¤å°å® ç©ï¼æä½ å¯è½æ³è¦å¯¹ä½ çå¨ç©è¿è¡åç§ç±»åçæ®æ¥ã 计ç®ä½ æ¥æå¨ç©çæ»æ°ç®ä¸âå¨petè¡¨ä¸æå¤å°è¡?âæ¯åæ ·çé®é¢ï¼å 为æ¯ä¸ªå® ç©æä¸ä¸ªè®°å½ãCOUNT(*)彿°è®¡ç®è¡æ°ï¼æä»¥è®¡ç®å¨ç©æ°ç®çæ¥è¯¢åºä¸ºï¼ mysql> SELECT COUNT(*) FROM pet; +----------+
| COUNT(*) |
+----------+
| 9 |
+----------+å¨åé¢ï¼ä½ æ£ç´¢äºæ¥æå® ç©ç人çååãå¦æä½ æ³è¦ç¥éæ¯ä¸ªä¸»äººæå¤å°å® ç©ï¼ä½ å¯ä»¥ä½¿ç¨COUNT( )彿°ï¼ mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner; +--------+----------+
| owner | COUNT(*) |
+--------+----------+
| Benny | 2 |
| Diane | 2 |
| Gwen | 3 |
| Harold | 2 |
+--------+----------+注æï¼ä½¿ç¨GROUP BY对æ¯ä¸ªownerçææè®°å½åç»ï¼æ²¡æå®ï¼ä½ ä¼å¾å°éè¯¯æ¶æ¯ï¼ mysql> SELECT owner, COUNT(*) FROM pet; ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)
with no GROUP columns is illegal if there is no GROUP BY clauseCOUNT( )åGROUP BY以åç§æ¹å¼åç±»ä½ çæ°æ®ãä¸åä¾åæ¾ç¤ºåºè¿è¡å¨ç©æ®æ¥æä½çä¸åæ¹å¼ã æ¯ç§å¨ç©çæ°éï¼ mysql> SELECT species, COUNT(*) FROM pet GROUP BY species; +---------+----------+
| species | COUNT(*) |
+---------+----------+
| bird | 2 |
| cat | 2 |
| dog | 3 |
| hamster | 1 |
| snake | 1 |
+---------+----------+æ¯ç§æ§å«çå¨ç©æ°éï¼ mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex; +------+----------+
| sex | COUNT(*) |
+------+----------+
| NULL | 1 |
| f | 4 |
| m | 4 |
+------+----------+ï¼å¨è¿ä¸ªè¾åºä¸ï¼NULLè¡¨ç¤ºâæªç¥æ§å«âãï¼ æç§ç±»åæ§å«ç»åçå¨ç©æ°éï¼ mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex; +---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| bird | NULL | 1 |
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
+---------+------+----------+è¥ä½¿ç¨COUNT( )ï¼ä½ ä¸å¿ æ£ç´¢æ´ä¸ªè¡¨ãä¾å¦, åé¢çæ¥è¯¢ï¼å½åªå¯¹çåç«è¿è¡æ¶ï¼åºä¸ºï¼ mysql> SELECT species, sex, COUNT(*) FROM pet -> WHERE species = 'dog' OR species = 'cat' -> GROUP BY species, sex; +---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
+---------+------+----------+æï¼å¦æä½ ä» éè¦ç¥éå·²ç¥æ§å«çææ§å«çå¨ç©æ°ç®ï¼ mysql> SELECT species, sex, COUNT(*) FROM pet -> WHERE sex IS NOT NULL -> GROUP BY species, sex; +---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
+---------+------+----------+
3.3.4.9. 使ç¨1个以ä¸ç表 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | date | type | remark |
Fluffy | 1995-05-15 | litter | 4 kittens, 3 female, 1 male |
Buffy | 1993-06-23 | litter | 5 puppies, 2 female, 3 male |
Buffy | 1994-06-19 | litter | 3 puppies, 3 female |
Chirpy | 1999-03-21 | vet | needed beak straightened |
Slim | 1997-08-03 | vet | broken rib |
Bowser | 1991-10-12 | kennel |
|
Fang | 1991-10-12 | kennel |
|
Fang | 1998-08-28 | birthday | Gave him a new chew toy |
Claws | 1998-03-17 | birthday | Gave him a new flea collar |
Whistler | 1998-12-09 | birthday | First birthday |
éç¨å¦ä¸æ¹å¼è£ 载记å½ï¼
mysql> LOAD DATA LOCAL INFILE 'event.txt' INTO TABLE event;
æ ¹æ®ä½ ä»å·²ç»è¿è¡å¨pet表ä¸çæ¥è¯¢ä¸å¦å°çï¼ä½ åºè¯¥è½æ§è¡å¯¹event表ä¸è®°å½çæ£ç´¢ï¼åçæ¯ä¸æ ·çã使¯ä»ä¹æ¶åevent表æ¬èº«ä¸è½åçä½ å¯è½é®çé®é¢å¢ï¼
å½ä»ä»¬æäºä¸çªå°å¨ç©æ¶ï¼åå®ä½ æ³è¦æ¾åºæ¯åªå® ç©çå¹´é¾ãæä»¬åé¢çå°äºå¦ä½éè¿ä¸¤ä¸ªæ¥æè®¡ç®å¹´é¾ãeventè¡¨ä¸ææ¯äº²ççäº§æ¥æï¼ä½æ¯ä¸ºäºè®¡ç®æ¯äº²çå¹´é¾ï¼ä½ éè¦å¥¹çåºçæ¥æï¼åå¨å¨pet表ä¸ãè¯´ææ¥è¯¢éè¦ä¸¤ä¸ªè¡¨ï¼
mysql> SELECT pet.name,
-> (YEAR(date)-YEAR(birth)) - (RIGHT(date,5)<RIGHT(birth,5)) AS age,
-> remark
-> FROM pet, event
-> WHERE pet.name = event.name AND event.type = 'litter';
+--------+------+-----------------------------+
| name | age | remark |
+--------+------+-----------------------------+
| Fluffy | 2 | 4 kittens, 3 female, 1 male |
| Buffy | 4 | 5 puppies, 2 female, 3 male |
| Buffy | 5 | 3 puppies, 3 female |
+--------+------+-----------------------------+å ³äºè¯¥æ¥è¯¢è¦æ³¨æçå ä»¶äºæ ï¼
ä½ ä¸å¿ æ2个ä¸åç表æ¥è¿è¡èç»ãå¦æä½ æ³è¦å°ä¸ä¸ªè¡¨çè®°å½ä¸åä¸ä¸ªè¡¨çå ¶å®è®°å½è¿è¡æ¯è¾ï¼å¯ä»¥å°ä¸ä¸ªè¡¨èç»å°èªèº«ãä¾å¦ï¼ä¸ºäºå¨ä½ çå® ç©ä¹ä¸ç¹æ®é å¶ï¼ä½ å¯ä»¥ç¨petèç»èªèº«æ¥è¿è¡ç¸ä¼¼ç§ç±»çééé 对ï¼
mysql> SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
-> FROM pet AS p1, pet AS p2
-> WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';
+--------+------+--------+------+---------+
| name | sex | name | sex | species |
+--------+------+--------+------+---------+
| Fluffy | f | Claws | m | cat |
| Buffy | f | Fang | m | dog |
| Buffy | f | Bowser | m | dog |
+--------+------+--------+------+---------+å¨è¿ä¸ªæ¥è¯¢ä¸ï¼æä»¬ä¸ºè¡¨åæå®å«å以便è½å¼ç¨åå¹¶ä¸ä½¿å¾æ¯ä¸ä¸ªåå¼ç¨ä¸åªä¸ªè¡¨å®ä¾ç¸å ³èæ´ç´è§ã
ä½ å·²ç»è§å°äºSHOW DATABASESï¼å®ååºç±æå¡å¨ç®¡ççæ°æ®åºãä¸ºäºæ¾åºå½åéæ©äºåªä¸ªæ°æ®åºï¼ä½¿ç¨DATABASE( )彿°ï¼
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| menagerie |
+------------+å¦æä½ è¿æ²¡éæ©ä»»ä½æ°æ®åºï¼ç»ææ¯NULLã
ä¸ºäºæ¾åºå½åçæ°æ®åºå å«ä»ä¹è¡¨(ä¾å¦ï¼å½ä½ ä¸è½ç¡®å®ä¸ä¸ªè¡¨çåå)ï¼ä½¿ç¨è¿ä¸ªå½ä»¤ï¼
mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| event |
| pet |
+---------------------+å¦æä½ æ³è¦ç¥éä¸ä¸ªè¡¨çç»æï¼å¯ä»¥ä½¿ç¨DESCRIBEå½ä»¤ï¼å®æ¾ç¤ºè¡¨ä¸æ¯ä¸ªåçä¿¡æ¯ï¼
mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+Fieldæ¾ç¤ºåååï¼Typeæ¯åçæ°æ®ç±»åï¼Nullè¡¨ç¤ºåæ¯å¦è½å å«NULLå¼ï¼Keyæ¾ç¤ºåæ¯å¦è¢«ç´¢å¼èDefaultæå®åçé»è®¤å¼ã
å¦æè¡¨æç´¢å¼ï¼SHOW INDEX FROM tbl_nameçææå ³ç´¢å¼çä¿¡æ¯ã
shell> mysql < batch-file
妿å¨Windowsä¸è¿è¡mysqlï¼å¹¶ä¸æä»¶ä¸æä¸äºå¯ä»¥é æé®é¢çç¹æ®å符ï¼å¯ä»¥è¿æ ·æä½ï¼
C:\> mysql -e "source batch-file"
å¦æä½ éè¦å¨å½ä»¤è¡ä¸æå®è¿æ¥åæ°ï¼å½ä»¤åºä¸ºï¼
shell> mysql -h host -u user -p < batch-file
Enter password: ********
å½è¿æ ·æä½mysqlæ¶ï¼åå建ä¸ä¸ªèæ¬æä»¶ï¼ç¶åæ§è¡èæ¬ã
å¦æä½ æ³å¨è¯å¥åºç°éè¯¯çæ¶å仿³ç»§ç»æ§è¡èæ¬ï¼ååºä½¿ç¨--forceå½ä»¤è¡é项ã
为ä»ä¹è¦ä½¿ç¨ä¸ä¸ªèæ¬ï¼æå¾å¤åå ï¼
· shell> mysql < batch-file | more
· shell> mysql < batch-file > mysql.out
å½ä½ ä»¥æ¹æ¨¡å¼è¿è¡mysqlæ¶ï¼æ¯èµ·ä½ 交äºå°ä½¿ç¨å®æ¶ï¼å ¶é»è®¤è¾åºæ ¼å¼æ¯ä¸åç(æ´ç®æäº)ãä¾å¦ï¼å½äº¤äºå¼è¿è¡SELECT DISTINCT species FROM petæ¶ï¼è¾åºåºä¸ºï¼
+---------+
| species |
+---------+
| bird |
| cat |
| dog |
| hamster |
| snake |
+---------+使¯å½ä»¥æ¹æ¨¡å¼è¿è¡æ¶ï¼è¾åºåºä¸ºï¼
species
bird
cat
dog
hamster
snakeå¦æä½ æ³è¦å¨æ¹æ¨¡å¼ä¸å¾å°äº¤äºè¾åºæ ¼å¼ï¼ä½¿ç¨mysql -tã为äºåæ¾ä»¥è¾åºè¢«æ§è¡çå½ä»¤ï¼ä½¿ç¨mysql -vvvã
ä½ è¿å¯ä»¥ä½¿ç¨æºä»£ç æ \.å½ä»¤ä»mysqlæç¤ºç¬¦è¿è¡èæ¬ï¼
mysql> source filename;
mysql> \. filename
ä¸é¢æ¯ä¸äºå¦ä¹ å¦ä½ç¨MySQLè§£å³ä¸äºå¸¸è§é®é¢çä¾åã
å¨ä¸äºä¾åä¸ï¼ä½¿ç¨æ°æ®åºè¡¨âshopâæ¥å¨åæä¸ªå人ï¼ç»éåï¼çæ¯ä»¶ç©å(ç©åå·)çä»·æ ¼ãå宿¯ä¸ªå人对æ¯é¡¹ç©åæä¸ä¸ªåºå®ä»·æ ¼ï¼é£ä¹(ç©åï¼å人)å³ä¸ºè¯¥è®°å½çä¸»å ³é®åã
å¯å¨å½ä»¤è¡å·¥å ·mysqlå¹¶éæ©æ°æ®åºï¼
shell> mysql your-database-name
ï¼å¨å¤§å¤æ°MySQLä¸ï¼ä½ å¯ä»¥ä½¿ç¨testæ°æ®åºï¼ã
ä½ å¯ä»¥ä½¿ç¨ä»¥ä¸è¯å¥å建示ä¾è¡¨ï¼
mysql> CREATE TABLE shop (
-> article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
-> dealer CHAR(20) DEFAULT '' NOT NULL,
-> price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
-> PRIMARY KEY(article, dealer));
mysql> INSERT INTO shop VALUES
-> (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
-> (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
æ§è¡è¯å¥åï¼è¡¨åºå å«ä»¥ä¸å 容ï¼
mysql> SELECT * FROM shop;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+âæå¤§çç©åå·æ¯ä»ä¹ï¼â
SELECT MAX(article) AS article FROM shop; +---------+ | article | +---------+ | 4 | +---------+
è¿å¾å®¹æç¨ä¸ä¸ªåæ¥è¯¢åå°ï¼
SELECT article, dealer, price
FROM shop
WHERE price=(SELECT MAX(price) FROM shop);å¦ä¸ä¸ªè§£å³æ¹æ¡æ¯æä»·æ ¼éåºæåºææè¡å¹¶ç¨MySQLç¹å®LIMITåå¥åªå¾å°ç¬¬ä¸è¡ï¼
SELECT article, dealer, price
FROM shop
ORDER BY price DESC
LIMIT 1;注:妿æå¤é¡¹æè´µçç©å( ä¾å¦æ¯ä¸ªçä»·æ ¼ä¸º19.95)ï¼LIMITè§£å³æ¹æ¡ä» ä» æ¾ç¤ºå ¶ä¸ä¸ä¸ªï¼
ä»»å¡ï¼æ¯é¡¹ç©åççæé«ä»·æ ¼æ¯å¤å°ï¼
SELECT article, MAX(price) AS price FROM shop GROUP BY article +---------+-------+ | article | price | +---------+-------+ | 0001 | 3.99 | | 0002 | 10.99 | | 0003 | 1.69 | | 0004 | 19.95 | +---------+-------+
ä»»å¡ï¼å¯¹æ¯é¡¹ç©åï¼æ¾åºæè´µä»·æ ¼çç©åçç»éåã
å¯ä»¥ç¨è¿æ ·ä¸ä¸ªåæ¥è¯¢è§£å³è¯¥é®é¢ï¼
SELECT article, dealer, price
FROM shop s1
WHERE price=(SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article);
ä½ å¯ä»¥æ¸ 空MySQLç¨æ·åé以记å½ç»æï¼ä¸å¿ å°å®ä»¬ä¿åå°å®¢æ·ç«¯ç临æ¶åéä¸ãï¼åè§ 9.3èï¼âç¨æ·åéâ.ï¼ã
ä¾å¦ï¼è¦æ¾åºä»·æ ¼æé«ææä½çç©åçï¼å ¶æ¹æ³æ¯ï¼
mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop; mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price; +---------+--------+-------+ | article | dealer | price | +---------+--------+-------+ | 0003 | D | 1.25 | | 0004 | D | 19.95 | +---------+--------+-------+
å¨MySQLä¸ï¼InnoDBè¡¨æ¯æå¯¹å¤é¨å ³é®åçº¦ææ¡ä»¶çæ£æ¥ãåè§15.2èï¼âInnoDBåå¨å¼æâãè¿å¯ä»¥åè§ 1.8.5.5èï¼âå¤é®âã
åªæ¯èæ¥ä¸¤ä¸ªè¡¨æ¶ï¼ä¸éè¦å¤é¨å ³é®åã对äºé¤InnoDBç±»åç表ï¼å½ä½¿ç¨REFERENCES tbl_name(col_name)åå¥å®ä¹åæ¶å¯ä»¥ä½¿ç¨å¤é¨å ³é®åï¼è¯¥å奿²¡æå®é çææï¼åªä½ä¸ºå¤å¿å½ææ³¨éæ¥æéï¼ä½ ç®åæ£å®ä¹çåæåå¦ä¸ä¸ªè¡¨ä¸çä¸ä¸ªåãæ§è¡è¯¥è¯å¥æ¶ï¼å®ç°ä¸é¢å¾éè¦ï¼
· MySQL䏿§è¡è¡¨tbl_name ä¸çå¨ä½ï¼ä¾å¦ä½ä¸ºä½ æ£å®ä¹ç表ä¸çè¡çå¨ä½çååºèå é¤è¡ï¼æ¢å¥è¯è¯´ï¼è¯¥å¥æ³ä¸ä¼è´ä½¿ON DELETEæON UPDATEè¡ä¸ºï¼å¦æä½ å¨REFERENCESåå¥ä¸åå ¥ON DELETEæON UPDATEåå¥ï¼å°è¢«å¿½ç¥ï¼ã
· è¯¥å¥æ³å¯ä»¥å建ä¸ä¸ªcolumnï¼ä½ä¸å建任ä½ç´¢å¼æå ³é®åã
· 妿ç¨è¯¥å¥æ³å®ä¹InnoDB表ï¼å°ä¼å¯¼è´é误ã
ä½ å¯ä»¥ä½¿ç¨ä½ä¸ºèæ¥åå建çåï¼å¦ä¸æç¤ºï¼
CREATE TABLE person (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(60) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE shirt (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),
PRIMARY KEY (id)
);
INSERT INTO person VALUES (NULL, 'Antonio Paz');
SELECT @last := LAST_INSERT_ID();
INSERT INTO shirt VALUES
(NULL, 'polo', 'blue', @last),
(NULL, 'dress', 'white', @last),
(NULL, 't-shirt', 'blue', @last);
INSERT INTO person VALUES (NULL, 'Lilliana Angelovska');
SELECT @last := LAST_INSERT_ID();
INSERT INTO shirt VALUES
(NULL, 'dress', 'orange', @last),
(NULL, 'polo', 'red', @last),
(NULL, 'dress', 'blue', @last),
(NULL, 't-shirt', 'white', @last);
SELECT * FROM person;
+----+---------------------+
| id | name |
+----+---------------------+
| 1 | Antonio Paz |
| 2 | Lilliana Angelovska |
+----+---------------------+
SELECT * FROM shirt;
+----+---------+--------+-------+
| id | style | color | owner |
+----+---------+--------+-------+
| 1 | polo | blue | 1 |
| 2 | dress | white | 1 |
| 3 | t-shirt | blue | 1 |
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
| 7 | t-shirt | white | 2 |
+----+---------+--------+-------+
SELECT s.* FROM person p, shirt s
WHERE p.name LIKE 'Lilliana%'
AND s.owner = p.id
AND s.color <> 'white';
+----+-------+--------+-------+
| id | style | color | owner |
+----+-------+--------+-------+
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
+----+-------+--------+-------+æç §è¿ç§æ¹å¼ä½¿ç¨ï¼REFERENCESåå¥ä¸ä¼æ¾ç¤ºå¨SHOW CREATE TABLEæDESCRIBEçè¾åºä¸:
SHOW CREATE TABLE shirt\G
*************************** 1. row ***************************
Table: shirt
Create Table: CREATE TABLE `shirt` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`style` enum('t-shirt','polo','dress') NOT NULL,
`color` enum('red','blue','orange','white','black') NOT NULL,
`owner` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1å¨åå®ä¹ä¸ï¼æè¿ç§æ¹å¼ä½¿ç¨REFERENCESä½ä¸ºæ³¨éæâæç¤ºâéç¨äºè¡¨MyISAMåBerkeleyDBã
å¯ä»¥å åå©ç¨ä½¿ç¨åå ³é®åçORåå¥ï¼å¦åANDçå¤çã
ä¸ä¸ªæ¯è¾çµæ´»çä¾åæ¯å¯»æ¾ä¸¤ä¸ªéè¿ORç»åå°ä¸èµ·çå ³é®åï¼
SELECT field1_index, field2_index FROM test_table
WHERE field1_index = '1' OR field2_index = '1'该æ å½¢æ¯å·²ç»ä¼åè¿çãåè§7.2.6èï¼âç´¢å¼åå¹¶ä¼åâã
è¿å¯ä»¥ä½¿ç¨UNIONå°ä¸¤ä¸ªåç¬çSELECTè¯å¥çè¾åºåæå°ä¸èµ·æ¥æ´ææå°è§£å³è¯¥é®é¢ãåè§13.2.7.2èï¼âUNIONè¯æ³
âã
æ¯ä¸ªSELECTåªæç´¢ä¸ä¸ªå ³é®åï¼å¯ä»¥è¿è¡ä¼åï¼
SELECT field1_index, field2_index
FROM test_table WHERE field1_index = '1'
UNION
SELECT field1_index, field2_index
FROM test_table WHERE field2_index = '1';ä¸é¢çä¾åæ¾ç¤ºäºå¦ä½ä½¿ç¨ä½ç»å½æ°æ¥è®¡ç®æ¯ä¸ªæä¸ç¨æ·è®¿é®ç½é¡µç天æ°ã
CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL,
day INT(2) UNSIGNED ZEROFILL);
INSERT INTO t1 VALUES(2000,1,1),(2000,1,20),(2000,1,30),(2000,2,2),
(2000,2,23),(2000,2,23);示ä¾è¡¨ä¸å«æä»£è¡¨ç¨æ·è®¿é®ç½é¡µçå¹´ï¼æï¼æ¥å¼ãå¯ä»¥ä½¿ç¨ä»¥ä¸æ¥è¯¢æ¥ç¡®å®æ¯ä¸ªæç访é®å¤©æ°ï¼
SELECT year,month,BIT_COUNT(BIT_OR(1<<day)) AS days FROM t1
GROUP BY year,month;å°è¿åï¼
+------+-------+------+
| year | month | days |
+------+-------+------+
| 2000 | 01 | 3 |
| 2000 | 02 | 2 |
+------+-------+------+该æ¥è¯¢è®¡ç®äºå¨è¡¨ä¸æå¹´/æç»åçä¸å天æ°ï¼å¯ä»¥èªå¨å»é¤éå¤ç询é®ã
å¯ä»¥éè¿AUTO_INCREMENT屿§ä¸ºæ°çè¡äº§çå¯ä¸çæ è¯ï¼
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
('dog'),('cat'),('penguin'),
('lax'),('whale'),('ostrich');
SELECT * FROM animals;å°è¿åï¼
+----+---------+
| id | name |
+----+---------+
| 1 | dog |
| 2 | cat |
| 3 | penguin |
| 4 | lax |
| 5 | whale |
| 6 | ostrich |
+----+---------+ä½ å¯ä»¥ä½¿ç¨LAST_INSERT_ID()SQL彿°æmysql_insert_id() C API彿°æ¥æ¥è¯¢ææ°çAUTO_INCREMENTå¼ãè¿äºå½æ°ä¸å ·ä½è¿æ¥æå ³ï¼å æ¤å ¶è¿åå¼ä¸ä¼è¢«å ¶å®æ§è¡æå ¥åè½çè¿æ¥å½±åã
注éï¼å¯¹äºå¤è¡æå ¥ï¼LAST_INSERT_ID()åmysql_insert_id()ä»æå ¥ç第ä¸è¡å®é è¿åAUTO_INCREMENTå ³é®åãå¨å¤å¶è®¾ç½®ä¸ï¼éè¿è¯¥å½æ°å¯ä»¥å¨å ¶å®æå¡å¨ä¸æ£ç¡®å¤å¶å¤è¡æå ¥ã
对äºMyISAMåBDB表ï¼ä½ å¯ä»¥å¨ç¬¬äºæ æå®AUTO_INCREMENT以åå¤åç´¢å¼ãæ¤æ¶ï¼AUTO_INCREMENTåçæçå¼çè®¡ç®æ¹æ³ä¸ºï¼MAX(auto_increment_column) + 1 WHERE prefix=given-prefixã妿æ³è¦å°æ°æ®æ¾å ¥å°æåºçç»ä¸å¯ä»¥ä½¿ç¨è¯¥æ¹æ³ã
CREATE TABLE animals (
grp ENUM('fish','mammal','bird') NOT NULL,
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (grp,id)
);
INSERT INTO animals (grp,name) VALUES
('mammal','dog'),('mammal','cat'),
('bird','penguin'),('fish','lax'),('mammal','whale'),
('bird','ostrich');
SELECT * FROM animals ORDER BY grp,id;å°è¿åï¼
+--------+----+---------+
| grp | id | name |
+--------+----+---------+
| fish | 1 | lax |
| mammal | 1 | dog |
| mammal | 2 | cat |
| mammal | 3 | whale |
| bird | 1 | penguin |
| bird | 2 | ostrich |
+--------+----+---------+请注æå¨è¿ç§æ åµä¸ï¼AUTO_INCREMENT忝å¤åç´¢å¼çä¸é¨åï¼ï¼å¦æä½ å¨ä»»ä½ç»ä¸å 餿æå¤§AUTO_INCREMENTå¼çè¡ï¼å°ä¼éæ°ç¨å°AUTO_INCREMENTå¼ã对äºMyISAM表ä¹å¦æ¤,对äºè¯¥è¡¨ä¸è¬ä¸éå¤ä½¿ç¨AUTO_INCREMENTå¼ã
妿AUTO_INCREMENT忝å¤ç´¢å¼çä¸é¨åï¼MySQLå°ä½¿ç¨è¯¥ç´¢å¼çæä»¥AUTO_INCREMENTåå¼å§çåºåå¼ããä¾å¦ï¼å¦æanimalsè¡¨å«æç´¢å¼PRIMARY KEY (grp, id)åINDEX(id)ï¼MySQLçæåºå弿¶å°å¿½ç¥PRIMARY KEYãç»ææ¯ï¼è¯¥è¡¨å å«ä¸ä¸ªå个çåºåï¼è䏿¯ç¬¦ågrpå¼çåºåã
è¦æ³ä»¥AUTO_INCREMENTå¼å¼å§è䏿¯1ï¼ä½ å¯ä»¥éè¿CREATE TABLEæALTER TABLEæ¥è®¾ç½®è¯¥å¼ï¼å¦ä¸æç¤º:
mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;
å ³äºAUTO_INCREMENTç详ç»ä¿¡æ¯ï¼
· å¦ä½ä¸ºåæå®AUTO_INCREMENT屿§ï¼13.1.5èï¼âCREATE TABLEè¯æ³âå 13.1.2èï¼âALTER TABLEè¯æ³âã
· AUTO_INCREMENTçå¨ä½åå³äºSQL模å¼ï¼5.3.2èï¼âSQLæå¡å¨æ¨¡å¼âã
· æ¾åºå«æææ°AUTO_INCREMENTå¼çè¡ï¼12.1.3èï¼âæ¯è¾å½æ°åæä½ç¬¦âã
· 设置å°ç¨å°çAUTO_INCREMENTå¼: 13.5.3èï¼âSETè¯æ³â ã
· AUTO_INCREMENTåå¤å¶ï¼6.7èï¼âå¤å¶ç¹æ§åå·²ç¥é®é¢â.
· AUTO_INCREMENTç¸å ³çå¯ç¨äºå¤å¶çServer-systemåé(auto_increment_incrementåauto_increment_offset)ï¼5.3.3èï¼âæå¡å¨ç³»ç»åéâã
è¿ä¸ªé¡¹ç®æ¯Institute of Environmental Medicine at Karolinska Institutet Stockholm å the Section on Clinical Research in Aging and Psychology at the University of Southern Californiaçåä½é¡¹ç®ã
该项ç®å æ¬çéé¨åï¼å³éè¿çµè¯å访å¨çå ¸è¶ è¿ 65 å²çææåªçãæ»¡è¶³æç§æ åçåªçè¿å ¥ä¸ä¸é¶æ®µãå¨ä¸ä¸é¶æ®µä¸ï¼å»ç/æ¤å£«å°ç»å°è®¿é®æ³åå çåªçãé¨åæ£æ¥å æ¬ç©çæ£æ¥åç¥ç»ãå¿çæ£æ¥ãå®éªå®¤è¯éªãç¥ç»æåãå¿çç¶åµè¯ä¼°åå®¶æå岿éãå¹¶ä¸ï¼åºæ ¹æ®å»çåç¯å¢é£é©å ç´ æ¥æéæ°æ®ã
å¯ä»ä»¥ä¸é¾æ¥æ¾å°åªçç ç©¶çæ´å¤ä¿¡æ¯ï¼
http://www.mep.ki.se/twinreg/index_en.html
ç¨ä¸ä¸ªç¨PerlåMySQLç¼åçwebæ¥å£æ¥ç®¡ç项ç®çåé¢é¨åã
æ¯å¤©æä¸ææä¼è°çæ°æ®è¢«ç§»å ¥ä¸ä¸ªMySQLæ°æ®åºã
ä¸åæ¥è¯¢ç¨æ¥å³å®è°è¿å ¥é¡¹ç®ç第äºé¨åï¼
SELECT
CONCAT(p1.id, p1.tvab) + 0 AS tvid,
CONCAT(p1.christian_name, ' ', p1.surname) AS Name,
p1.postal_code AS Code,
p1.city AS City,
pg.abrev AS Area,
IF(td.participation = 'Aborted', 'A', ' ') AS A,
p1.dead AS dead1,
l.event AS event1,
td.suspect AS tsuspect1,
id.suspect AS isuspect1,
td.severe AS tsevere1,
id.severe AS isevere1,
p2.dead AS dead2,
l2.event AS event2,
h2.nurse AS nurse2,
h2.doctor AS doctor2,
td2.suspect AS tsuspect2,
id2.suspect AS isuspect2,
td2.severe AS tsevere2,
id2.severe AS isevere2,
l.finish_date
FROM
twin_project AS tp
/* For Twin 1 */
LEFT JOIN twin_data AS td ON tp.id = td.id
AND tp.tvab = td.tvab
LEFT JOIN informant_data AS id ON tp.id = id.id
AND tp.tvab = id.tvab
LEFT JOIN harmony AS h ON tp.id = h.id
AND tp.tvab = h.tvab
LEFT JOIN lentus AS l ON tp.id = l.id
AND tp.tvab = l.tvab
/* For Twin 2 */
LEFT JOIN twin_data AS td2 ON p2.id = td2.id
AND p2.tvab = td2.tvab
LEFT JOIN informant_data AS id2 ON p2.id = id2.id
AND p2.tvab = id2.tvab
LEFT JOIN harmony AS h2 ON p2.id = h2.id
AND p2.tvab = h2.tvab
LEFT JOIN lentus AS l2 ON p2.id = l2.id
AND p2.tvab = l2.tvab,
person_data AS p1,
person_data AS p2,
postal_groups AS pg
WHERE
/* p1 gets main twin and p2 gets his/her twin. */
/* ptvab is a field inverted from tvab */
p1.id = tp.id AND p1.tvab = tp.tvab AND
p2.id = p1.id AND p2.ptvab = p1.tvab AND
/* Just the screening survey */
tp.survey_no = 5 AND
/* Skip if partner died before 65 but allow emigration (dead=9) */
(p2.dead = 0 OR p2.dead = 9 OR
(p2.dead = 1 AND
(p2.death_date = 0 OR
(((TO_DAYS(p2.death_date) - TO_DAYS(p2.birthday)) / 365)
>= 65))))
AND
(
/* Twin is suspect */
(td.future_contact = 'Yes' AND td.suspect = 2) OR
/* Twin is suspect - Informant is Blessed */
(td.future_contact = 'Yes' AND td.suspect = 1
AND id.suspect = 1) OR
/* No twin - Informant is Blessed */
(ISNULL(td.suspect) AND id.suspect = 1
AND id.future_contact = 'Yes') OR
/* Twin broken off - Informant is Blessed */
(td.participation = 'Aborted'
AND id.suspect = 1 AND id.future_contact = 'Yes') OR
/* Twin broken off - No inform - Have partner */
(td.participation = 'Aborted' AND ISNULL(id.suspect)
AND p2.dead = 0))
AND
l.event = 'Finished'
/* Get at area code */
AND SUBSTRING(p1.postal_code, 1, 2) = pg.code
/* Not already distributed */
AND (h.nurse IS NULL OR h.nurse=00 OR h.doctor=00)
/* Has not refused or been aborted */
AND NOT (h.status = 'Refused' OR h.status = 'Aborted'
OR h.status = 'Died' OR h.status = 'Other')
ORDER BY
tvid;
ä¸äºè§£éï¼
· CONCAT(p1.id, p1.tvab) + 0 AS tvid
æä»¬æ³è¦å¨idåtvabçè¿æ¥ä¸ä»¥æ°åé¡ºåºæåºãç»æå 0使å¾MySQLæç»æå为ä¸ä¸ªæ°åã
· åid
è¿æ è¯ä¸å¯¹åªçã宿¯ææè¡¨ä¸çä¸ä¸ªé®ã
· åtvab
è¿æ è¯åªçä¸çä¸ä¸ªãå®çå¼ä¸º1æ2ã
· åptvab
è¿æ¯tvabçä¸ä¸ªéè¿ç®ãå½tvabæ¯1ï¼å®æ¯2ï¼åä¹äº¦ç¶ãå®ç¨æ¥ä¿åè¾å ¥å¹¶ä¸ä½¿MySQLçä¼åæ¥è¯¢æ´å®¹æã
è¿ä¸ªæ¥è¯¢è¡¨æï¼ææ ·ç¨èç»(p1åp2)ä»åä¸ä¸ªè¡¨ä¸æ¥æ¾è¡¨ãå¨ä¾åä¸ï¼è¿è¢«ç¨æ¥æ£æ¥åªççä¸ä¸ªæ¯å¦å¨65å²åæ»äºã妿妿¤ï¼è¡ä¸è¿åå¼ã
ä¸è¿°ææåªçä¿¡æ¯åå¨äºææè¡¨ä¸ãæä»¬å¯¹id,tvabï¼ææè¡¨ï¼åid,ptvab (person_data) ä¸éç¨é®ä»¥ä½¿æ¥è¯¢æ´å¿«ã
卿们çç产æºå¨ä¸(ä¸å°200MHz UltraSPARC)ï¼è¿ä¸ªæ¥è¯¢è¿å大约 150-200 è¡å¹¶ä¸æ¶é´ä¸è¶ è¿ä¸ç§ã
表 | è¡æ° |
person_data | 71074 |
lentus | 5291 |
twin_project | 5286 |
twin_data | 2012 |
informant_data | 663 |
harmony | 381 |
postal_groups | 100 |
SELECT
t1.event,
t2.event,
COUNT(*)
FROM
lentus AS t1,
lentus AS t2,
twin_project AS tp
WHERE
/* We are looking at one pair at a time */
t1.id = tp.id
AND t1.tvab=tp.tvab
AND t1.id = t2.id
/* Just the screening survey */
AND tp.survey_no = 5
/* This makes each pair only appear once */
AND t1.tvab='1' AND t2.tvab='2'
GROUP BY
t1.event, t2.event;ä½ å¯ä»¥å°ä»¥ä¸å 容æ¾å°Apacheé ç½®æä»¶ä¸ï¼æ´æ¹Apacheæ¥å¿æ ¼å¼ï¼ä½¿MySQLæ´å®¹æè¯»åï¼
LogFormat \
"\"%h\",%{%Y%m%d%H%M%S}t,%>s,\"%b\",\"%{Content-Type}o\", \
\"%U\",\"%{Referer}i\",\"%{User-Agent}i\""è¦æ³å°è¯¥æ ¼å¼çæ¥å¿æä»¶è£ è½½å°MySQLï¼ä½ å¯ä»¥ä½¿ç¨ä»¥ä¸è¯å¥:
LOAD DATA INFILE '/local/access_log' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\'æå建ç表ä¸çååºä¸åå ¥æ¥å¿æä»¶çLogFormatè¡å¯¹åºã
è¿æ¯MySQLåèæåçç¿»è¯çæ¬ï¼å ³äºMySQLåèæåï¼è¯·è®¿é®dev.mysql.comã åå§åèæåä¸ºè±æçï¼ä¸è±æçåèæåç¸æ¯ï¼æ¬ç¿»è¯çå¯è½ä¸æ¯ææ°çã
|
Contact Us Legal Notices Order Services Online Pantek Home Privacy Policy IT news Site Map Pantek Library |