ORACLE语句

序列
//(序列名一般以sq_开头,以“sq_表名”命名)
一般,一张表对应一个序列。
create sequence 序列名
start with n incrementby n;

--序列在使用前必须初始化,方法:序列名.nextval。
即:先select sq.nextval from dual,
    再select sq.currval from dual。
insert into test values(sq_test.nextval,'');

sql的执行顺序:先执行where

连接查询
效率较高
--内连接
--外连接:左外、右外(默认为左外)
--自连接
--交叉连接

查询“所有...”时,一般用外连接

===单行函数===对于从表中查询的每一行只返回一个值
数字函数:
round(sal,1)--四舍五入,保留一位小数
round(sal,-1)--四舍五入,保留到十位

--length()、trim()
--nvl(列名,0):如果列的值为null,就替换为0
nvl2(列名,value1,value2):
如果列的值不为null,就替换为value1
如果列的值为null,就替换为value2
--decode(列名,0,2300,2500,other):
例如:decode(sal,null,0,2300,2500,sal)
如果为null,显示0;如果为2300,显示2500;其他情况,显示本身


字符函数:substr(tid,1,2)/substr(tid,0,2)结果一样--从1开始截取2位
日期函数:SELECT SYSDATE FROM dual;
sysdate --当前系统时间
sysdate+1 --当前系统时间的下一天,即明天
sysdate+1/4 --当前系统时间的6小时后

转换函数:在以上3个函数间进行转换

--用户输入字符串格式,使用转换函数。
SELECT to_date('1224-12-12','yyyy-mm-dd') FROM dual;
--to_number():将字符串转为数值
--to_char可以指定格式
SELECT to_char(111111,'999,999') FROM dual;
-111111与999,999的长度要一样,'999,999'可以换成‘000,000’
0和9也可以混着用

其他函数

===分析函数====
用于排名
可以用于分页,但一般不用

row_number():无并列,连续。
rank():有并列,不连续。
dense_rank():有并列,连续。

select tname,deptno,
rank() over(partition by deptno order by sal) rank,
dense_rank() over(partition by deptno order by sal) dense_rank,
row_number() over(partition by deptno order by sal) 
from dept;
--先分组,再在组内排名
--必须要有over,且over内必须有order by表达式,指定以谁为标准
进行排名。

联合查询
--集合操作符,将两个查询结果合并为一个结果
UNION:并集,重复的只算一次。
UNION ALL:并集,全部加起来,算上重复的。
INTERSECT:交集
MINUS:补集

分页查询
--伪列(比索引查找快)
rowid:行在oracle中的存储地址--oracle的物理地址
rownum:结果集中行的序号,相当于“行号”,从1开始。
        基于结果集。
例:
select * from 
(
  select teacher.*,rownum as rn from teacher 
  where rownum<=10
)t
where t.rn>=5;
方法--分层
第一层:加限制条件,如order by
第二层:给结果集过滤最大的范围(10条)
第三层:给结果集过滤出最小的范围(从第几条开始)

select * from TEACHER t
--所有老师的姓名以及其导师
SELECT T1.TNAME, T1.MGRNO, T2.TNAME
  FROM TEACHER T1
  LEFT JOIN TEACHER T2
    ON T1.MGRNO = T2.TNO;
--函数
--日期函数(日期以数值进行存储)
SELECT SYSDATE FROM dual;

--用户输入字符串格式,使用转换函数。
SELECT to_date('1224-12-12','yyyy-mm-dd') FROM dual;
--to_number():将字符串转为数值
--to_char可以指定格式
SELECT to_char(111111,'999,999') FROM dual;
--length()、trim()
--nvl()/nvl2()
--decode():如果为null,显示0;如果为2300,显示2500;其他情况,显示本身
--decode(sal,null,0,2300,2500,sal)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值