博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
聚合函數
SUM函數
在MySQL中,SUM函數是用於計算數值列的總和的聚合函數。它接受一個數值列作為參數,並返回該列中所有值的總和。
以下是一個使用SUM函數的示例:
假設我們有一個名為"orders"的表,其中有兩個欄位:"product"和"amount",用於記錄不同產品的訂單金額。現在我們希望計算出所有訂單的總金額。
現在,我們可以使用SUM函數來計算訂單金額的總和:
SELECT SUM(amount) AS total_amount FROM orders;
該查詢將返回一個名為"total_amount"的結果集,其中包含了所有訂單金額的總和。在此案例中,結果將是700。
以上示例中的SQL語言格式與上述介紹的AVG函數示例相似,只是使用了SUM函數來計算總和。SQL語言的其他關鍵部分和解釋與前述相同。
AVG函數
在MySQL中,AVG函數是用於計算數值列的平均值的聚合函數。它接受一個數值列作為參數,並返回該列中所有值的平均值。
以下是一個使用AVG函數的示例:
假設我們有一個名為"sales"的表,其中有兩個欄位:"product"和"quantity",用於記錄不同產品的銷售數量。現在我們希望計算出所有產品的平均銷售數量。
現在,我們可以使用AVG函數來計算平均銷售數量:
SELECT AVG(quantity) AS average_quantity FROM sales;
該查詢將返回一個名為"average_quantity"的結果集,其中包含了所有銷售數量的平均值。在此案例中,結果將是17.5。
SQL語言是用於與關係型資料庫交互的標準化查詢語言。它用於對資料庫中的數據進行查詢、插入、更新和刪除操作。
上述示例中的SQL語言包括了以下幾個關鍵部分:
- CREATE TABLE用於創建一個新的表。
- INSERT INTO用於向表中插入數據。
- SELECT用於查詢數據。
- AVG(quantity)表達了使用AVG函數計算"quantity"列的平均值。
- AS用於為查詢結果中的列指定別名。
- FROM指定了要查詢的表。
- WHERE和ORDER BY是SQL中的條件和排序子句,用於對查詢結果進行篩選和排序。
總的來說,SQL語言是一種高級的資料庫查詢語言,可以用於管理和操作關係型資料庫中的數據。它使用了各種關鍵字、函數和語法結構來執行各種操作,如創建表、插入數據、查詢數據和更新數據。
COUNT函數
在MySQL中,COUNT函數是用於計算行數的聚合函數。它接受一個表達式作為參數,並返回滿足該表達式條件的行數。
以下是一個使用COUNT函數的示例:
假設我們有一個名為"customers"的表,其中有一個欄位:"id",用於記錄每個顧客的唯一標識符。現在我們希望計算出總共有多少個顧客。
現在,我們可以使用COUNT函數來計算顧客的數量:
SELECT COUNT(*) AS total_customers FROM customers;
該查詢將返回一個名為"total_customers"的結果集,其中包含了顧客的總數。在此案例中,結果將是4。
在上述示例中,COUNT函數的參數是"*",表示計算所有行的數量。COUNT函數還可以接受特定列名作為參數,例如COUNT(id),表示計算id列中非空值的數量。
SQL語言的其他關鍵部分和解釋與前述相同。總的來說,COUNT函數是用於計算行數的聚合函數,用於獲取特定條件下的行數或表中的總行數。
MAX函數
在MySQL中,MAX函數是用於計算數值列的最大值的聚合函數。它接受一個數值列作為參數,並返回該列中的最大值。
以下是一個使用MAX函數的示例:
假設我們有一個名為"products"的表,其中有兩個欄位:"product"和"price",用於記錄不同產品的價格。現在我們希望找到最高價格的產品。
現在,我們可以使用MAX函數來找到價格最高的產品:
SELECT MAX(price) AS highest_price FROM products;
該查詢將返回一個名為"highest_price"的結果集,其中包含了最高價格的產品的價格。在此案例中,結果將是20.49。
在上述示例中,MAX函數的參數是"price",表示要找到"price"列中的最大值。MAX函數還可以接受其他數值表達式作為參數,例如MAX(price * quantity),表示計算"price"和"quantity"列乘積的最大值。
SQL語言的其他關鍵部分和解釋與前述相同。總的來說,MAX函數是用於計算最大值的聚合函數,用於查找數值列中的最大值。
MIN函數
在MySQL中,MIN函數是用於計算數值列的最小值的聚合函數。它接受一個數值列作為參數,並返回該列中的最小值。
以下是一個使用MIN函數的示例:
假設我們有一個名為"products"的表,其中有兩個欄位:"product"和"price",用於記錄不同產品的價格。現在我們希望找到最低價格的產品。
現在,我們可以使用MIN函數來找到價格最低的產品:
SELECT MIN(price) AS lowest_price FROM products;
該查詢將返回一個名為"lowest_price"的結果集,其中包含了最低價格的產品的價格。在此案例中,結果將是10.99。
在上述示例中,MIN函數的參數是"price",表示要找到"price"列中的最小值。MIN函數還可以接受其他數值表達式作為參數,例如MIN(price * quantity),表示計算"price"和"quantity"列乘積的最小值。
SQL語言的其他關鍵部分和解釋與前述相同。總的來說,MIN函數是用於計算最小值的聚合函數,用於查找數值列中的最小值。
數學函數
ROUND函數
MySQL中的ROUND函數用於將一個數值四捨五入到指定的小數位數。
語法:
ROUND(number, decimals)
參數說明:
- number:要進行四捨五入的數值。
- decimals:要保留的小數位數。可以是負數,表示要四捨五入的整數位數。
案例:
假設有一個訂單表orders,包含以下欄位:
- order_id:訂單ID
- total_amount:訂單總金額
要求使用ROUND函數,將訂單總金額保留兩位小數,並按金額從大到小查詢訂單。
SQL語句:
SELECT order_id, ROUND(total_amount, 2) AS rounded_amount
FROM orders
ORDER BY rounded_amount DESC;
解釋SQL語句:
1. SELECT語句:指定要查詢的欄位。
2. ROUND(total_amount, 2) AS rounded_amount:使用ROUND函數將total_amount欄位保留兩位小數,並將結果命名為rounded_amount。
3. FROM orders:指定要查詢的數據表為orders。
4. ORDER BY rounded_amount DESC:按照rounded_amount欄位的值從大到小進行排序。
這個例子中,假設訂單總金額為:
- 10.3456
- 20.6789
- 30.1234
經過ROUND函數的處理後,得到的結果為:
- 10.35
- 20.68
- 30.12
最終的查詢結果將按照金額從大到小進行排序,並顯示訂單ID和保留兩位小數後的金額。
ABS函數
MySQL中的ABS函數用於返回一個數的絕對值。
語法:
ABS(number)
參數說明:
- number:要返回絕對值的數值。
案例:
假設有一個學生成績表grades,包含以下欄位:
- student_id:學生ID
- score:學生成績
要求使用ABS函數,返回學生成績的絕對值,並按照絕對值從小到大查詢學生成績。
SQL語句:
SELECT student_id, ABS(score) AS absolute_score
FROM grades
ORDER BY absolute_score ASC;
解釋SQL語句:
1. SELECT語句:指定要查詢的欄位。
2. ABS(score) AS absolute_score:使用ABS函數返回score欄位的絕對值,並將結果命名為absolute_score。
3. FROM grades:指定要查詢的數據表為grades。
4. ORDER BY absolute_score ASC:按照absolute_score欄位的值從小到大進行排序。
假設學生成績為:
- 學生A, 成績-80
- 學生B, 成績95
- 學生C, 成績-60
經過ABS函數的處理後,得到的結果為:
- 學生A, 絕對值80
- 學生B, 絕對值95
- 學生C, 絕對值60
最終的查詢結果將按照絕對值從小到大進行排序,並顯示學生ID和絕對值後的成績。
CEIL函數
MySQL中的CEIL函數用於將一個數值向上取整,返回不小於該數的最小整數。
語法:
CEIL(number)
參數說明:
- number:要進行向上取整的數值。
案例:
假設有一個商品表products,包含以下欄位:
- product_id:商品ID
- price:商品價格(單位:元)
要求使用CEIL函數,將商品價格向上取整,並按照取整後的價格從大到小查詢商品。
SQL語句:
SELECT product_id, CEIL(price) AS rounded_price
FROM products
ORDER BY rounded_price DESC;
解釋SQL語句:
1. SELECT語句:指定要查詢的欄位。
2. CEIL(price) AS rounded_price:使用CEIL函數將price欄位向上取整,並將結果命名為rounded_price。
3. FROM products:指定要查詢的數據表為products。
4. ORDER BY rounded_price DESC:按照rounded_price欄位的值從大到小進行排序。
假設商品價格為:
- 商品A,價格4.56元
- 商品B,價格9.99元
- 商品C,價格2.45元
經過CEIL函數的處理後,得到的結果為:
- 商品A,取整後價格5
- 商品B,取整後價格10
- 商品C,取整後價格3
最終的查詢結果將按照取整後的價格從大到小進行排序,並顯示商品ID和向上取整後的價格。
FLOOR函數
MySQL中的FLOOR函數用於將一個數值向下取整,返回不大於該數的最大整數。
語法:
FLOOR(number)
參數說明:
- number:要進行向下取整的數值。
案例:
假設有一個商品表products,包含以下欄位:
- product_id:商品ID
- price:商品價格(單位:元)
要求使用FLOOR函數,將商品價格向下取整,並按照取整後的價格從小到大查詢商品。
SQL語句:
SELECT product_id, FLOOR(price) AS rounded_price
FROM products
ORDER BY rounded_price ASC;
解釋SQL語句:
1. SELECT語句:指定要查詢的欄位。
2. FLOOR(price) AS rounded_price:使用FLOOR函數將price欄位向下取整,並將結果命名為rounded_price。
3. FROM products:指定要查詢的數據表為products。
4. ORDER BY rounded_price ASC:按照rounded_price欄位的值從小到大進行排序。
假設商品價格為:
- 商品A,價格4.56元
- 商品B,價格9.99元
- 商品C,價格2.45元
經過FLOOR函數的處理後,得到的結果為:
- 商品A,取整後價格4
- 商品B,取整後價格9
- 商品C,取整後價格2
最終的查詢結果將按照取整後的價格從小到大進行排序,並顯示商品ID和向下取整後的價格。
字元串函數
CONTACT函數
MySQL中的CONCAT函數用於將多個字元串連接成一個字元串。
語法:
CONCAT(string1, string2, ...)
參數說明:
- string1, string2, ...:要連接的字元串。
案例:
假設有一個客戶表customers,包含以下欄位:
- customer_id:客戶ID
- first_name:客戶名
- last_name:客戶姓
要求使用CONCAT函數,將客戶的姓和名連接為一個完整的姓名,並按照姓氏字母順序查詢客戶。
SQL語句:
SELECT customer_id, CONCAT(last_name, ' ', first_name) AS full_name
FROM customers
ORDER BY last_name ASC;
解釋SQL語句:
1. SELECT語句:指定要查詢的欄位。
2. CONCAT(last_name, ' ', first_name) AS full_name:使用CONCAT函數將last_name和first_name欄位連接為一個完整的姓名,並將結果命名為full_name。字元串之間可以用空格或其他字元進行分隔。
3. FROM customers:指定要查詢的數據表為customers。
4. ORDER BY last_name ASC:按照last_name欄位的值按照姓氏字母順序進行排序。
假設客戶數據為:
- 客戶A, 姓:張,名:三
- 客戶B, 姓:李,名:四
- 客戶C, 姓:王,名:五
經過CONCAT函數的處理後,得到的結果為:
- 客戶A, 完整姓名:張 三
- 客戶B, 完整姓名:李 四
- 客戶C, 完整姓名:王 五
最終的查詢結果將按照姓氏字母順序進行排序,並顯示客戶ID和完整姓名。
SUBSTRING函數
MySQL中的SUBSTRING函數用於返回一個字元串的子字元串。
語法:
SUBSTRING(string, start_position, length)
參數說明:
- string:要截取子字元串的原始字元串。
- start_position:截取子字元串的起始位置。
- length:要截取的子字元串的長度。
案例:
假設有一個用戶表users,包含以下欄位:
- user_id:用戶ID
- username:用戶名
- email:用戶電子郵件地址
要求使用SUBSTRING函數,截取用戶郵件地址的功能變數名稱,並按照功能變數名稱進行查詢用戶。
SQL語句:
SELECT user_id, SUBSTRING(email, LOCATE('@', email) + 1) AS domain
FROM users
ORDER BY domain ASC;
解釋SQL語句:
1. SELECT語句:指定要查詢的欄位。
2. SUBSTRING(email, LOCATE('@', email) + 1) AS domain:使用SUBSTRING函數截取email欄位中從@符號後開始的子字元串,並將結果命名為domain。LOCATE函數用於找到@符號在email字元串中的位置。
3. FROM users:指定要查詢的數據表為users。
4. ORDER BY domain ASC:按照domain欄位的值進行升序排列。
假設用戶數據為:
- 用戶A, 郵件地址:[email protected]
- 用戶B, 郵件地址:[email protected]
- 用戶C, 郵件地址:[email protected]
經過SUBSTRING函數的處理後,得到的結果為:
- 用戶A, 功能變數名稱:gmail.com
- 用戶B, 功能變數名稱:yahoo.com
- 用戶C, 功能變數名稱:hotmail.com
最終的查詢結果將按照功能變數名稱進行排序,並顯示用戶ID和功能變數名稱。
LENGTH函數
MySQL中的LENGTH函數用於返回一個字元串的長度。
語法:
LENGTH(string)
參數說明:
- string:要計算長度的字元串。
案例:
假設有一個商品表products,包含以下欄位:
- product_id:商品ID
- name:商品名稱
要求使用LENGTH函數,查詢商品名稱的長度,並按照長度從長到短排序。
SQL語句:
SELECT product_id, name, LENGTH(name) AS name_length
FROM products
ORDER BY name_length DESC;
解釋SQL語句:
1. SELECT語句:指定要查詢的欄位。
2. LENGTH(name) AS name_length:使用LENGTH函數計算name欄位的長度,並將結果命名為name_length。
3. FROM products:指定要查詢的數據表為products。
4. ORDER BY name_length DESC:按照name_length欄位的值從長到短進行排序。
假設商品數據為:
- 商品A, 名稱:Pen
- 商品B, 名稱:Notebook
- 商品C, 名稱:Pencil
經過LENGTH函數的處理後,得到的結果為:
- 商品A, 名稱:Pen, 長度:3
- 商品B, 名稱:Notebook, 長度:8
- 商品C, 名稱:Pencil, 長度:6
最終的查詢結果將按照名稱長度從長到短進行排序,並顯示商品ID、名稱和名稱的長度。
時間函數
NOW函數
MySQL中的NOW函數用於返回當前日期和時間。
語法:
NOW()
案例:
假設有一個訂單表orders,包含以下欄位:
- order_id:訂單ID
- order_date:訂單日期
要求使用NOW函數,查詢當前日期和時間,並查詢訂單表中今天的所有訂單。
SQL語句:
SELECT order_id, order_date
FROM orders
WHERE DATE(order_date) = CURDATE();
解釋SQL語句:
1. SELECT語句:指定要查詢的欄位。
2. FROM orders:指定要查詢的數據表為orders。
3. WHERE DATE(order_date) = CURDATE():使用DATE函數提取order_date欄位的日期部分,並與當天的日期進行比較。CURDATE函數返回當前日期。
假設訂單數據為:
- 訂單A, 日期:2022-02-15 10:30:45
- 訂單B, 日期:2022-02-16 12:15:30
- 訂單C, 日期:2022-02-15 14:20:00
如果當前日期為2022-02-15,經過查詢後,將返回以下結果:
- 訂單A, 日期:2022-02-15 10:30:45
- 訂單C, 日期:2022-02-15 14:20:00
最終的查詢結果將顯示訂單ID和日期,其中日期為當天的訂單。
CURDATE函數
MySQL中的CURDATE函數用於返回當前日期。
語法:
CURDATE()
案例:
假設有一個員工表employees,包含以下欄位:
- employee_id:員工ID
- hire_date:入職日期
要求使用CURDATE函數,查詢今天入職的所有員工。
SQL語句:
SELECT employee_id, hire_date
FROM employees
WHERE DATE(hire_date) = CURDATE();
解釋SQL語句:
1. SELECT語句:指定要查詢的欄位。
2. FROM employees:指定要查詢的數據表為employees。
3. WHERE DATE(hire_date) = CURDATE():使用DATE函數提取hire_date欄位的日期部分,並與當前日期進行比較。CURDATE函數返回當前日期。
假設員工數據為:
- 員工A, 入職日期:2022-02-15
- 員工B, 入職日期:2022-02-16
- 員工C, 入職日期:2022-02-15
如果當前日期為2022-02-15,經過查詢後,將返回以下結果:
- 員工A, 入職日期:2022-02-15
- 員工C, 入職日期:2022-02-15
最終的查詢結果將顯示員工ID和入職日期,其中入職日期為當天的員工。
DATEDIFF函數
MySQL中的DATEDIFF函數用於計算兩個日期之間的差距,以天為單位。
語法:
DATEDIFF(date1, date2)
參數說明:
- date1:要計算差距的第一個日期。
- date2:要計算差距的第二個日期。
案例:
假設有一個銷售表sales,包含以下欄位:
- sale_id:銷售ID
- sale_date:銷售日期
要求使用DATEDIFF函數,計算銷售發生到現在的天數,並查詢銷售發生不超過7天的記錄。
SQL語句:
SELECT sale_id, sale_date
FROM sales
WHERE DATEDIFF(NOW(), sale_date) <= 7;
解釋SQL語句:
1. SELECT語句:指定要查詢的欄位。
2. FROM sales:指定要查詢的數據表為sales。
3. WHERE DATEDIFF(NOW(), sale_date) <= 7:使用DATEDIFF函數計算當前日期(NOW())與sale_date欄位的差距,並判斷差距是否不超過7天。
假設銷售數據為:
- 銷售A, 日期:2022-02-10
- 銷售B, 日期:2022-02-15
- 銷售C, 日期:2022-02-20
如果當前日期為2022-02-17,經過查詢後,將返回以下結果:
- 銷售B, 日期:2022-02-15
- 銷售C, 日期:2022-02-20
最終的查詢結果將顯示銷售ID和銷售日期,其中銷售日期與當前日期的差距不超過7天。
在黑夜裡夢想著光,心中覆蓋悲傷,在悲傷里忍受孤獨,空守一絲溫暖。 我的淚水是無底深海,對你的愛已無言,相信無盡的力量,那是真愛永在。 我的信仰是無底深海,澎湃著心中火焰,燃燒無盡的力量,那是忠誠永在。