MySQL:DQL操作單表
阿新 • • 發佈:2021-07-12
1 建立資料庫,複製表
1) 建立一個新的資料庫 db2
CREATE DATABASE db2 CHARACTER SET utf8;
2) 將db1資料庫中的 emp表 複製到當前 db2資料庫
2 排序
通過 ORDER BY 子句,可以將查詢出的結果進行排序(排序只是顯示效果,不會影響真實資料)
語法結構
SELECT 欄位名 FROM 表名 [WHERE 欄位 = 值] ORDER BY 欄位名 [ASC / DESC]
ASC 表示升序排序(預設)
DESC 表示降序排序
排序方式
1) 單列排序
只按照某一個欄位進行排序, 就是單列排序
需求1:
使用 salary 欄位,對emp 表資料進行排序 (升序/降序)
-- 預設升序排序 ASC
SELECT * FROM emp ORDER BY salary; -- 降序排序 SELECT * FROM emp ORDER BY salary DESC;
2)組合排序
同時對多個欄位進行排序, 如果第一個欄位相同 就按照第二個欄位進行排序,以此類推
需求2:
在薪水排序的基礎上,再使用id進行排序, 如果薪水相同就以id 做降序排序
-- 組合排序 SELECT * FROM emp ORDER BY salary DESC, eid DESC;
3 聚合函式
之前我們做的查詢都是橫向查詢,它們都是根據條件一行一行的進行判斷,
而使用聚合函式查詢:是縱向 查詢,它是對某一列的值進行計算,然後返回一個單一的值(另外,聚合函式會忽略null空值。);
語法結構
SELECT 聚合函式(欄位名) FROM 表名;
我們來學習5個聚合函式
聚合函式 |
作用 |
count(欄位) |
統計指定列不為NULL的記錄行數 |
sum(欄位) | 計算指定列的數值和 |
max(欄位) |
計算指定列的最大值 |
min(欄位) |
計算指定列的最小值 |
avg(欄位) |
計算指定列的平均值 |
需求1:
#1 查詢員工的總數 #2 檢視員工總薪水、最高薪水、最小薪水、薪水的平均值 #3 查詢薪水大於4000員工的個數 #4 查詢部門為'教學部'的所有員工的個數 #5 查詢部門為'市場部'所有員工的平均薪水
SQL實現
#1 查詢員工的總數-- 統計表中的記錄條數 使用 count() SELECT COUNT(eid) FROM emp; -- 使用某一個欄位 SELECT COUNT(*) FROM emp; -- 使用 * SELECT COUNT(1) FROM emp; -- 使用 1,與 * 效果一樣 -- 下面這條SQL 得到的總條數不準確,因為count函式忽略了空值 -- 所以使用時注意不要使用帶有null的列進行統計 SELECT COUNT(dept_name) FROM emp;
#2 檢視員工總薪水、最高薪水、最小薪水、薪水的平均值 -- sum函式求和, max函式求最大, min函式求最小, avg函式求平均值 SELECT SUM(salary) AS '總薪水', MAX(salary) AS '最高薪水', MIN(salary) AS '最低薪水', AVG(salary) AS '平均薪水' FROM emp;
#3 查詢薪水大於4000員工的個數
SELECT COUNT(*) FROM emp WHERE salary > 4000;
#4 查詢部門為'教學部'的所有員工的個數 SELECT COUNT(*) FROM emp WHERE dept_name = '教學部';
#5 查詢部門為'市場部'所有員工的平均薪水 SELECT AVG(salary) AS '市場部平均薪資' FROM emp WHERE dept_name = '市場部';