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;