#======================================
#平臺:windows7
#MYsql版本:mysql-5.5.62-winx64(安裝版)
#MYsql工具:SQLyog - 64 bit、Navicat Premium 12
工具包地址:https://pan.baidu.com/s/17SOAmwcgOw9hYtTzDb9-Tw
#======================================
單表查詢可以分爲如下幾種查詢方式:
1. 簡單數據查詢
2. 條件數據查詢
3. 排序數據查詢
4. 限制數據查詢數量
5. 統計函數和分組數據查詢
一、簡單數據查詢
語法:select 字段名 from 表名 [where 條件過濾]
示例: select ename,age,sal from emp where ename == “tom”;
避免重複查詢關鍵字:DISTINCT
語法:SELETCT DISTINCT 字段1,字段2 FROM table_name;
數學四則運算數據查詢:(+加,-減,*乘法,/除,%取餘)
語法:SELECT ename,sal*12 AS yearsal FROM emp;
設置數據顯示的格式:
MYSQL中通過CONCAT( )連接字符串。
語法:SELETCT CONCAT(eaname, ‘僱員的年薪爲:’,sal*12) yearsalary FROM emp;
二、條件數據查詢
l 單條件查詢:SELETCT * FROM emp where JOB=’clerk’;
l 多條件查詢:SELETCT * FROM emp where JOB=’clerk’&&sal>800; //&&符號還可以用AND替代都表示與,||或XOR都表示邏輯或。
範圍內查詢(BETWEEN和AND):SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000;
範圍外查詢(NOT BETWEEN和AND):SELECT * FROM emp WHERE sal NOT BETWEEN 1000 AND 2000;
空值查詢:SELETCT * FROM emp WHERE sal IS NULL;
非空值查詢:SELETCT * FROM emp WHERE sal IS NOT NULL;
集合內數據查詢(IN):SELECT * FROM emp WHERE empno IN (7521,7782,7566,7788);
不在集合內數據查詢(NOT IN):SELECT * FROM emp WHERE empno NOT IN (7521,7782,7566,7788);
模糊查詢(LIKE):SELECT * FROM emp WHERE ename LIKE “A%”;
查找不匹配(NOT LIKE):SELECT * FROM emp WHERE ename NOT LIKE “A%”;
l “_”通配符,匹配單個字符;
l “%”通配符,匹配任意長度字符串;
三、排序數據查詢
單字段排序查詢(ORDER BY ,默認排序是升序):
l SELETC * FROM emp WHERE sal >1000 ORDER BY sal ASC
l SELETC * FROM emp WHERE sal >1000 ORDER BY sal DESC
(ASC升序,DESC降序)
【注意:MYSQL軟件中,如果字段的值爲NULL,則該值爲最小值,因此在降序排列中將最後顯示;升序排列中最先顯示。】
多字段排序查詢:
SELETC * FROM emp WHERE sal >1000 ORDER BY sal ASC, hiredate DESC;
四、限制數據查詢數量
關鍵字:LIMIT
示例1:SELECT * FROM emp WHERE sal > 1000 LIMIT 2; //指定顯示2條記錄
示例2:SELECT * FROM emp WHERE sal > 1000 LIMIT 0,5; //指定從第一條記錄開始, 顯示5條記錄。
五、統計函數和分組數據查詢
統計函數:
Count(): 對結果進行計數。
Max(): 查詢結果中的最大值
Min(): 查詢結果中的最小值
Avg(): 查詢結果的平均值
Sum(): 查詢結果的和
區別:
COUNT():忽略NULL
COUNT(*):統計所有記錄,包括NULL
Sum(): 查詢結果的和:
SELECT SUM(sal)sumvalue FROM emp; //查詢emp表中所有員工的工資總和
分組查詢:
關鍵字:GROUP BY
l 基礎查詢:
示例1:select emp_id, dep_id from employee group by dep_id;
l 多字段分組查詢:
示例2:select emp_id, dep_id from employee group by dep_id,hiredate;
l GROUP BY和HAVING一起使用:
-- having表示對分組進行條件篩選
select dep_id,group_concat(emp_name) from employee group by dep_id having count(emp_name)) > 2;