DQL
基本select
select * from emp
|| 连接
select ename||','||sal from emp;
distinct
select distinct job from emp;
count()
select count(distinct job) from emp;
null ' '
select * from emp where comm is null;
' ' null + 任何数做四则运算 结果为空
nvl (null,100) 空值转换
select * from emp where deptno = 10 or deptno = 20;
忽略大小写
select * from emp where lower(job) = lower('clerK');
select sysdate from dual;
通配符 % 多个 _表示一个
select * from emp where ename like '_A%';
查找名字包含 %的字符 escape 提示作用 ‘ \ ’
select ename from emp where ename like '%\%%' escape '\';
对范围内查询结果排序
select * from emp where deptno in (10,20) order by deptno desc;
按照字段排序
select * from emp where deptno in (10,20) order by 6 desc 1 asc ;
查询ASCII、
select ascii('a'),ascii('A') from dual;
97 65
排序 控制放最后
select * from emp order by comm nulls last;
取工资最高的前五名
select * from (select * from emp order by sal desc) t where rownum <=5;
分页select
用rownum 分页
select t.*,rownum in1 from (select t1.*,rownum in0 from emp t1 order by sal desc) t
in0乱掉了,因为排序了。in1可以用 但是不能 <= >=操作 需要在嵌套一层。用中间的
select tt.* from ( select t.*,rownum in1 from (select t1.*,rownum in0 from emp t1 order by sal desc) t) tt where tt.in1>2;
这里需要注意的是 oracle 查询是现有数据,在添加伪列rownum(已有数据的伪编号),所以说数据是从 rownum = 1 这个作为起始的。
如果 rownum > 2 或者 rownum != 1 这种操作,始终没有 rownum = 1 这条数据。那么每一条都是第一条。就查不出数据了。
所以需要再嵌套一层,把之前固定查询好的结果集拿来用。
offset 0 row fetch 5 row only (12c以上版本有效)
select t.* , rownum from emp t order by sal desc offset 0 row fetch 5 row only
DML
insert update delete merge
根据empno 修改emp表名称
update emp set ename = ‘A_B%C’ where empno = 7788;
DDL
create alter drop
会话期间修改
alter session set nls_date_format=‘yyyy-mm-dd’
永久有效
alter system set nls_date_format=‘yyyy-mm-dd’
select ‘drop table ‘||tname||’;’ from tab;
以现有的表创建新表
create table emp2 as select * from emp;
DCL
grant revoke
终端调整
column tname format a30
关键词 字段 关键字 字符 30个宽度
desc emp
描述表字段 表名称
设置显示列
set lines 200
基本类型
number(p,s) p - 0~38
s - -84~127
varchar(n) n 0-4000 位
char(n) n 1-2000
timestamp(6) 精度
解析过程
1.from 2 where 3 select 4 order by
注意事项
写sql最好带着where 语句。 oracle 工作时检索不是耗时的,排序耗时,减少不必要的数据和排序