延續上篇的內容,這篇將把這堂課使用MySQL學到的語法全部講完
當然不是整個MySQL的語法完整講完,就把基本常用的語法講完就是了
=====================================================================
群組指令(GROUP BY)
SELECT …… FROM …… WHERE condition
GROUP BY groupexpr [HAVING requirement]
GROUP BY可以將某欄的資料分群,可以找出該資料群的個數、平均等
當然也可以在分群前先設置條件
某些情況下我們設條件需要使用到HAVING,通常在SQL語法的最後
=====================================================================
排序指令(ORDER BY)
SELECT …… FROM …… WHERE ……
GROUP BY ……
ORDER BY colname ASC / DESC
我們將資料表抓出來後要做排序的動作,這時會用到ORDER BY語法
ASC是由小到大排序,DESC為由大到小排序,如果沒有寫的話預設是ASC
這個範例是要解釋ORDER BY的排序的先後順序,寫在前面的優先排序
之後依照前面排好的分群再作後寫的排序,一種分群排序的方法
=====================================================================
集合指令(UNION)
說明這指令之前,先來了解一點數學上的東西
假設我們有兩個集合A={1,2,3,4,5,},B={4,5,6,7,8,}
A∪B={1,2,3,4,5,6,7,8}這表示A和B的聯集,代表A和B內所有不重複的資料
如圖所示藍圈和紅圈內的全部資料
A∩B={4,5}這表示A和B的交集,代表A和B共同擁有的資料
如圖所示藍圈和紅圈內的交錯再一起資料
A-B={1,2,3}這表示A和B的差集,代表A不包含與B共同擁有的資料
如圖所示藍圈不包含紅圈內的資料
SELECT …… FROM …… WHERE ……
UNION
SELECT …… FROM …… WHERE ……;
只要在選擇的兩個資料表之間加上UNION語法較可做到聯集的動作
SELECT …… FROM table1
WHERE col IN (SELECT col FROM table2);
MySQL似乎沒有交集的語法,但我們可以自己利用 WHERE 和 IN 指令來找出交集
SELECT …… FROM table1
WHERE col NOT IN (SELECT col FROM table2);
MySQL似乎也沒有差集語法,只要把設個自己寫交集語法內的 IN 改成 NOT IN 既可
=====================================================================
資料庫應用
我們可以將讀入兩個資料表重新簡化命名,並使用簡化的名稱選取個別資料的內容
將兩個資料表做差集,之後再由小到大排序好
最後來個語法大雜燴
ORDER BY 1,2這是指排序取出後第1和2欄的資料
=====================================================================
MySQL語法就交到這,下篇關於此堂課的文章將要做Unity和MySQL的連結使用
日後再搭配網路概念,就能做出個簡單的帳號管理系統