Mysql語法複習總結
主鍵、聯合主鍵
主鍵任意兩行不可重複且不能為空。
主鍵可以定義在表的一列也可以一起使用多個列作為聯合主鍵
Mysql不區分大小寫
推薦對所有SQL關鍵字用大寫,對所有的列和表名用小寫
DISTINCT
DISTINCT關鍵字只返回指定列不同的行,但DISTINCT運用於所有列而不僅是前置他的列
LIMIT
LIMIT 5,5 指示Mysql返回從第5行開始的5行
ORDER BY
ORDER BY中使用的列不一定是SELECT正在檢索的列
如果有ORDER BY後面有多個列,按照ORDER BY後面指定的列的順序依次排序,如果前面列的值相同,再按後面的列的順序排列。
排序預設是升序的
DESC
ORDER BY prod_price DESC。降序排列。
DESC只作用於它前面的一個列。
結合LIMIT
ORDER BY prod_price (DESC) LIMIT 1
可以找出表中的最值
WHERE
BETWEEN AND
WHERE prod_price BETWEEN 5 AND 10;
查詢5 <= prod_price <= 10的列
AND、OR
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10
IN
WHERE vend_id IN (1002, 1003) AND prod_price >= 10
NOT
WHERE vend_id NOT IN (1002, 1003) AND prod_price >= 10
LIKE
%萬用字元
WHERE prod_name LIKE '%jet' 表示查詢prod_name中以jet為結尾的行
WHERE prod_name LIKE '%jet%' 表示查詢prod_name中任意位置包含jet的行。
_萬用字元
WHERE prod_name LIKE '_ jet' _匹配單個字元。%匹配任意數量的字元。
CONCAT
AS
表和欄位都可以取別名
SELECT * FROM 表名 [AS] 別名;
SELECT 欄位名 [AS] 別名 [,欄位名 [AS] 別名,……] FROM 表名;
注意,為表和欄位指定別名,AS關鍵字可以省略不寫
聚集函式
AVG():返回某列平均值
COUNT():返回某列的行數
MAX():返回某列的最大值
MIN():返回某列的最小值
SUM():返回某列之和
分組資料(GROUP BY、HAVING)
除聚集函式外,SELECT中的每個列都必須在GROUP BY子句中給出。
WHERE的語法適用於HAVING,WHERE過濾行,HAVING過濾分組。
子查詢
WHERE中的子查詢
WHERE子句中可以使用子查詢,有一點需要注意:列必須匹配
SELECT欄位中的子查詢(相關子查詢)
SELECT的一個欄位也可以使用子查詢,注意完全限定的列名的使用(表明.列名)
聯結(JOIN)
沒有WHERE子句(聯結條件)限定的結果返回的是兩個表的笛卡爾積,檢索出的行數是第一個表的行數*第二個表的行數。
INNER JOIN
以下兩個語句是等價的,後者使用了INNER JOIN,也是推薦使用的語法
OUTER JOIN
聯結中包含了那些在相關表中沒有關聯的行,成為外連線
必須指定使用左連線還是右連線。
- INNER JOIN(內連線,或等值連線):取得兩個表中存在連線匹配關係的記錄。
- LEFT JOIN(左連線):取得左表(table1)完全記錄,即使右表(table2)並無對應匹配記錄。
- RIGHT JOIN(右連線):與 LEFT JOIN 相反,取得右表(table2)完全記錄,即使左表(table1)並無匹配對應記錄。
組合查詢(UNION)
union :用於合併多個 select 語句的結果集,並去掉重複的值。 union all :作用和 union 類似,但不會去掉重複的值。
插入(INSERT)
除插入自定義的資料外,還可插入SELECT語句的查詢結果,INSERT INTO 後面的列名可以和SELECT後的列名不同,根據位置匹配插入
參考:
《mysql必知必會》