MySql之表記錄操作(查詢)
阿新 • • 發佈:2019-02-05
1、欄位(列)控制
1).查詢所有列
SELECT * FROM 表名;
2).查詢指定列
SELECT 列名1[,列名2,列名2,...] FROM 表名;
3).重複的記錄只出現一次
SELECT DISTINCT * | 列名1[,列名2,列名2,...] FROM 表名;
4).列運算
Ⅰ.資料相同的列可以做加、減、乘、除運算
SELECT sale*1.5 FROM emp;
SELECT sale+comm FROM emp;
Ⅱ.字串型別可以做連續運算
SELECT CONCAT('$',sal) FROM emp;
Ⅲ.轉換NULL值
有時需要把NULL值轉換成其他值,例如comm+1000時,如果comm列存在NULL值,那麼NULL+1000還是NULL,而我們希望把NULL當成0來運算.SELECT IFNULL(comm,0)+1000 FROM emp;
Ⅳ.給列起別名(as在使用時可以省略)
SELECT IFNULL(comm,0)+1000 AS 獎金 FROM emp;
2、條件控制
1).條件查詢
與UPDATE與DELETE語句一樣,SELECT語句也可以使用WHERE子句來控制記錄。SELECT empno,ename,sal,comm FROM emp WHERE sal>1000 AND comm IS NOT NULL; SELECT empno,ename,sal,comm FROM emp WHERE sal BETWEEN 20000 AND 30000; SELECT empno,ename,sal,comm FROM emp WHERE job IN ('經理','董事長');
2).模糊查詢
當你想查詢姓張,並且姓名一共兩個字的員工時,這時就可以使用模糊查詢,模糊查詢使用運算子LIKE。Ⅰ._匹配一個任意的字元,注意只匹配一個字元而不是多個。
SELECT * FROM emp WHERE ename LIKE '張_';
Ⅱ.%匹配0~N個任意字元,當查詢姓張,並且不管名字長度時可以使用。
SELECT * FROM emp WHERE ename LIKE '張%';
Ⅲ.當查詢名字包含張字的員工時,可以使用以下語句
SELECT * FROM emp WHERE ename LIKE '%張%';
Ⅳ.當模糊語句只有一個%時,此條件等同於不存在,但是姓名為NULL的查詢不出來。
SELECT * FROM emp WHERE ename LIKE '%';
3、排序
使用ORDER BY進行排序。1).升序:使用關鍵詞ASC,並且可以省略,它是預設的
SELECT * FROM emp ORDER BY sal ASC;
2).降序:使用關鍵詞DESC,不能省略
SELECT * FROM emp ORDER BY comm DESC;
3).使用多列作為排序條件,按照書寫順序,在前的先排序,前面相同時,再按照後一條件進行排序,以此類推。
SELECT * FROM emp ORDER BY sal ASC,comm DESC;
4、聚合函式
聚合函式用來做某列的縱向運算。
1).COUNT:計算指定列不為NULL的記錄的行數。
SELECT COUNT(*) FROM emp;
2).MAX:找出指定列最大的值
SELECT MAX(sale) FROM emp;
3).MIN:找出指定列最小的值
SELECT MIN(sale) FROM emp;
4).SUM:計算指定列的值的總和
SELECT SUM(sale) FROM emp;
5).AVG:計算指定列的值的平均值
SELECT AVG(sale) FROM emp;
5、分組查詢
分組查詢是把記錄使用某一列進行分組,然後查詢組資訊。
例如:查詢所有部門的記錄數。
SELECT job,COUNT(*) FROM emp GROUP BY job;
查詢每種工作的最高工資。
SELECT job,MAX(sale) FROM emp GROUP BY job;
*組條件HAVING的加入:WHERE無法使用聚合函式,而如果沒有HAVING就無法進行相關的測試了。
例如:查詢所有部門人數大於100的部門SELECT job,COUNT(*) FROM emp GROUP BY job HAVING COUNT(*) > 100;
6、LIMIT子句
LIMIT用於限制查詢結果的起始行,以及總行數。例如:查詢起始行為第五行,一共查詢三行記錄。
SELECT * FROM emp LIMIT 4,3;