SQL基礎-DQL 小結
- 學習目標:
- 學習內容:
- SELECT
- FROM
- WHERE
- GROUP BY
- HAVING
- ORDER BY
- 運算符
- ASC 和 DESC
- 總結
學習目標:
-
1.理解DQL(Data Query Language)的基本概念和作用。
-
2.掌握SQL查詢的基本語法結構,包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY等子句的使用。
-
3.理解并能夠使用WHERE子句進行條件篩選,包括邏輯運算符(AND、OR、NOT)和比較運算符(=、<>、>、<、>=、<=)的使用。
-
4.掌握使用GROUP BY子句對查詢結果進行分組,并能夠使用聚合函數(如COUNT、SUM、AVG、MAX、MIN)進行數據的統計分析。
-
5.學會使用HAVING子句對分組后的結果進行條件篩選。
-
6.理解并能夠使用ORDER BY子句對查詢結果進行排序,包括單列排序和多列排序,以及使用ASC和DESC關鍵字指定排序方向。
-
7.掌握子查詢的使用,包括在SELECT、FROM、WHERE子句中嵌套子查詢。
-
8.理解并能夠使用DISTINCT關鍵字去除查詢結果中的重復記錄。
-
9.學會使用LIMIT子句限制查詢結果的數量。
學習內容:
DQL(Data Query Language)是SQL(Structured Query Language)的一個重要組成部分,專門用于從數據庫中檢索數據。它允許用戶通過編寫查詢語句來請求數據庫中的信息,而無需修改數據本身。DQL的核心是SELECT語句,它是數據庫查詢中最常用的命令之一。
SELECT
子句用于指定要從數據庫中檢索的列。可以是單個列名、多個列名,或者使用星號(*)來選擇所有列。
SELECT column1, column2, ...
FROM table_name;
FROM
子句用于指定要從哪個表或哪些表中檢索數據。
SELECT column1, column2, ...
FROM table_name;
WHERE
子句用于過濾結果集,只返回滿足指定條件的記錄。
SELECT column1, column2, ...
FROM table_name
WHERE condition;
GROUP BY
子句用于將結果集中的數據分組,通常與聚合函數一起使用,如COUNT(), SUM(), AVG(), MAX(), MIN()等。
SELECT column1, COUNT(column2)
FROM table_name
GROUP BY column1;
HAVING
子句用于對GROUP BY
子句返回的結果集進行條件過濾,類似于WHERE
子句,但HAVING
可以使用聚合函數。
SELECT column1, COUNT(column2)
FROM table_name
GROUP BY column1
HAVING COUNT(column2) > 10;
ORDER BY
子句用于對結果集進行排序,可以指定一個或多個列,并且可以指定排序的方向(升序ASC或降序DESC)。
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 ASC, column2 DESC;
在SQL中,WHERE
子句用于指定從數據庫表中檢索數據的條件。通過使用邏輯運算符(AND、OR、NOT)和比較運算符(=、<>、>、<、>=、<=),可以構建復雜的查詢條件來篩選數據。
以下是一些使用這些運算符的示例:
-
使用比較運算符:
=
等于<>
不等于>
大于<
小于>=
大于等于<=
小于等于
-
使用邏輯運算符:
AND
用于組合多個條件,只有當所有條件都為真時,記錄才會被選中。OR
用于組合多個條件,只要有一個條件為真,記錄就會被選中。NOT
用于反轉條件的結果。
在使用這些運算符時,需要注意運算符的優先級。在SQL中,NOT
的優先級最高,其次是 AND
,然后是 OR
。如果不確定優先級,可以使用括號 ()
來明確指定運算順序。
在SQL查詢中,ASC
和 DESC
關鍵字用于指定列的排序方向。ASC
表示升序(從低到高),而 DESC
表示降序(從高到低)。默認情況下,如果沒有指定排序方向,SQL查詢將使用升序排序。
- 升序排序:
SELECT * FROM employees
ORDER BY salary ASC;
這個查詢將返回所有員工記錄,并按照工資升序排序。
- 降序排序:
SELECT * FROM employees
ORDER BY salary DESC;
這個查詢將返回所有員工記錄,并按照工資降序排序。
- 結合
GROUP BY
和HAVING
子句的排序:
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000
ORDER BY avg_salary DESC;
這個查詢將返回每個部門的平均工資,并且只包括那些平均工資超過50,000的部門。結果將按照平均工資降序排序。
總結
圖片來源于https://www.bilibili.com/video/BV1Kr4y1i7ru?p=24&spm_id_from=pageDriver&vd_source=1f3140ce51cb028326bf69f5117609d8