SQL高级语法学习总结(一)
基礎語法呢,就是簡單的對行列進行增刪改查,看上一篇。SQL基礎語法學習總結,高級用法無非是條件更多,能實現的需求更多,其中涉及到非常多的關鍵字,本篇博客就進行一下總結。本文所有用法均在mysql環境下測試通過。其他數據庫可能某些關鍵字會有不同。
SQL SELECT LIMIT 子句
?
SELECT LIMIT 子句用于規定要返回的記錄的數目。
SELECT LIMIT 子句對于擁有數千上萬條記錄的大型表來說,是非常有用的。
SELECT column_name(s) FROM table_name LIMIT number;SQL LIKE 語法
SELECT?column_name(s) FROM?table_name WHERE?column_name?LIKE?pattern;LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SQL 通配符
在 SQL 中,通配符與 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的數據。
在 SQL 中,可使用以下通配符:
| % | 替代 0 個或多個字符 |
| _ | 替代一個字符 |
通配符可用于替代字符串中的任何其他字符。
SELECT * FROM table_name WHERE column_name?LIKE 'pattern%';查詢出以pattern開頭的數據。
SELECT * FROM table_name WHERE column_name?LIKE 'pattern_';查詢出以pattern開頭,任意一個字符結尾的數據。
SQL IN 語法
SELECT?column_name(s) FROM?table_name WHERE?column_name?IN (value1,value2,...);IN 操作符允許您在 WHERE 子句中規定多個值。
SQL BETWEEN 語法
SELECT?column_name(s) FROM?table_name WHERE?column_name?BETWEEN?value1?AND?value2;BETWEEN 操作符選取介于兩個值之間的數據范圍內的值。這些值可以是數值、文本或者日期。
SQL 別名
列的 SQL 別名語法
SELECT?column_name?AS?alias_name FROM?table_name;表的 SQL 別名語法
SELECT?column_name(s) FROM?table_name?AS?alias_name;通過使用 SQL,可以為表名稱或列名稱指定別名。
基本上,創建別名是為了讓列名稱的可讀性更強。
SQL JOIN
SQL JOIN 子句用于把來自兩個或多個表的行結合起來,基于這些表之間的共同字段。
最常見的 JOIN 類型:SQL INNER JOIN(簡單的 JOIN)。 SQL INNER JOIN 從多個表中返回滿足 JOIN 條件的所有行。
不同的 SQL JOIN
四種不同的 SQL JOIN 類型:
- INNER JOIN:如果表中有至少一個匹配,則返回行
- LEFT JOIN:即使右表中沒有匹配,也從左表返回所有的行
- RIGHT JOIN:即使左表中沒有匹配,也從右表返回所有的行
- FULL JOIN:只要其中一個表中存在匹配,則返回行
SQL 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;INNER JOIN 關鍵字在表中存在至少一個匹配時返回行。注意:INNER JOIN 與 JOIN 是相同的哦。便于理解,邏輯關系如下圖,簡單的來說就是返回相交的部分。
SQL LEFT JOIN 語法
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 關鍵字從左表(table1)返回所有的行,即使右表(table2)中沒有匹配。如果右表中沒有匹配,則結果為 NULL。便于理解,邏輯關系如下圖,簡單來說就是返回整個左表,右表沒有的話會返回NULL。
SQL RIGHT JOIN 語法
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 關鍵字從右表(table2)返回所有的行,即使左表(table1)中沒有匹配。如果左表中沒有匹配,則結果為 NULL。便于理解,邏輯關系如下圖,剛好和LEFT JOIN 是相反的。
SQL FULL OUTER JOIN 語法
SELECT?column_name(s) FROM?table1 FULL OUTER JOIN?table2 ON?table1.column_name=table2.column_name;FULL OUTER JOIN 關鍵字只要左表(table1)和右表(table2)其中一個表中存在匹配,則返回行.FULL OUTER JOIN 關鍵字結合了 LEFT JOIN 和 RIGHT JOIN 的結果。便于理解,邏輯關系如下,簡單來說就是返回兩個表的所有數據。
SQL UNION 操作符
SQL UNION 語法
SELECT?column_name(s)?FROM?table1 UNION SELECT?column_name(s)?FROM?table2;注釋:默認地,UNION 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL。
SQL UNION ALL 語法
SELECT?column_name(s)?FROM?table1 UNION ALL SELECT?column_name(s)?FROM?table2;注釋:UNION 結果集中的列名總是等于 UNION 中第一個 SELECT 語句中的列名。
UNION 操作符用于合并兩個或多個 SELECT 語句的結果集。
請注意,UNION 內部的每個 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每個 SELECT 語句中的列的順序必須相同。
SQL INSERT INTO SELECT 語法
我們可以從一個表中復制所有的列插入到另一個已存在的表中:
INSERT INTO?table2 SELECT * FROM?table1;或者我們可以只復制希望的列插入到另一個已存在的表中:
INSERT INTO?table2 (column_name(s)) SELECT?column_name(s) FROM?table1;通過 SQL,可以從一個表復制信息到另一個表。
INSERT INTO SELECT 語句從一個表復制數據,然后把數據插入到一個已存在的表中。
貌似寫起來東西有點多,我就分成兩篇文章來寫,看到這想接著看的點下面的標題。
總結
以上是生活随笔為你收集整理的SQL高级语法学习总结(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树的前序遍历、中序遍历、后序遍历
- 下一篇: 生物蛋白质数据库类型【总结】