1.查询字段新名字
select ename as ‘员工姓名’ from emp;
2.不等于
<> 或 !=
3.范围查询
between … and:包括最大值和最小值
4.符号优先级
用括号,不要记
5.对于null
为空:is null
不为空:not null
6.模糊查询:like
_代表一个字符
%代表多个字符
例:查询姓名以M开头所有的员工
select * from emp where ename like ‘M%’;
以N结尾: ‘%N’
包含O: ‘%O%’
第二个字符是A: ‘_A%’
6.in
更适合一个集合,如果只有两个用or比较好
7.排序
order by(默认小到大)
降序:order by 字段 desc
多字段排序:order by job desc, sal desc;(第一个字段排序重复了,会根据第二个字段排序)
8.分组函数(也称聚合函数)
注意:分组函数不能直接使用在where关键字后面,可以用在having后面。
mysql> select ename,sal from emp where sal > avg(sal);
ERROR 1111 (HY000): Invalid use of group function
9.分组查询
(1)group by(初步分组)
order by必须放到group by后面
(2)二次过滤having
10.连接查询
select 字段 from 表1 join 表2 on 连接条件 where 查询条件
内连接:
select e.ename, e.sal, d.dname from emp e join dept d on e.deptno=d.deptno where e.sal>2000;
外连接:
将join改成left join或right join
11.子查询
(1)where子句子查询
(2)在from语句中使用子查询,可以将该子查询看做一张表
select e.empno, e.ename from emp e join (select distinct mgr from emp where mgr is not null) m on e.empno=m.mgr;
12.limit
select * from emp limit 5; //取得前五条数据
select * from emp limit 1,5; //查询下标是从0开始,所以就是从第二条开始取五条数据
13.having
和where类似
GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。HAVING语句必须在ORDER BY子句之后,group by 之后
14.取n位小数
round(语句,n)
15.绝对值=1
abs(x-y)=1
16.any,some,all的用法
– >ALL 父查询中的结果集大于子查询中每一个结果集中的值,则为真 SELECT * FROM T2 WHERE N>ALL (SELECT N FROM T1)
– >ANY,SOME 父查询中的结果集大于子查询中任意一个结果集中的值,则为真
SELECT * FROM T2 WHERE N>ANY(SELECT N FROM T1)
SELECT * FROM T2 WHERE N>SOME(SELECT N FROM T1)
17.case when 和if
(1)IF(condition,arg1, arg2)如果condition为真,arg1,否则arg2
(2)UPDATE salary
SET
sex = CASE sex
WHEN ‘m’ THEN ‘f’
ELSE ‘m’
END;
当性别为男时,改为女,其余的改为男。就实现了男女性别互换。
18.保留两位小数用round(属性,2)
19.cross join:生成的是笛卡尔积,不能用on做条件筛选