站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > MySQL 5.1参考手册中文版

Chapter聽3.聽Tutorial - MySQL 5.1参考手册中文版

绗3绔狅細鏁欑▼

鏈珷閫氳繃婕旂ず濡備綍浣跨敤mysql瀹㈡埛绋嬪簭鍒涢犲拰浣跨敤涓涓畝鍗曠殑鏁版嵁搴擄紝鎻愪緵涓涓MySQL鐨勫叆闂ㄦ暀绋嬨mysql锛堟湁鏃剁О涓衡滅粓绔洃瑙嗗櫒鈥濇垨鍙槸鈥滅洃瑙嗏濓級鏄竴涓氦浜掑紡绋嬪簭锛屽厑璁镐綘杩炴帴涓涓MySQL鏈嶅姟鍣紝杩愯鏌ヨ骞跺療鐪嬬粨鏋溿mysql鍙互鐢ㄤ簬鎵规ā寮忥細浣犻鍏堟妸鏌ヨ鏀惧湪涓涓枃浠朵腑锛岀劧鍚庡憡璇mysql鎵ц鏂囦欢鐨勫唴瀹广傛湰绔犲皢浠嬬粛浣跨敤mysql鐨勪袱涓柟娉曘

瑕佹兂鏌ョ湅鐢mysql鎻愪緵鐨勯夋嫨椤圭洰琛紝鍙互鐢--help閫夐」鏉ヨ皟鐢細

shell> mysql --help

鏈珷鍋囧畾mysql宸茬粡琚畨瑁呭湪浣犵殑鏈哄櫒涓婏紝骞朵笖鏈変竴涓MySQL鏈嶅姟鍣ㄥ彲浠ヨ繛鎺ャ傚惁鍒欙紝璇疯仈缁MySQL绠$悊鍛樸傦紙濡傛灉鏄鐞嗗憳锛屽垯闇瑕佹煡闃呮湰鎵嬪唽鐨勫叾瀹冪珷鑺傦紝渚嬪绗5绔狅細鏁版嵁搴撶鐞銆傦級

鏈珷鎻忚堪寤虹珛鍜屼娇鐢ㄤ竴涓暟鎹簱鐨勫叏杩囩▼銆傚鏋滀綘浠呬粎瀵硅闂竴涓凡缁忓瓨鍦ㄧ殑鏁版嵁搴撴劅鍏磋叮锛屽彲浠ヨ烦杩囨弿杩版庢牱鍒涘缓鏁版嵁搴撳強瀹冩墍鍖呭惈鐨勮〃鐨勭珷鑺傘

鐢变簬鏈珷鏄竴涓暀绋嬶紝鐪佺暐浜嗚澶氱粏鑺傘傚叧浜庤繖閲屾墍娑夊強鐨勪富棰樼殑璇︾粏淇℃伅锛岃鏌ラ槄鏈墜鍐岀殑鐩稿叧绔犺妭銆

3.1. 杩炴帴涓庢柇寮鏈嶅姟鍣

涓轰簡杩炴帴鏈嶅姟鍣紝褰撹皟鐢mysql鏃讹紝閫氬父闇瑕佹彁渚涗竴涓MySQL鐢ㄦ埛鍚嶅苟涓斿緢鍙兘闇瑕佷竴涓 瀵嗙爜銆傚鏋滄湇鍔″櫒杩愯鍦ㄧ櫥褰曟湇鍔″櫒涔嬪鐨勫叾瀹冩満鍣ㄤ笂锛岃繕闇瑕佹寚瀹氫富鏈哄悕銆傝仈绯荤鐞嗗憳浠ユ壘鍑鸿繘琛岃繛鎺ユ墍浣跨敤鐨勫弬鏁 (鍗筹紝杩炴帴鐨勪富鏈恒佺敤鎴峰悕鍜屼娇鐢ㄧ殑瀵嗙爜)銆傜煡閬撴纭殑鍙傛暟鍚庯紝鍙互鎸夌収浠ヤ笅鏂瑰紡杩涜杩炴帴锛
shell> mysql -h host -u user -p
Enter password: ********

hostuser鍒嗗埆浠h〃MySQL鏈嶅姟鍣ㄨ繍琛岀殑涓绘満鍚嶅拰MySQL璐︽埛鐢ㄦ埛鍚嶃傝缃椂鏇挎崲涓烘纭殑鍊笺******** 浠h〃浣犵殑瀵嗙爜锛涘綋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鐢ㄨ〃鏍(琛屽拰鍒)鏂瑰紡鏄剧ず鏌ヨ杈撳嚭銆傜涓琛屽寘鍚垪鐨勬爣绛撅紝闅忓悗鐨勮鏄煡璇㈢粨鏋溿傞氬父锛屽垪鏍囩鏄綘鍙栬嚜鏁版嵁搴撹〃鐨勫垪鐨勫悕瀛椼傚鏋滀綘姝e湪妫绱竴涓〃杈惧紡鑰岄潪琛ㄥ垪鐨勫(濡傚垰鎵嶇殑渚嬪瓙)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>鍙樹负->锛岃繖姝f槸mysql濡備綍鎸囧嚭瀹冩病瑙佸埌瀹屾暣鐨勮鍙ュ苟涓旀鍦ㄧ瓑寰呭墿浣欑殑閮ㄥ垎銆傛彁绀虹鏄綘鐨勬湅鍙嬶紝鍥犱负瀹冩彁渚涙湁浠峰肩殑鍙嶉锛屽鏋滀娇鐢ㄨ鍙嶉锛屽皢鎬绘槸鐭ラ亾mysql姝e湪绛夊緟浠涔堛

濡傛灉浣犲喅瀹氫笉鎯虫墽琛屾鍦ㄨ緭鍏ヨ繃绋嬩腑鐨勪竴涓懡浠わ紝杈撳叆\c鍙栨秷瀹冿細

mysql> SELECT
    -> USER()
    -> \c
mysql>

杩欓噷涔熻娉ㄦ剰鎻愮ず绗︼紝鍦ㄤ綘杈撳叆\c浠ュ悗锛屽畠鍒囨崲鍥炲埌mysql>锛屾彁渚涘弽棣堜互琛ㄦ槑mysql鍑嗗鎺ュ彈涓涓柊鍛戒护銆

涓嬭〃鏄剧ず鍑哄彲浠ョ湅瑙佺殑鍚勪釜鎻愮ず绗﹀苟绠杩板畠浠墍琛ㄧず鐨mysql鐨勭姸鎬侊細

鎻愮ず绗

鍚箟

mysql>

鍑嗗濂芥帴鍙楁柊鍛戒护銆

->

绛夊緟澶氳鍛戒护鐨勪笅涓琛屻

'>

绛夊緟涓嬩竴琛岋紝绛夊緟浠ュ崟寮曞彿(')寮濮嬬殑瀛楃涓茬殑缁撴潫銆

">

绛夊緟涓嬩竴琛岋紝绛夊緟浠ュ弻寮曞彿(")寮濮嬬殑瀛楃涓茬殑缁撴潫銆

`>

绛夊緟涓嬩竴琛岋紝绛夊緟浠ュ弽鏂滅偣(`)寮濮嬬殑璇嗗埆绗︾殑缁撴潫銆

/*>

绛夊緟涓嬩竴琛岋紝绛夊緟浠/*寮濮嬬殑娉ㄩ噴鐨勭粨鏉熴

褰撲綘鎵撶畻鍦ㄤ竴涓崟琛屼笂鍙戝嚭涓涓懡浠ゆ椂锛岄氬父浼氣滃伓鐒垛濆嚭鐜板琛岃鍙ワ紝浣嗘槸娌℃湁缁堟鍒嗗彿銆傚湪杩欑鎯呭喌涓紝mysql绛夊緟杩涗竴姝ヨ緭鍏ワ細

mysql> SELECT USER()
    ->

濡傛灉鍑虹幇杩欑鎯呭喌(浣犺涓鸿緭瀹屼簡璇彞锛屼絾鏄彧鏈変竴涓->鎻愮ず绗﹀搷搴)锛屽緢鍙兘mysql姝e湪绛夊緟鍒嗗彿銆傚鏋滀綘娌℃湁娉ㄦ剰鍒版彁绀虹鐨勬彁绀猴紝鍦ㄦ剰璇嗗埌浣犻渶瑕佸仛浠涔堜箣鍓嶏紝浣犲彲鑳戒細鍛嗗潗涓浼氬効銆傝緭鍏ヤ竴涓垎鍙峰畬鎴愯鍙ワ紝mysql灏嗘墽琛岋細

mysql> SELECT USER()
    -> ;
+---------------+
| USER()        |
+---------------+
| jon@localhost |
+---------------+

鍦ㄥ瓧绗︿覆鏀堕泦鏈熼棿灏嗗嚭鐜 '> "> 鎻愮ず绗︼紙鎻愮ずMySQL姝g瓑寰呭瓧绗︿覆鐨勭粨鏉燂級銆傚湪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鐨勮锛佽繖鍙兘浠や汉鐩稿綋鍥版儜锛岀壒鍒槸濡傛灉鍙栨秷褰撳墠鍛戒护鍓嶈繕涓嶇煡閬撲綘闇瑕佹彁渚涚粓姝㈠紩鍙枫

3.3. 鍒涘缓骞朵娇鐢ㄦ暟鎹簱

鐭ラ亾鎬庢牱杈撳叆鍛戒护锛屼究鍙互璁块棶鏁版嵁搴撲簡銆

鍋囧畾鍦ㄤ綘鐨勫(浣犵殑鈥滃姩鐗╁洯鈥)涓湁寰堝瀹犵墿锛屽苟涓斾綘鎯宠窡韪叧浜庡畠浠悇绉嶇被鍨嬬殑淇℃伅銆備綘鍙互閫氳繃鍒涘缓琛ㄦ潵淇濆瓨浣犵殑鏁版嵁骞舵牴鎹墍闇瑕佺殑淇℃伅瑁呰浇浠栦滑锛岀劧鍚庝綘鍙互浠庤〃涓绱㈡暟鎹潵鍥炵瓟鍏充簬鍔ㄧ墿涓嶅悓绉嶇被鐨勯棶棰樸傛湰鑺傛樉绀哄浣曞仛鍒版墍鏈夎繖浜涗簨鎯咃細

         鍒涘缓鏁版嵁搴

         鍒涘缓鏁版嵁搴撹〃

         瑁呰浇鏁版嵁鍒版暟鎹簱琛

         浠ュ悇绉嶆柟娉曚粠琛ㄤ腑妫绱㈡暟鎹

         浣跨敤澶氫釜琛

鍔ㄧ墿鍥暟鎹簱寰堢畝鍗(鐗规剰鐨)锛屼絾鏄笉闅炬妸瀹冩兂璞℃垚鍙兘鐢ㄥ埌绫讳技鏁版嵁搴撶殑鐪熷疄涓栫晫鎯呭喌銆備緥濡傦紝鍐滃か鍙互浣跨敤杩欐牱鐨勪竴涓暟鎹簱鏉ヨ拷韪鐣滐紝鎴栬呭吔鍖诲彲浠ョ敤瀹冭窡韪梾鐣滆褰曘備粠MySQL缃戝潃涓婂彲浠ヨ幏寰楀悗闈㈢珷鑺備腑灏嗙敤鍒扮殑鍚湁閮ㄥ垎鏌ヨ鍜屾牱渚嬫暟鎹殑鍔ㄧ墿鍥垎鍙戙傛湁tar鍘嬬缉鏍煎紡 (http://www.mysql.com/Downloads/Contrib/Examples/menagerie.tar.gz)Zip鍘嬬缉鏍煎紡 (http://www.mysql.com/Downloads/Contrib/Examples/menagerie.zip)

浣跨敤SHOW璇彞鎵惧嚭鏈嶅姟鍣ㄤ笂褰撳墠瀛樺湪浠涔堟暟鎹簱锛

mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql    |
| test     |
| tmp      |
+----------+

鍙兘浣犵殑鏈哄櫒涓婄殑鏁版嵁搴撳垪琛ㄦ槸涓嶅悓鐨勶紝浣嗘槸寰堝彲鑳芥湁mysqltest鏁版嵁搴撱mysql鏄繀闇鐨勶紝鍥犱负瀹冩弿杩扮敤鎴疯闂潈闄愶紝test鏁版嵁搴撶粡甯镐綔涓虹敤鎴疯瘯韬墜鐨勫伐浣滃尯銆

璇锋敞鎰忓鏋滄病鏈SHOW DATABASES鏉冮檺锛屽垯涓嶈兘鐪嬭鎵鏈夋暟鎹簱銆傚弬瑙13.5.1.3鑺傦紝鈥淕RANT鍜孯EVOKE璇硶鈥

濡傛灉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鏄墍杩炴帴鐨勬湇鍔″櫒鎵鍦ㄧ殑涓绘満銆

3.3.1. 鍒涘缓骞堕夋嫨鏁版嵁搴

濡傛灉绠$悊鍛樺湪璁剧疆鏉冮檺鏃朵负浣犲垱寤轰簡鏁版嵁搴擄紝浣犲彲浠ュ紑濮嬩娇鐢ㄥ畠銆傚惁鍒欙紝浣犻渶瑕佽嚜宸卞垱寤烘暟鎹簱锛
mysql> CREATE DATABASE menagerie;

Unix涓嬶紝鏁版嵁搴撳悕绉版槸鍖哄垎澶у皬鍐欑殑(涓嶅儚SQL鍏抽敭瀛)锛屽洜姝や綘蹇呴』鎬绘槸浠menagerie璁块棶鏁版嵁搴擄紝鑰屼笉鑳界敤MenagerieMENAGERIE鎴栧叾瀹冧竴浜涘彉閲忋傚琛ㄥ悕涔熸槸杩欐牱鐨勩傦紙鍦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琛紝骞朵笖瀹冨簲璇ュ寘鍚紝鏈灏戯紝姣忎釜鍔ㄧ墿鐨勫悕瀛椼傚洜涓哄悕瀛楁湰韬笉鏄緢鏈夎叮锛岃〃搴旇鍖呭惈鍙﹀鐨勪俊鎭備緥濡傦紝濡傛灉鍦ㄤ綘璞㈠吇瀹犵墿鐨勫搴湁瓒呰繃涓涓汉锛屼綘鍙兘鎯宠鍒楀嚭姣忎釜鍔ㄧ墿鐨勪富浜恒備綘鍙兘涔熸兂瑕佽褰曚緥濡傜绫诲拰鎬у埆鐨勪竴浜涘熀鏈殑鎻忚堪淇℃伅銆

骞撮緞鍛紵閭e彲鑳芥湁瓒o紝浣嗘槸瀛樺偍鍒颁竴涓暟鎹簱涓笉鏄竴浠跺ソ浜嬫儏銆傚勾榫勯殢鐫鏃堕棿娴侀濊屽彉鍖栵紝杩欐剰鍛崇潃浣犲皢瑕佷笉鏂湴鏇存柊浣犵殑璁板綍銆傜浉鍙, 瀛樺偍涓涓浐瀹氬间緥濡傜敓鏃ユ瘮杈冨ソ锛岄偅涔堬紝鏃犺浣曟椂浣犻渶瑕佸勾榫勶紝鍙互浠ュ綋鍓嶆棩鏈熷拰鍑虹敓鏃ユ湡涔嬮棿鐨勫樊鏉ヨ绠楀畠銆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閫傚悎浜nameownerspecies鍒楋紝鍥犱负鍒楀兼槸鍙橀暱鐨勩傝繖浜涘垪鐨勯暱搴︿笉蹇呴兘鐩稿悓锛岃屼笖涓嶅繀鏄20銆備綘鍙互鎸戦変粠165535鐨勪换浣曢暱搴︼紝浠庝腑閫夋嫨涓涓渶鍚堢悊鐨勫笺傦紙濡傛灉閫夋嫨寰椾笉鍚堥傦紝鍚庢潵璇佹槑浣犻渶瑕佷竴涓洿闀跨殑瀛楁锛MySQL鎻愪緵涓涓ALTER TABLE璇彞銆傦級

鍙互鐢ㄥ绉嶇被鍨嬬殑鍊兼潵琛ㄧず鍔ㄧ墿璁板綍涓殑鎬у埆锛屼緥濡傦紝"m""f"锛屾垨"male""female"銆備娇鐢ㄥ崟瀛楃"m""f"鏄渶绠鍗曠殑鏂规硶銆

寰堟樉鐒讹紝birthdeath鍒楀簲閫夌敤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锛屼緥濡傦紝濡傛灉浣犲繕璁拌〃涓殑鍒楃殑鍚嶇О鎴栫被鍨嬫椂銆

3.3.3. 灏嗘暟鎹鍏ヨ〃涓

鍒涘缓琛ㄥ悗锛岄渶瑕佸~鍏ュ唴瀹广傞氳繃LOAD DATAINSERT璇彞鍙互瀹屾垚璇ヤ换鍔°

鍋囧畾浣犵殑瀹犵墿绾綍鎻忚堪濡備笅銆傦紙鍋囧畾鍦MySQL涓湡鏈涚殑鏃ユ湡鏍煎紡鏄YYYY-MM-DD锛涜繖鍙兘涓庝綘涔犳儻鐨勪笉鍚屻傦級

name

owner

species

sex

birth

death

Fluffy

Harold

cat

f

1993-02-04

 

Claws

Gwen

cat

m

1994-03-17

 

Buffy

Harold

dog

f

1989-05-13

 

Fang

Benny

dog

m

1990-08-27

 

Bowser

Diane

dog

m

1979-08-31

1995-07-29

Chirpy

Gwen

bird

f

1998-09-11

 

Whistler

Gwen

bird

 

1997-12-09

 

Slim

Benny

snake

m

1996-04-29

 

鍥犱负浣犳槸浠庝竴涓┖琛ㄥ紑濮嬬殑锛屽~鍏呭畠鐨勪竴涓畝鏄撴柟娉曟槸鍒涘缓涓涓枃鏈枃浠讹紝姣忎釜鍔ㄧ墿鍚勪竴琛岋紝鐒跺悗鐢ㄤ竴涓鍙ュ皢鏂囦欢鐨勫唴瀹硅杞藉埌琛ㄤ腑銆

浣犲彲浠ュ垱寤轰竴涓枃鏈枃浠pet.txt锛屾瘡琛屽寘鍚竴涓褰曪紝鐢ㄥ畾浣嶇(tab)鎶婂煎垎寮锛屽苟涓斾互CREATE TABLE璇彞涓垪鍑虹殑鍒楁搴忕粰鍑恒傚浜庝涪澶辩殑鍊(渚嬪鏈煡鐨勬у埆锛屾垨浠嶇劧娲荤潃鐨勫姩鐗╃殑姝讳骸鏃ユ湡)锛屼綘鍙互浣跨敤NULL鍊笺備负浜嗗湪浣犵殑鏂囨湰鏂囦欢涓〃绀鸿繖浜涘唴瀹癸紝浣跨敤\N锛堝弽鏂滅嚎锛屽瓧姣N銆備緥濡傦紝Whistler楦熺殑璁板綍搴斾负(杩欓噷鍊间箣闂寸殑绌虹櫧鏄竴涓畾浣嶇)

name

owner

species

sex

birth

death

Whistler

Gwen

bird

\N

1997-12-09

\N

瑕佹兂灏嗘枃鏈枃浠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 XApple鏈轰笂锛屽簲浣跨敤琛岀粨鏉熺'\r'銆傦級

濡傛灉浣犳効鎰忥紝浣犺兘鏄庣‘鍦板湪LOAD DATA璇彞涓寚鍑哄垪鍊肩殑鍒嗛殧绗﹀拰琛屽熬鏍囪锛屼絾鏄粯璁ゆ爣璁版槸瀹氫綅绗﹀拰鎹㈣绗︺傝繖瀵硅鍏ユ枃浠pet.txt鐨勮鍙ュ凡缁忚冻澶熴

濡傛灉璇ヨ鍙ュけ璐ワ紝鍙兘鏄綘瀹夎鐨MySQL涓嶄笌浣跨敤榛樿鍊肩殑鏈湴鏂囦欢鍏煎銆傚叧浜庡浣曟洿鏀硅鍙傝5.6.4鑺傦紝鈥淟OAD DATA LOCAL瀹夊叏闂

濡傛灉鎯宠涓娆″鍔犱竴涓柊璁板綍锛屽彲浠ヤ娇鐢INSERT璇彞銆傛渶绠鍗曠殑褰㈠紡鏄紝鎻愪緵姣忎竴鍒楃殑鍊硷紝鍏堕『搴忎笌CREATE TABLE璇彞涓垪鐨勯『搴忕浉鍚屻傚亣瀹Diane鎶婁竴鍙柊浠撻紶鍛藉悕涓Puffball锛屼綘鍙互浣跨敤涓嬮潰鐨INSERT璇彞娣诲姞涓鏉℃柊璁板綍锛

mysql> INSERT INTO pet
    -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

娉ㄦ剰锛岃繖閲屽瓧绗︿覆鍜屾棩鏈熷煎潎涓哄紩鍙锋墿璧锋潵鐨勫瓧绗︿覆銆傚彟澶栵紝鍙互鐩存帴鐢INSERT璇彞鎻掑叆NULL浠h〃涓嶅瓨鍦ㄧ殑鍊笺備笉鑳戒娇鐢LOAD DATA涓墍绀虹殑鐨\N

浠庤繖涓緥瀛愶紝浣犲簲璇ヨ兘鐪嬪埌娑夊強寰堝鐨勯敭鍏ョ敤澶氫釜INSERT璇彞鑰岄潪鍗曚釜LOAD DATA璇彞瑁呰浇浣犵殑鍒濆璁板綍銆

3.3.4. 浠庤〃妫绱俊鎭

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

鑷冲皯鏈変袱绉嶄慨姝f柟娉曪細

         缂栬緫鏂囦欢pet.txt鏀规閿欒锛岀劧鍚庝娇鐢DELETELOAD DATA娓呯┖骞堕噸鏂拌杞借〃:

                mysql> DELETE FROM pet;
                mysql> LOAD DATA LOCAL INFILE 'pet.txt' INTO TABLE pet;

鐒惰, 濡傛灉杩欐牱鎿嶅仛锛屽繀椤婚噸鏂拌緭鍏Puffball璁板綍銆

         鐢ㄤ竴涓UPDATE璇彞浠呬慨姝i敊璇褰曪細

                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 |
+--------+-------+---------+------+------------+------------+

杈撳嚭璇佸疄姝g‘鐨勫勾浠借褰曚负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  |
+----------+-------+---------+------+------------+-------+

ANDOR鍙互娣风敤锛屼絾ANDOR鍏锋湁鏇撮珮鐨勪紭鍏堢骇銆傚鏋滀綘浣跨敤涓や釜鎿嶄綔绗︼紝浣跨敤鍦嗘嫭鍙锋寚鏄庡浣曞鏉′欢杩涜鍒嗙粍鏄竴涓ソ涓绘剰锛

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. 閫夋嫨鐗规畩鍒

濡傛灉浣犱笉鎯崇湅鍒拌〃涓殑鎵鏈夎锛屽氨鍛藉悕浣犳劅鍏磋叮鐨勫垪锛岀敤閫楀彿鍒嗗紑銆備緥濡傦紝濡傛灉浣犳兂瑕佺煡閬撲綘鐨勫姩鐗╀粈涔堟椂鍊欏嚭鐢熺殑锛岄夋嫨namebirth鍒楋細
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 |
+----------+------------+

鍦ㄥ瓧绗︾被鍨嬪垪涓婏紝涓庢墍鏈夊叾浠栨瘮杈冩搷浣滅被浼硷紝鍒嗙被鍔熻兘姝e父鎯呭喌涓嬫槸浠ュ尯鍒嗗ぇ灏忓啓鐨勬柟寮忔墽琛岀殑銆傝繖鎰忓懗鐫锛屽浜庣瓑鍚屼絾澶у皬鍐欎笉鍚岀殑鍒楋紝骞舵湭瀹氫箟鍏堕『搴忋傚浜庢煇涓鍒楋紝鍙互浣跨敤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鍊肩殑琛ㄨ揪寮忛儴鍒嗙殑鍊间竴鑸负10锛屽鏋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鏉ョ‘瀹氭槸鍝簺鍔ㄧ墿锛岀劧鍚庯紝瀵逛簬閭d簺闈NULL鍊肩殑鍔ㄧ墿锛岄渶瑕佽绠楀嚭deathbirth鍊间箣闂寸殑宸細

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鑺傦紝鈥淣ULL鍊兼搷浣

濡傛灉浣犳兂瑕佺煡閬撳摢涓姩鐗╀笅涓湀杩囩敓鏃ワ紝鎬庝箞鍔烇紵瀵逛簬杩欑被璁$畻锛屽勾鍜屽ぉ鏄棤鍏崇殑锛屼綘鍙渶瑕佹彁鍙birth鍒楃殑鏈堜唤閮ㄥ垎銆MySQL鎻愪緵鍑犱釜鏃ユ湡閮ㄥ垎鐨勬彁鍙栧嚱鏁帮紝渚嬪YEAR( )MONTH( )DAYOFMONTH( )銆傚湪杩欓噷MONTH()鏄傚悎鐨勫嚱鏁般備负浜嗙湅瀹冩庢牱宸ヤ綔锛岃繍琛屼竴涓畝鍗曠殑鏌ヨ锛屾樉绀birthMONTH(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鏈堬紝閭d箞鏈堝兼槸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杩斿洖鍦112涔嬮棿鐨勪竴涓暟瀛楋紝涓MOD(something,12)杩斿洖鍦011涔嬮棿鐨勪竴涓暟瀛楋紝鍥犳蹇呴』鍦MOD( )浠ュ悗鍔1锛屽惁鍒欐垜浠皢浠11( 11 )璺冲埌1(1)

3.3.4.6. NULL鍊兼搷浣

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 NULLIS NOT NULL鎿嶄綔绗︼細

mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
|         0 |             1 |
+-----------+---------------+

璇锋敞鎰忓湪MySQL涓紝0NULL鎰忓懗鐫鍋囪屽叾瀹冨兼剰鍛崇潃鐪熴傚竷灏旇繍绠楃殑榛樿鐪熷兼槸1

NULL鐨勭壒娈婂鐞嗗嵆鏄湪鍓嶉潰鐨勭珷鑺備腑锛屼负浜嗗喅瀹氬摢涓姩鐗╀笉鍐嶆槸娲荤潃鐨勶紝浣跨敤death IS NOT NULL鑰屼笉浣跨敤death != NULL鐨勫師鍥犮

GROUP BY涓紝涓や釜NULL鍊艰涓虹浉鍚屻

鎵цORDER BY鏃讹紝濡傛灉杩愯 ORDER BY ... ASCNULL鍊煎嚭鐜板湪鏈鍓嶉潰锛岃嫢杩愯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鍊兼湁鍏崇殑闂

3.3.4.7. 妯″紡鍖归厤

MySQL鎻愪緵鏍囧噯鐨SQL妯″紡鍖归厤锛屼互鍙婁竴绉嶅熀浜庤薄Unix瀹炵敤绋嬪簭濡vigrepsed鐨勬墿灞曟鍒欒〃杈惧紡妯″紡鍖归厤鐨勬牸寮忋

SQL妯″紡鍖归厤鍏佽浣犱娇鐢_鍖归厤浠讳綍鍗曚釜瀛楃锛岃%鍖归厤浠绘剰鏁扮洰瀛楃(鍖呮嫭闆跺瓧绗)銆傚湪 MySQL涓紝SQL鐨勬ā寮忛粯璁ゆ槸蹇界暐澶у皬鍐欑殑銆備笅闈㈢粰鍑轰竴浜涗緥瀛愩傛敞鎰忎娇鐢SQL妯″紡鏃讹紝涓嶈兘浣跨敤=!=锛涜屽簲浣跨敤LIKENOT 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       |
+----------+-------+---------+------+------------+------------+

瑕佹兂鎵惧嚭姝eソ鍖呭惈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鎻愪緵鐨勬ā寮忓尮閰嶇殑鍏跺畠绫诲瀷鏄娇鐢ㄦ墿灞曟鍒欒〃杈惧紡銆傚綋浣犲杩欑被妯″紡杩涜鍖归厤娴嬭瘯鏃讹紝浣跨敤REGEXPNOT REGEXP鎿嶄綔绗(RLIKENOT RLIKE锛屽畠浠槸鍚屼箟璇)

鎵╁睍姝e垯琛ㄨ揪寮忕殑涓浜涘瓧绗︽槸锛

         .鈥欏尮閰嶄换浣曞崟涓殑瀛楃銆

         瀛楃绫[...]鍖归厤鍦ㄦ柟鎷彿鍐呯殑浠讳綍瀛楃銆備緥濡傦紝[abc]鍖归厤abc銆備负浜嗗懡鍚嶅瓧绗︾殑鑼冨洿锛屼娇鐢ㄤ竴涓-鈥濄[a-z]鍖归厤浠讳綍瀛楁瘝锛岃[0-9]鍖归厤浠讳綍鏁板瓧銆

         * 鍖归厤闆朵釜鎴栧涓湪瀹冨墠闈㈢殑瀛楃銆備緥濡傦紝x*鍖归厤浠讳綍鏁伴噺鐨x瀛楃锛[0-9]*鍖归厤浠讳綍鏁伴噺鐨勬暟瀛楋紝鑰.*鍖归厤浠讳綍鏁伴噺鐨勪换浣曞瓧绗︺

  • 濡傛灉REGEXP妯″紡涓庤娴嬭瘯鍊肩殑浠讳綍鍦版柟鍖归厤锛屾ā寮忓氨鍖归厤(杩欎笉鍚屼簬LIKE妯″紡鍖归厤锛屽彧鏈変笌鏁翠釜鍊煎尮閰嶏紝妯″紡鎵嶅尮閰)
  • 涓轰簡瀹氫綅涓涓ā寮忎互渚垮畠蹇呴』鍖归厤琚祴璇曞肩殑寮濮嬫垨缁撳熬锛屽湪妯″紡寮濮嬪浣跨敤^鍦ㄦā寮忕殑缁撳熬鐢$

涓轰簡璇存槑鎵╁睍姝e垯琛ㄨ揪寮忓浣曞伐浣滐紝涓嬮潰浣跨敤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妯″紡閭f牱銆

涓轰簡鎵惧嚭鍖呭惈姝eソ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姝e垯琛ㄨ揪寮 鎻愪緵浜嗗叧浜庢鍒欒〃杈惧紡鐨勫彞娉曠殑璇︾粏淇℃伅銆

3.3.4.8. 璁℃暟琛

鏁版嵁搴撶粡甯哥敤浜庡洖绛旇繖涓棶棰橈紝鈥滄煇涓被鍨嬬殑鏁版嵁鍦ㄨ〃涓嚭鐜扮殑棰戝害?鈥濅緥濡傦紝浣犲彲鑳芥兂瑕佺煡閬撲綘鏈夊灏戝疇鐗╋紝鎴栨瘡浣嶄富浜烘湁澶氬皯瀹犵墿锛屾垨浣犲彲鑳芥兂瑕佸浣犵殑鍔ㄧ墿杩涜鍚勭绫诲瀷鐨勬櫘鏌ャ

璁$畻浣犳嫢鏈夊姩鐗╃殑鎬绘暟鐩笌鈥滃湪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 clause

COUNT( )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涓互涓婄殑琛
 

pet琛ㄨ拷韪綘鏈夊摢涓疇鐗┿傚鏋滀綘鎯宠璁板綍鍏跺畠鐩稿叧淇℃伅锛屼緥濡傚湪浠栦滑涓鐢熶腑鐪嬪吔鍖绘垨浣曟椂鍚庝唬鍑虹敓锛屼綘闇瑕佸彟澶栫殑琛ㄣ傝繖寮犺〃搴旇鍍忎粈涔堝憿锛熼渶瑕侊細

         瀹冮渶瑕佸寘鍚疇鐗╁悕瀛椾互渚夸綘鐭ラ亾姣忎釜浜嬩欢灞炰簬鍝釜鍔ㄧ墿銆

         闇瑕佷竴涓棩鏈熶互渚夸綘鐭ラ亾浜嬩欢鏄粈涔堟椂鍊欏彂鐢熺殑銆

         闇瑕佷竴涓弿杩颁簨浠剁殑瀛楁銆

         濡傛灉浣犳兂瑕佸浜嬩欢杩涜鍒嗙被锛屽垯闇瑕佷竴涓簨浠剁被鍨嬪瓧娈点

缁煎悎涓婅堪鍥犵礌锛event琛ㄧ殑CREATE TABLE璇彞搴斾负锛

mysql> CREATE TABLE event (name VARCHAR(20), date DATE,
    -> type VARCHAR(15), remark VARCHAR(255));

瀵逛簬pet琛紝鏈瀹规槗鐨勬柟娉曟槸鍒涘缓鍖呭惈淇℃伅鐨勭敤瀹氫綅绗﹀垎闅旂殑鏂囨湰鏂囦欢鏉ヨ杞藉垵濮嬭褰曪細

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         |
+--------+------+-----------------------------+

鍏充簬璇ユ煡璇㈣娉ㄦ剰鐨勫嚑浠朵簨鎯咃細

  • FROM瀛愬彞鍒楀嚭涓や釜琛紝鍥犱负鏌ヨ闇瑕佷粠涓や釜琛ㄦ彁鍙栦俊鎭
  • 褰撲粠澶氫釜琛ㄧ粍鍚(鑱旂粨)淇℃伅鏃讹紝浣犻渶瑕佹寚瀹氫竴涓〃涓殑璁板綍鎬庢牱鑳藉尮閰嶅叾瀹冭〃鐨勮褰曘傝繖寰堢畝鍗曪紝鍥犱负瀹冧滑閮芥湁涓涓name鍒椼傛煡璇娇鐢WHERE瀛愬彞鍩轰簬name鍊兼潵鍖归厤2涓〃涓殑璁板綍銆
  • 鍥犱负name鍒楀嚭鐜板湪涓や釜琛ㄤ腑锛屽綋寮曠敤鍒楁椂锛屼綘涓瀹氳鎸囧畾鍝釜琛ㄣ傛妸琛ㄥ悕闄勫湪鍒楀悕鍓嶅嵆鍙互瀹炵幇銆

浣犱笉蹇呮湁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     |
+--------+------+--------+------+---------+

鍦ㄨ繖涓煡璇腑锛屾垜浠负琛ㄥ悕鎸囧畾鍒悕浠ヤ究鑳藉紩鐢ㄥ垪骞朵笖浣垮緱姣忎竴涓垪寮曠敤涓庡摢涓〃瀹炰緥鐩稿叧鑱旀洿鐩磋銆

3.4. 鑾峰緱鏁版嵁搴撳拰琛ㄧ殑淇℃伅

濡傛灉浣犲繕璁版暟鎹簱鎴栬〃鐨勫悕瀛楋紝鎴栫粰瀹氱殑琛ㄧ殑缁撴瀯鏄粈涔(渚嬪锛屽畠鐨勫垪鍙粈涔)锛屾庝箞鍔烇紵MySQL閫氳繃鎻愪緵鏁版嵁搴撳強鍏舵敮鎸佺殑琛ㄧ殑淇℃伅鐨勫嚑涓鍙ヨВ鍐宠繖涓棶棰樸

浣犲凡缁忚鍒颁簡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鐢熸垚鏈夊叧绱㈠紩鐨勪俊鎭

3.5. 鍦ㄦ壒澶勭悊妯″紡涓嬩娇鐢╩ysql

鍦ㄥ墠闈㈢殑绔犺妭涓紝浣犱氦浜掑紡鍦颁娇鐢mysql杈撳叆鏌ヨ骞朵笖鏌ョ湅缁撴灉銆備綘涔熷彲浠ヤ互鎵规ā寮忚繍琛mysql銆備负浜嗗仛鍒拌繖浜涳紝鎶婁綘鎯宠杩愯鐨勫懡浠ゆ斁鍦ㄤ竴涓枃浠朵腑锛岀劧鍚庡憡璇mysql浠庢枃浠惰鍙栧畠鐨勮緭鍏ワ細
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鍛戒护琛岄夐」銆

涓轰粈涔堣浣跨敤涓涓剼鏈紵鏈夊緢澶氬師鍥狅細

  • 濡傛灉浣犻渶瑕侀噸澶嶈繍琛屾煡璇(姣斿璇达紝姣忓ぉ鎴栨瘡鍛)锛屽彲浠ユ妸瀹冪紪鎴愪竴涓剼鏈紝鍒欐瘡娆℃墽琛屾椂涓嶅繀閲嶆柊閿叆銆
  • 鍙互閫氳繃鎷疯礉骞剁紪杈戣剼鏈枃浠朵粠绫讳技鐨勭幇鏈夌殑鏌ヨ鐢熸垚涓涓柊鏌ヨ銆
  • 褰撲綘姝e湪寮鍙戞煡璇㈡椂锛屾壒妯″紡涔熸槸寰堟湁鐢ㄧ殑锛岀壒鍒澶氳鍛戒护鎴栧璇彞鍛戒护搴忓垪銆傚鏋滀綘鐘簡涓涓敊璇紝浣犱笉蹇呴噸鏂拌緭鍏ユ墍鏈夊唴瀹癸紝鍙渶瑕佺紪杈戣剼鏈潵鏀规閿欒锛岀劧鍚庡憡璇mysql鍐嶆鎵ц鑴氭湰銆
  • 濡傛灉浣犳湁涓涓骇鐢熷涓緭鍑虹殑鏌ヨ锛屼綘鍙互閫氳繃涓涓垎椤靛櫒鑰屼笉鏄洴鐫瀹冪炕灞忓埌灞忓箷鐨勯《绔潵杩愯杈撳嚭锛
                shell> mysql < batch-file | more
  • 浣犲彲浠ユ崟鎹夋枃浠朵腑鐨勮緭鍑轰互渚胯繘琛岃繘涓姝ョ殑澶勭悊锛
                shell> mysql < batch-file > mysql.out
  • 浣犲彲浠ュ皢鑴氭湰鍒嗗彂缁欏彟澶栫殑浜猴紝浠ヤ究浠栦滑涔熻兘杩愯鍛戒护銆
  • 鏌愪簺鎯呭喌涓嶅厑璁镐氦浜掑湴浣跨敤锛屼緥濡, 褰撲綘浠庝竴涓cron浠诲姟涓繍琛屾煡璇㈡椂銆傚湪杩欑鎯呭喌涓嬶紝浣犲繀椤讳娇鐢ㄦ壒妯″紡銆

褰撲綘浠ユ壒妯″紡杩愯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

3.6. 甯哥敤鏌ヨ鐨勪緥瀛

涓嬮潰鏄竴浜涘涔犲浣曠敤MySQL瑙e喅涓浜涘父瑙侀棶棰樼殑渚嬪瓙銆

鍦ㄤ竴浜涗緥瀛愪腑锛屼娇鐢ㄦ暟鎹簱琛ㄢshop鈥濇潵鍌ㄥ瓨鏌愪釜鍟嗕汉锛堢粡閿鍟嗭級鐨勬瘡浠剁墿鍝(鐗╁搧鍙)鐨勪环鏍笺傚亣瀹氭瘡涓晢浜哄姣忛」鐗╁搧鏈変竴涓浐瀹氫环鏍硷紝閭d箞(鐗╁搧锛屽晢浜)鍗充负璇ヨ褰曠殑涓诲叧閿瓧銆

鍚姩鍛戒护琛屽伐鍏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 |
+---------+--------+-------+

3.6.1. 鍒楃殑鏈澶у

鈥滄渶澶х殑鐗╁搧鍙锋槸浠涔堬紵鈥

SELECT MAX(article) AS article FROM shop;

+---------+
| article |
+---------+
|       4 |
+---------+

3.6.2. 鎷ユ湁鏌愪釜鍒楃殑鏈澶у肩殑琛

浠诲姟锛氭壘鍑烘渶璐电墿鍝佺殑缂栧彿銆侀攢鍞晢鍜屼环鏍笺

杩欏緢瀹规槗鐢ㄤ竴涓瓙鏌ヨ鍋氬埌锛

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瑙e喅鏂规浠呬粎鏄剧ず鍏朵腑涓涓紒

3.6.3. 鍒楃殑鏈澶у硷細鎸夌粍

浠诲姟锛氭瘡椤圭墿鍝佺殑鐨勬渶楂樹环鏍兼槸澶氬皯锛

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 |
+---------+-------+

3.6.4. 鎷ユ湁鏌愪釜瀛楁鐨勭粍闂存渶澶у肩殑琛

浠诲姟锛氬姣忛」鐗╁搧锛屾壘鍑烘渶璐典环鏍肩殑鐗╁搧鐨勭粡閿鍟嗐

鍙互鐢ㄨ繖鏍蜂竴涓瓙鏌ヨ瑙e喅璇ラ棶棰橈細

SELECT article, dealer, price
FROM   shop s1
WHERE  price=(SELECT MAX(s2.price)
              FROM shop s2
              WHERE s1.article = s2.article);

3.6.5. 浣跨敤鐢ㄦ埛鍙橀噺

浣犲彲浠ユ竻绌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 |
+---------+--------+-------+

3.6.6. 浣跨敤澶栭敭

MySQL涓紝InnoDB琛ㄦ敮鎸佸澶栭儴鍏抽敭瀛楃害鏉熸潯浠剁殑妫鏌ャ傚弬瑙15.2鑺傦紝鈥淚nnoDB瀛樺偍寮曟搸鈥銆傝繕鍙互鍙傝 1.8.5.5鑺傦紝鈥滃閿

鍙槸鑱旀帴涓や釜琛ㄦ椂锛屼笉闇瑕佸閮ㄥ叧閿瓧銆傚浜庨櫎InnoDB绫诲瀷鐨勮〃锛屽綋浣跨敤REFERENCES tbl_name(col_name)瀛愬彞瀹氫箟鍒楁椂鍙互浣跨敤澶栭儴鍏抽敭瀛楋紝璇ュ瓙鍙ユ病鏈夊疄闄呯殑鏁堟灉锛鍙綔涓哄蹇樺綍鎴栨敞閲婃潵鎻愰啋锛屼綘鐩墠姝e畾涔夌殑鍒楁寚鍚戝彟涓涓〃涓殑涓涓垪銆鎵ц璇ヨ鍙ユ椂锛屽疄鐜颁笅闈㈠緢閲嶈锛

         MySQL涓嶆墽琛岃〃tbl_name 涓殑鍔ㄤ綔锛屼緥濡備綔涓轰綘姝e畾涔夌殑琛ㄤ腑鐨勮鐨勫姩浣滅殑鍝嶅簲鑰屽垹闄よ锛涙崲鍙ヨ瘽璇达紝璇ュ彞娉曚笉浼氳嚧浣ON DELETEON UPDATE琛屼负锛堝鏋滀綘鍦REFERENCES瀛愬彞涓啓鍏ON DELETEON 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 TABLEDESCRIBE鐨勮緭鍑轰腑:

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浣滀负娉ㄩ噴鎴栤滄彁绀衡濋傜敤浜庤〃MyISAMBerkeleyDB

3.6.7. 鏍规嵁涓や釜閿悳绱

鍙互鍏呭垎鍒╃敤浣跨敤鍗曞叧閿瓧鐨OR瀛愬彞锛屽鍚AND鐨勫鐞嗐

涓涓瘮杈冪伒娲荤殑渚嬪瓙鏄鎵句袱涓氳繃OR缁勫悎鍒颁竴璧风殑鍏抽敭瀛楋細

SELECT field1_index, field2_index FROM test_table
WHERE field1_index = '1' OR  field2_index = '1'

璇ユ儏褰㈡槸宸茬粡浼樺寲杩囩殑銆傚弬瑙7.2.6鑺傦紝鈥滅储寮曞悎骞朵紭鍖栤

杩樺彲浠ヤ娇鐢UNION灏嗕袱涓崟鐙殑SELECT璇彞鐨勮緭鍑哄悎鎴愬埌涓璧锋潵鏇存湁鏁堝湴瑙e喅璇ラ棶棰樸傚弬瑙13.2.7.2鑺傦紝鈥淯NION璇硶

姣忎釜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';

3.6.8. 鏍规嵁澶╄绠楄闂噺

涓嬮潰鐨勪緥瀛愭樉绀轰簡濡備綍浣跨敤浣嶇粍鍑芥暟鏉ヨ绠楁瘡涓湀涓敤鎴疯闂綉椤电殑澶╂暟銆

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);

绀轰緥琛ㄤ腑鍚湁浠h〃鐢ㄦ埛璁块棶缃戦〉鐨勫勾锛嶆湀锛嶆棩鍊笺傚彲浠ヤ娇鐢ㄤ互涓嬫煡璇㈡潵纭畾姣忎釜鏈堢殑璁块棶澶╂暟锛

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 |
+------+-------+------+

璇ユ煡璇㈣绠椾簡鍦ㄨ〃涓寜骞/鏈堢粍鍚堢殑涓嶅悓澶╂暟锛屽彲浠ヨ嚜鍔ㄥ幓闄ら噸澶嶇殑璇㈤棶銆

3.6.9. 浣跨敤AUTO_INCREMENT

鍙互閫氳繃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鍏抽敭瀛椼傚湪澶嶅埗璁剧疆涓紝閫氳繃璇ュ嚱鏁板彲浠ュ湪鍏跺畠鏈嶅姟鍣ㄤ笂姝g‘澶嶅埗澶氳鎻掑叆銆

瀵逛簬MyISAMBDB琛紝浣犲彲浠ュ湪绗簩鏍忔寚瀹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 TABLEALTER TABLE鏉ヨ缃鍊硷紝濡備笅鎵绀:

mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

鍏充簬AUTO_INCREMENT鐨勮缁嗕俊鎭細

         濡備綍涓哄垪鎸囧畾AUTO_INCREMENT灞炴э細13.1.5鑺傦紝鈥淐REATE TABLE璇硶鈥 13.1.2鑺傦紝鈥淎LTER TABLE璇硶鈥

         AUTO_INCREMENT鐨勫姩浣滃彇鍐充簬SQL妯″紡锛5.3.2鑺傦紝鈥淪QL鏈嶅姟鍣ㄦā寮忊

         鎵惧嚭鍚湁鏈鏂AUTO_INCREMENT鍊肩殑琛岋細12.1.3鑺傦紝鈥滄瘮杈冨嚱鏁板拰鎿嶄綔绗︹

         璁剧疆灏嗙敤鍒扮殑AUTO_INCREMENT: 13.5.3鑺傦紝鈥淪ET璇硶鈥

         AUTO_INCREMENT鍜屽鍒讹細6.7鑺傦紝鈥滃鍒剁壒鎬у拰宸茬煡闂鈥.

         AUTO_INCREMENT鐩稿叧鐨勫彲鐢ㄤ簬澶嶅埗鐨Server-system鍙橀噺(auto_increment_incrementauto_increment_offset)5.3.3鑺傦紝鈥滄湇鍔″櫒绯荤粺鍙橀噺鈥

3.7. 瀛敓椤圭洰鐨勬煡璇

杩欎釜椤圭洰鏄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

鐢ㄤ竴涓敤PerlMySQL缂栧啓鐨web鎺ュ彛鏉ョ鐞嗛」鐩殑鍚庨潰閮ㄥ垎銆

姣忓ぉ鏅氫笂鎵鏈変細璋堢殑鏁版嵁琚Щ鍏ヤ竴涓MySQL鏁版嵁搴撱

3.7.1. 鏌ユ壘鎵鏈夋湭鍒嗗彂鐨勫鐢熼」

涓嬪垪鏌ヨ鐢ㄦ潵鍐冲畾璋佽繘鍏ラ」鐩殑绗簩閮ㄥ垎锛

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

鎴戜滑鎯宠鍦idtvab鐨勮繛鎺ヤ笂浠ユ暟瀛楅『搴忔帓搴忋傜粨鏋滃姞0浣垮緱MySQL鎶婄粨鏋滃彉涓轰竴涓暟瀛椼

         id

杩欐爣璇嗕竴瀵瑰鐢熴傚畠鏄墍鏈夎〃涓殑涓涓敭銆

         tvab

杩欐爣璇嗗鐢熶腑鐨勪竴涓傚畠鐨勫间负12

         ptvab

杩欐槸tvab涓涓嗚繍绠椼傚綋tvab1锛屽畠鏄2锛屽弽涔嬩害鐒躲傚畠鐢ㄦ潵淇濆瓨杈撳叆骞朵笖浣MySQL浼樺寲鏌ヨ鏇村鏄撱

杩欎釜鏌ヨ琛ㄦ槑锛屾庢牱鐢ㄨ仈缁(p1p2)浠庡悓涓涓〃涓煡鎵捐〃銆傚湪渚嬪瓙涓紝杩欒鐢ㄦ潵妫鏌ュ鐢熺殑涓涓槸鍚﹀湪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

3.7.2. 鏄剧ず瀛敓瀵圭姸鎬佺殑琛

姣忎竴娆′細闈互涓涓О涓event鐨勭姸鎬佺爜缁撴潫銆備笅闈㈡樉绀虹殑鏌ヨ琚敤鏉ユ樉绀烘寜浜嬩欢缁勫悎鐨勬墍鏈夊鐢熺殑琛ㄣ傝繖琛ㄦ槑澶氬皯瀵瑰鐢熷凡缁忓畬鎴愶紝澶氬皯瀵圭殑鍏朵腑涔嬩竴宸插畬鎴愯屽彟涓涓嫆缁濅簡锛岀瓑绛夈
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;

3.8. 涓嶢pache涓璧蜂娇鐢∕ySQL

杩樻湁涓浜涢」鐩紝浣犲彲浠ヤ粠MySQL鏁版嵁搴撻壌鍒敤鎴凤紝骞朵笖浣犺繕鍙互灏嗘棩蹇楁枃浠跺啓鍏MySQL鏁版嵁搴撹〃銆

浣犲彲浠ュ皢浠ヤ笅鍐呭鏀惧埌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鍙傝冩墜鍐岀殑缈昏瘧鐗堟湰锛屽叧浜嶮ySQL鍙傝冩墜鍐岋紝璇疯闂dev.mysql.com銆 鍘熷鍙傝冩墜鍐屼负鑻辨枃鐗堬紝涓庤嫳鏂囩増鍙傝冩墜鍐岀浉姣旓紝鏈炕璇戠増鍙兘涓嶆槸鏈鏂扮殑銆