我自己常常忘記的一些關鍵信息
去重:DISTINCT
SELECT DISTINCT <?? >(AS)<? >
??? FROM <? >;
AND 運算符優(yōu)先于 OR 運算符(SQL語句中可以使用括號調整語句執(zhí)行的順序)
SELECT有的時候可以理解為print(可以這么說嗎睛蛛?)
ORDER BY(排序) 默認為升序排列鹦马,降序排列為DESC
在MySQL中,NULL?值被認為比任何?非NULL?值低
最常用的五個聚合函數(shù)
1.COUNT:計算表中的記錄數(shù)(行數(shù))
COUNT函數(shù)的結果根據(jù)參數(shù)的不同而不同忆肾。COUNT(*)會得到包含NULL的數(shù)據(jù)行數(shù)荸频,而COUNT(<列名>)會得到NULL之外的數(shù)據(jù)行數(shù)。
2.SUM:計算表中數(shù)值列中數(shù)據(jù)的合計值
3.AVG:計算表中數(shù)值列中數(shù)據(jù)的平均值
4.MAX:求出表中任意列中數(shù)據(jù)的最大值
5.MIN:求出表中任意列中數(shù)據(jù)的最小值
MAX/MIN函數(shù)幾乎適用于所有數(shù)據(jù)類型的列难菌。SUM/AVG函數(shù)只適用于數(shù)值類型的列试溯。
想要計算值的種類時,可以在COUNT函數(shù)的參數(shù)中使用DISTINCT郊酒。即在聚合函數(shù)的參數(shù)中使用DISTINCT,可以刪除重復數(shù)據(jù)键袱。
分組
SELECT - (FROM) - (WHERE)-? GROUP BY <聚合鍵> - HAVING
group by 基于前三者燎窘;having相當于group by的where
視圖的定義
視圖并不是數(shù)據(jù)庫真實存儲的數(shù)據(jù)表,它可以看作是一個窗口蹄咖,通過這個窗口我們可以看到數(shù)據(jù)庫表中真實存在的數(shù)據(jù)褐健。
使用視圖的優(yōu)點:
1.通過定義視圖可以將頻繁使用的SELECT語句保存以提高效率。
2.通過定義視圖可以使用戶看到的數(shù)據(jù)更加清晰澜汤。
3.通過定義視圖可以不對外公開數(shù)據(jù)表全部字段蚜迅,增強數(shù)據(jù)的保密性。
4.通過定義視圖可以降低數(shù)據(jù)的冗余俊抵。
CREATE VIEW <視圖名稱> ( <列名1> , <列名2> ,...) AS <SELECT語句>谁不;
視圖的注意事項
圖名在數(shù)據(jù)庫中需要是唯一的,不能與其他視圖和表重名徽诲。
雖然在視圖上繼續(xù)創(chuàng)建視圖的語法沒有錯誤刹帕,但是我們還是應該盡量避免這種操作吵血。這是因為對多數(shù) DBMS 來說, 多重視圖會降低 SQL 的性能偷溺。
在一般的DBMS中定義視圖時不能使用ORDER BY語句蹋辅。原因:視圖和表一樣,數(shù)據(jù)行都是沒有順序的挫掏。
可以在視圖的基礎上進行查詢侦另,把它當成一個TABLE就好。同樣地尉共,其他的ALTER, DROP等操作
對原表的操作會同步到視圖里淋肾,對視圖進行直接操作(非直接修改數(shù)據(jù)的過程性操作如GROUP BY, SUM, COUNT, ORDER BY等除外)也會更新原表的數(shù)據(jù)。雖然但是爸邢,在創(chuàng)建視圖時也盡量使用限制不允許通過視圖來修改表樊卓。