mysql之後查詢相關(單表)
1mysql的加法運算
mysql使用加法運算的時候,如果相加的兩個欄位或者其中的一個欄位不是數字型別,則會轉換為0,再相加。如下圖所示:
如果將ename屬性和job屬性相加,則會得出如下結果:
SELECT ename+job FROM emp;
如果將sal和comm相加,當comm為空的時候,相加的結果為空,如下所示:
SELECT sal,comm,sal+comm FROM emp;
為了解決這個問題,可以使用ifnull()函式,如下所示:
SELECT sal,comm,sal+IFNULL(comm,0)FROM emp;
2mysql的字串連線
SELECT CONCAT('我是',ename,'我的工作是',job) '描述'FROM emp;
3mysql的條件查詢(單表)
3.1查詢員工工資大於20000的員工
SELECT * FROM emp WHERE sal>20000;
3.2#查詢有獎金的員工
SELECT * FROM emp WHERE comm IS NOT NULL;
3.3查詢工資在20000萬到30000之間的員工
SELECT * FROM emp WHERE sal BETWEEN 20000 AND 30000;
3.4查詢所有的經理和分析師
SELECT * FROM emp WHERE job IN('經理','分析師');
4mysql之模糊查詢
模糊查詢主要通過_和%配合like來使用,其中_表示匹配一個字元,而%表示匹配0到n個字元。
4.1查詢姓張,且為單名的學生
SELECT * FROM stu WHERE sname LIKE '張_';
4.2查詢帶有剛字的學生的名字
SELECT * FROM stu WHERE sname LIKE '%剛%';
5mysql之聚合查詢(聚合查詢其實是縱向查詢)
5.1count()括號裡面可以填*,填*表示一行只要有一個欄位不為null,他就統計為1,除了可以填*還可以填列欄位,填列欄位表示該列值不為null的總行數。此外還可以填數字,填數字的效果和填*是一樣的。
SELECT COUNT(*) FROM emp; SELECT COUNT(comm) FROM emp; SELECT COUNT(1) FROM emp;
結果如下所示:
5.2sum()表示求和,其中括號裡面填寫的是列的欄位,如果該欄位不是數值型別,他會將改欄位轉為為0,如果欄位是數值型別並且該欄位中帶有null,他能自動將null轉為0,從而不影響求和。如下所示:
SELECT SUM(sal) FROM emp;
SELECT SUM(comm) FROM emp;
SELECT SUM(ename) FROM emp;
5.3max()表示求欄位中的最大值,其中括號裡面表示的是某個列的欄位
SELECT MAX(comm) FROM emp;
5.4min()表示求欄位中的最小值,其中括號裡面表示的是某個列的欄位
SELECT MIN(comm) FROM emp;
5.5 avg()表示求欄位中所有值的平均值,是所有值的和除以該欄位中不為null的值的總數
SELECT AVG(comm) FROM emp;
6mysql之分組,注意按照組分,select選擇的屬性只能是分組的屬性或者是聚合函式,where是分組之前篩選,而having是分組之後再篩選。
6.1按照部門分類,其中要把工資低於15000的去掉,並且計算去掉低於15000之後,每個部門的人數
SELECT deptno,COUNT(*) FROM emp WHERE sal>15000 GROUP BY deptno;
6.2按照部門分類,其中要把工資低於15000的去掉,並每組人數小與等於2的去掉,求出每個部門的人數
SELECT deptno,COUNT(*) FROM emp WHERE sal>15000 GROUP BY deptno HAVING COUNT(*)>2;
7MySQL之範圍查詢(limit)
其中,第一個引數表示從哪一條記錄開始, 第二引數表示每一頁顯示的條數。如下所示,表示從第一條記錄開始,每一次顯示兩條記錄。注意,下一頁的第一條記錄是:(該頁的頁數-1)*每一頁顯示的條數
SELECT * FROM emp LIMIT 0,2;