目录
1.使用LIKE运算符执行模糊查询(通配查询)
% 表示零或多个字符 _ 表示一个字符
对于特殊符号可使用ESCAPE 标识符来查找
select * from emp where ename like 'S%';
select * from emp where ename like '_A%';
select * from emp where ename like '%\_%' escape '\';
2.SQL优化问题:
AND: 把检索结果较少的条件放到后面
OR: 把检索结果较多的条件放到后面
函 数 | 功 能 |
NVL(EXP1, EXP2) | 如果exp1的值为null,则返回exp2的值,否则返回exp1的值 |
NVL2(EXP1, EXP2, EXP3) | 如果exp1的值为null,则返回exp2的值,否则返回exp3的值 |
DECODE(VALUE,IF1,THEN1, IF2,THEN2,……,ELSE) | 如果value的值为if1,则返回then1的值,如果value的值为if2,则返回then2的值,……,否则返回else值 |
3.多行函数与空值
多行函数除了count(*)外,都跳过空值而处理非空值
select count(comm),sum(comm),avg(comm) from emp;
可使用NVL()函数强制多行函数处理空值
select count(nvl(comm,0)),sum(nvl(comm,0)),avg(nvl(comm,0)) from emp
4.count()函数
select count(nvl(comm,0)) from emp
5.GROUP BY
select deptno, avg(sal) from emp group by deptno;
select deptno, job, count(*),avg(sal) from emp group by deptno, job;
6.having
在emp表中,列出工资最小值小于2000的职位
select job,min(sal) from emp group by job having min(sal)<2000
列出平均工资大于1200元的部门和工作搭配组合
select deptno, job, avg(sal) from emp group by deptno,job having avg(sal) > 1200 order by deptno,job;
7.序列sequence
8.视图(简单视图)
创建视图 : CREATE VIEW test_view_1 AS SELECT `name` FROM t_user;
查询视图 : SELECT * FROM test_view_1;
删除视图 : Drop view test_view_1;
9.视图 (多表创建视图)
CREATE VIEW test_view_2 (username, userage, usersex) AS SELECT
t_user.`name`,t_user_info.age,t_user_info.sex
FROM t_user,t_user_info
WHERE t_user.id = t_user_info.uid;
10.分页
步骤1:显示按照工资排序的所有员工
select * from emp order by sal desc
步骤2:把步骤1结果看做一张表,查询该表的前10条数据
select rownum, t.* from ( select * from emp order by sal desc ) t where rownum <=10
步骤3:以步骤2结果为表,获取前6-10条件数据
select * from(select rownum r, t.* from ( select * from emp e order by sal desc ) t where rownum <=10) where r>5