1. 程式人生 > >Mysql語法複習總結

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必知必會》