查询特定列SELECT ename,birthday FROM emp;
查询所有的select*from emp;
给列起别名select ename AS 姓名, salary AS 工资 FROM emp;可以省略AS
可以简写为:select ename a,salary b from emp;可以省略AS
显示不同的记录(合并相同记录)SELECT DISTINCT sex FROM emp;
查询时执行计算 select 2+3*5+7.4*3.5回车 ;
查询所有员工姓名以及年薪
select ename AS 姓名,salary*12 AS 年薪 FROM emp;
或者:select ename,salary*12 FROM emp;
练习:假设每个员工工资增加500,年终奖5000,查询所有员工的姓名及其年薪,给列别起中文别名。
SELECT ename AS 姓名,(salary+500)*12+5000 AS 年薪 FROM emp;
查询结果集排序
结果从小到大:SELECT*FROM dept ORDER BY did ASC;ascendant
结果从大到小:SELECT*FROM dept ORDER BY did DESC;descendant
如果工资相同,按照姓名排序
SELECT * FROM emp ORDER BY salary DESC,ename;
如果性别相同,按照生日降序排列。
SELECT * FROM emp ORDER BY sex,birthday DESC;
ORDER BY 可以按照 数值、日期、时间、字符串来排序,默认按ASC升序排列;
单条件查询
查询编号为5的员工所有列SELECT *FROM emp WHERE eid=5;
查询姓名叫king的员工的编号,姓名,工资
SELECT eid,salary,ename FROM emp WHERE ename='king';
查询出20号部门下员工所有的列
SELECT * FROM emp WHERE deptId=20;
查询出工资在6000以上的员工所有列;
SELECT*FROM emp WHERE salary>=6000;
比较运算符:> < = !=不等于 <=
查询出1993-1-1以后出生的员工
SELECT*FROM emp WHERE birthday>'1993-1-1';
注意生日加引号!!!
查询出不在10号部门的员工的所有列;
SELECT*FROM emp WHERE deptId!=10;
特殊:NULL用IS 查询出没有明确部门的员工所有列
SELECT*FROM emp WHERE deptId IS NULL;
SELECT*FROM emp WHERE deptId IS NOT NULL;
多个条件查询
查询出工资大于6000的男员工所有列
SELECT*FROM emp WHERE salary>6000 AND sex=1;
查询出工资在5000~7000之间员工所有列
SELECT * FROM emp WHERE salary>=5000 AND salary<=7000;
写法二:SELECT*FROM emp WHERE salary BETWEEN 5000 AND 7000;
注意事项:必须是大于等于5000,小于等于7000,此时才可以用BETWEEN AND ;
工资不在7000-1万之间;
SELECT * FROM emp WHERE salary NOT BETWEEN 7000 AND 10000;
SELECT*FROM emp WHERE salary>10000 OR salary<7000;
注意事项:这个用的是 OR 上面是AND;
查询出1993之前和1995之后出生的所有列;
SELECT*FROM emp WHERE birthday>'1995-12-31' OR birthday <'1993-1-1';
IN用法
查询出20号部门和30号部门的员工所有列
SELECT *FROM emp WHERE deptId=20 OR deptId=30;
SELECT*FROM emp WHERE deptId IN(20,30);
查询出不在20号部门和30号部门员工所有列
SELECT*FROM emp WHERE deptId NOT IN (20,30);
SELECT *FROM emp WHERE deptId!=20 AND deptId!=30;
注意事项:
IS NULL / IS NOT NULL
AND / OR
BETWEEN...AND../ NOT BETWEEN..AND..
IN(10,20); / NOT IN (10,20);
模糊查询% _
查询名字里有e的
SELECT*FROM emp WHERE ename LIKE '%e%';
查询以e结尾的
SELECT*FROM emp WHERE ename LIKE '%e';
查询倒数第二个字是e
SELECT*FROM emp WHERE ename LIKE '%e_';
注意:% 可以匹配任意多个字符 >=0
_ 可以匹配任意1个字符 =1
以上两个匹配必须使用LIKE关键字
分页查询
数据太多一次显示不完,可以分页
需要两个条件:当前页码-每页数据量
每页的开始=(当前页码-1)*每页数据量
SELECT*FROM emp LIMIT start,count;
start=(当前页码-1)*每页数据量
注意:start和count的值必须是整数,不能是字符串形式。
假设每页显示5条记录
第1页:SELECT * FROM emp LIMIT 0,5;
第2页:SELECT * FROM emp LIMIT 5,5;
第3页:SELECT * FROM emp LIMIT 10,5;
第4页:SELECT * FROM emp LIMIT 15,5;
第5页:SELECT * FROM emp LIMIT 20,5;
查询汇总