1. 程式人生 > >mysql之後查詢相關(單表)

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;