1. 程式人生 > 其它 >MySQL:DQL操作單表

MySQL:DQL操作單表

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 = '市場部';