Oracle

目录

1.使用LIKE运算符执行模糊查询(通配查询)

2.SQL优化问题:

3.多行函数与空值

4.count()函数

5.GROUP BY

6.having

7.序列sequence

8.视图(简单视图)

9.视图 (多表创建视图)

10.分页


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()函数

count(*) 返回组中总记录数目;
count(exp) 返回表达式 exp 值非空的记录数目;
count(distinct(exp)) 返回表达式 exp 值不重复的、非空的记录数目。
select count(*) from emp ;
select count( comm ) from emp ;
select count(distinct( deptno )) from emp ;

            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

使用序列
select seq_empcopy_id.nextval from dual
insert into empcopy   ( empno,ename ) values (seq_empcopy_id.nextval , ‘TEST’);
查看序列状态
select seq_empcopy_id.currval from dual
删除序列
drop sequence seq_empcopy_id ;

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值