天天看點

SQL基礎(二):SQL指令

1、SQL SELECT TOP 子句

  SELECT TOP 子句用于規定要傳回的記錄的數目。SELECT TOP 子句對于擁有數千條記錄的大型表來說,是非常有用的(或者比如選取某個最新的資料:我們可以按降序排序,然後選取第一個資料)

  注釋:并非所有的資料庫系統都支援 SELECT TOP 子句。

  文法:SELECT TOP number|percent column_name(s) FROM table_name;

  MySQL文法:SELECT column_name(s) FROM table_name LIMIT number;

  Oracle 文法:SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;

2、SQL LIKE 操作符

  LIKE 操作符用于在 WHERE 子句中搜尋列中的指定模式。(通常與通配符一起配合使用)

  文法:SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

  通過使用 NOT 關鍵字,您可以選取不比對模式的記錄。

3、SQL 通配符

  通配符與 SQL LIKE 操作符一起使用。SQL 通配符用于搜尋表中的資料。在 SQL 中,可使用以下通配符:

  

SQL基礎(二):SQL指令

  https%:以字母 "https" 開始

  %oo%:包含字母oo

  _oogle:以任一字元開始,然後是 "oogle" 的所有記錄

  %代表一個或多個字元,_代表一個字元

  [charlist] 通配符:MySQL 中使用 REGEXP 或 NOT REGEXP 運算符 (或 RLIKE 和 NOT RLIKE) 來操作正規表達式。

4、IN 操作符

  IN 操作符允許您在 WHERE 子句中規定多個值。(in查詢可以規定多個值)

  NOT column_name IN (value1,value2,…),不在規定的值内

  文法:SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);

5、SQL BETWEEN 操作符

  BETWEEN 操作符選取介于兩個值之間的資料範圍内的值。這些值可以是數值、文本或者日期。

  文法:SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;

  注意:在不同的資料庫中,BETWEEN 操作符會産生不同的結果!在某些資料庫中,BETWEEN 選取介于兩個值之間但不包括兩個測試值的字段。在某些資料庫中,BETWEEN 選取介于兩個值之間且包括兩個測試值的字段。在某些資料庫中,BETWEEN 選取介于兩個值之間且包括第一個測試值但不包括最後一個測試值的字段。是以,請檢查您的資料庫是如何處理 BETWEEN 操作符!

  下面是2個表的資料,用于執行個體示範:

SQL基礎(二):SQL指令
SQL基礎(二):SQL指令

 6、别名

  通過使用 SQL,可以為表名稱或列名稱指定别名。基本上,建立别名是為了讓列名稱的可讀性更強。

  列的别名文法:SELECT column_name AS alias_name FROM table_name;

  表的别名文法:SELECT column_name(s) FROM table_name AS alias_name;

  列的别名執行個體:

SQL基礎(二):SQL指令
SQL基礎(二):SQL指令

  表的别名執行個體:

SQL基礎(二):SQL指令

  在下面的情況下,使用别名很有用:(1)在查詢中涉及超過一個表(2)在查詢中使用了函數(3)列名稱很長或者可讀性差(4)需要把兩個列或者多個列結合在一起

 7、SQL JOIN

  SQL JOIN子句用于把來自兩個或多個表的行結合起來,基于這些表之間的共同字段。

SQL基礎(二):SQL指令

  不同的 SQL JOIN 類型:

INNER JOIN:如果表中有至少一個比對,則傳回行

LEFT JOIN:即使右表中沒有比對,也從左表傳回所有的行

RIGHT JOIN:即使左表中沒有比對,也從右表傳回所有的行

FULL JOIN:隻要其中一個表中存在比對,則傳回行

 8、SQL INNER JOIN 關鍵字

  INNER JOIN 關鍵字在表中存在至少一個比對時傳回行。

  文法:SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;

  或:    SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name;

  注釋:1、INNER JOIN 與 JOIN 是相同的。

      2、INNER JOIN 關鍵字在表中存在至少一個比對時傳回行。如果 "Websites" 表中的行在 "access_log" 中沒有比對,則不會列出這些行。

SQL基礎(二):SQL指令

 9、SQL LEFT JOIN 關鍵字

  LEFT JOIN 關鍵字從左表(table1)傳回所有的行,即使右表(table2)中沒有比對。如果右表中沒有比對,則結果為 NULL。

  文法:SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;

  或:   SELECT column_name(s) FROM table1 LEFT OUTER JOIN table2 ON table1.column_name=table2.column_name;

  注釋:LEFT JOIN 關鍵字從左表(Websites)傳回所有的行,即使右表(access_log)中沒有比對。

SQL基礎(二):SQL指令

 10、SQL RIGHT JOIN 關鍵字

  RIGHT JOIN 關鍵字從右表(table2)傳回所有的行,即使左表(table1)中沒有比對。如果左表中沒有比對,則結果為 NULL。

  文法:SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name; 

  或:   SELECT column_name(s) FROM table1 RIGHT OUTER JOIN table2 ON table1.column_name=table2.column_name;

  注釋:RIGHT JOIN 關鍵字從右表(Websites)傳回所有的行,即使左表(access_log)中沒有比對。

SQL基礎(二):SQL指令

11、SQL FULL OUTER JOIN 關鍵字

  FULL OUTER JOIN 關鍵字隻要左表(table1)和右表(table2)其中一個表中存在比對,則傳回行。

  FULL OUTER JOIN 關鍵字結合了 LEFT JOIN 和 RIGHT JOIN 的結果。

  文法:SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;

  注釋:FULL OUTER JOIN 關鍵字傳回左表(Websites)和右表(access_log)中所有的行。如果 "Websites" 表中的行在 "access_log" 中沒有比對或者 "access_log" 表中的行在 "Websites" 表中沒有比對,也會列出這些行。

  幾種JOIN對比:

SQL基礎(二):SQL指令
SQL基礎(二):SQL指令
SQL基礎(二):SQL指令
SQL基礎(二):SQL指令