在MySQL中INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么區(qū)別
你會推薦使用 datetime 還是 timestamp 字段?為什么
MyISAM 與 InnoDB,什么場景選擇哪一個
問題一
在MySQL中INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么區(qū)別?
我們有兩張表:
TableA: id firstName lastName ....................................... 1 arun prasanth 2 ann antony 3 sruthy abc 6 new abc TableB: id2 age Place ................ 1 24 kerala 2 24 usa 3 25 ekm 5 24 chennai
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA INNERJOIN TableB ON TableA.id = TableB.id2;
得到的結(jié)果即為:
firstName lastName age Place .............................................. arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm
得到的結(jié)果有4個字段,firstName 、 lastName 、 age 、 Place,就是我們上面SQL語句SELECT的4個字段,F(xiàn)ROM和INNER JOIN后面的兩個表名就是要內(nèi)連接的兩張表,ON后面就是在其中尋找共同點(diǎn)的字段。
LEFT JOIN(左連接)
左連接查詢會返回左表中所有行,無論這些行是不是有任何一行在右表中匹配。
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA LEFTJOIN TableB ON TableA.id = TableB.id2;
查詢結(jié)果是:
firstName lastName age Place ............................................................. arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm new abc NULL NULL
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA RIGHTJOIN TableB ON TableA.id = TableB.id2;
結(jié)果集:
firstName lastName age Place ............................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm NULL NULL 24 chennai
FULL JOIN(全連接)
SQL語句如下:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA FULLJOIN TableB ON TableA.id = TableB.id2;
結(jié)果集為:
firstName lastName age Place ........................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm new abc NULL NULL NULL NULL 24 chennai
查詢結(jié)果是左連接和右連接的并集。
問題二
你會推薦使用 datetime 還是 timestamp 字段?為什么?
正如Mysql文檔描述的那樣——datetime的范圍是“1000-01-01 00:00:00”到“9999-12-31 23:59:59”,而timestamp的范圍是 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC。如果不想程序在2038年出問題,從這個方面作者建議還是使用datetime。