1. 程式人生 > >MySql之表記錄操作(查詢)

MySql之表記錄操作(查詢)

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;