ORACLE基本认识(一)

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 工作时检索不是耗时的,排序耗时,减少不必要的数据和排序

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值