一、簡單查詢
# 查詢t_emp表的所有字段
SELECT * FROM t_emp;
# 查詢t_emp表的指定字段
SELECT ename, empno FROM t_emp;
# 為sal*12列名起一個名字叫incom
SELECT empno, sal*12 AS "incom" FROM t_emp;
執(zhí)行順序: 詞法分析與優(yōu)化->FROM->SELECT
二、高級查詢
2.1 分頁
看朋友圈,只會加載少量的部分的信息,不用一次性加載全部的朋友圈,那樣會浪費CPU、時間,內存和網絡帶寬
如果結果集很多,則可以使用LIMIT關鍵字限定結果集的數量。
# 分頁處理
# SELECT ... FROM ... LIMIT 起始位置,偏移量;
# 起始位置不寫,默認是0
SELECT empno, ename FROM t_emp LIMIT 0, 5;
執(zhí)行順序: FROM->SELECT->LIMIT
2.3 結果集排序
# 查出來的結果排序, ORDER BY 字段名稱,默認升序
SELECT empno, ename, sal, deptno FROM t_emp ORDER BY sal;
# 降序排列 DESC 升序:ASC
SELECT empno, ename, sal, deptno FROM t_emp ORDER BY sal DESC;
多字段排序:
# 當指定的排序字段一致時,默認再按照主鍵的升序排序
# 但是可以指定多關鍵字排序
SELECT empno, ename, sal, hiredate FROM t_emp ORDER BY sal DESC, hiredate ASC;
排序+分頁
# 例子:查出公司工資前5的員工
SELECT empno, ename, sal FROM t_emp ORDER BY sal DESC LIMIT 0, 5;
執(zhí)行順序: FROM->SELECT->ORDER BY->LIMIT
2.4 去重
DISTINCT的使用: 結果集中的重復記錄 ——>去除重復記錄
- DISTINCT只能有一個字段,當查詢有多個字段時,DISTINCT會失效
- DISTINCT關鍵字只能在SELECT子句中使用一次
- DISTINCT關鍵字必須加在第一關鍵字前面,也只能有一個關鍵字
例子: 想要看看員工一共有哪幾種工作,這時要求不重復顯示
SELECT DISTINCT job FROM t_emp;
三、條件查詢
SELECT empno, ename, sal FROM t_emp WHERE (deptno=10 OR deptno=20) AND sal >= 2000;
例子:找出部門為10, 年收入(sal+comm)超過15000并且工齡超過20年的員工
SELECT empno, ename, sal, hiredate
FROM t_emp
WHERE deptno=10 AND (sal + IFNULL(comm,0))*12>=15000 AND DATEDIFF(NOW(),hiredate)/365>=20;
注意:
-
任何值與NULL加減乘除之后依然時NULL
-
IFNULL()函數,如果第一個參數為NULL,返回第二個參數
-
DATEDIFF()兩個日期參數,返回天數
-
NOW()函數返回當前的日期和時間
3.1 算術運算符
+ - * / %
3.2 比較運算符
>, <, >=, <=, =, !=, IN
IN為包含
表達式 | 意義 | 例子 |
---|---|---|
IS NULL | 為空 | comm IS NULL |
IS NOT NULL | 不為空 | comm IS NOT NULL |
BETWEEN AND | 范圍 | sal BETWEEN 2000 AND 3000 |
LIKE | 模糊查詢 | ename LIKE “A%” |
REGEXP | 正則表達式 | ename REGEXP “[a-zA-Z]{4}” |
注釋: LIKE“A%” 指的是以A開頭,“%A”表示以A結尾,“%A%”表示字段中包含A
# 在部門10,20,30中查找工作不是銷售,入職日期在1985-01-10之前的
SELECT empno, ename, sal, deptno, hiredate
FROM t_emp
WHERE deptno IN(10, 20, 30) AND job != "SALESMAN" AND hiredate<"1985-01-10";
例子: 查找傭金不為空的員工,并且底薪是2000到3000,并且名字以A開頭的員工
SELECT ename, comm, sal
FROM t_emp
WHERE comm IS NOT NULL
AND sal BETWEEN 2000 AND 3000
AND ename LIKE "A%";
3.3 邏輯運算符
AND, OR, NOT, XOR
`
例子: 查詢不在10,20部門的員工
SELECT ename, deptno
FROM t_emp
WHERE NOT deptno IN(10, 20);
3.4 按位運算符
二進制運算
& | ~ ^ << >>
文章來源:http://www.zghlxwxcb.cn/news/detail-599373.html
3.5 WHERE子句的注意事項
- WHERE子句中,條件執(zhí)行的順序是從左到右的。所以應該把索引條件,或者篩選掉最多的條件寫在最左側
- 條件優(yōu)先級:索引條件、篩選掉最多的記錄的條件、普通檢索條件
執(zhí)行順序: FROM->WHERE->SELECT-> ORDER BY->LIMIT
文章來源地址http://www.zghlxwxcb.cn/news/detail-599373.html
到了這里,關于數據庫的基本查詢(二)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!