oracle函数及相关问题

show user 查看当前用户
select * from tab; 查看当前数据库中的表
desc 表名 ; 查看表结构


between and 包含开头结尾

函数:

months_between(a,b) 两时间间隔月数 a大时间 b小时间
add_months(a,b) 添加月数,a时间 b月数数字
next_day(a,'星期一') 查看下一个星期一的时间 a 时间
last_day(a) 当前月份最后一天

to_char(sysdate,'YYYY-MM-DD') -- 2022-03-03
to_char(sysdate,'fmYYYY-MM-DD') -- 2022-3-3
to_char(11111,'99,999') -- 数字格式化成 111,111 9代表一位数字

to_number("10") 数值类型字符串 转数字
to_date(a,b) 时间字符串转时间

nvl(a,b) 空值处理 若a为空将替换成b
nvl2(a,b,c) 若a非空,返回b,否则返回c
decode(a,b,c,……,d) 相当与 if /else if /else, a为字段,bc成对 若a=b就返回c,所有成对的都不满足返回d
case when boolean then value1 when boolean then value2 else value3 end

min(a) a的最小值
max(a) a的最大值
avg(a) a的平均值
sum(a) a的求和
ceil(a) 大于或等于a的最小整数
floor(a) 小于或等于a的最大整数
mod(a,b) a除以b的余数
round(a,b) 四舍五入,a:值 b:需要保留的小数
trunc(a,b) 取整,a值 b需要保留的小数位,不进行四舍五入

lpad(a,b,c) 左补全 a为字段值,b为需要返回的字段长度,若b的值小于a的长度,返回值是a左侧截取b的长度,c是需要在左侧补全的字符,可缺省
rpad(a,b,c) 右补全, a为字段值,b为需要返回的字段长度,若b的值小于a的长度,返回值是a左侧截取b的长度,c是需要在右侧补全的字符,可缺省

length(a) a的长度
lower(a) 将a转成小写
upper(a) 将a转成大写

ltrim(a,b) 将a左侧的b截去,b缺省空格
rtrim(a,b) 将a右侧的b截去,b缺省空格
trim(a from b ) 将a左右两侧的b截去,b缺省空格
replace(a,b,c) 将a中的b替换成c
substr(a,b,c) 截取, a值 ,b开始位置,索引从1开始,0不截取,c需要截取的长度


select * from table1,table2 笛卡尔积
oracle查询语句执行顺序:
1.FROM 2. ON 3.JOIN 4.WHERE 5.GROUP BY 6.WITH CUBE or WITH ROLLUP 7.HAVING 8.SELECT 9.DISTINCT 10.ORDER BY 11.TOP

1、FROM 子句:执行顺序为从后往前、从右到左。数据量较少的表尽量放在后面。
2、WHERE子句:执行顺序为自下而上、从右到左。将能过滤掉最大数量记录的条件写在WHERE 子句的最右。
3、GROUP BY:执行顺序从左往右分组,最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉。
4、HAVING 子句:消耗资源。尽量避免使用,HAVING 会在检索出所有记录之后才对结果集进行过滤,需要排序等操作。
5、SELECT子句:少用*号,尽量取字段名称。ORACLE 在解析的过程中, 通过查询数据字典将*号依次转换成所有的列名, 消耗时间。
6、ORDER BY子句:执行顺序为从左到右排序,消耗资源。


inner join
left join
right join
full join 并集

Oracle 有事务回滚的 对增删改 需执行commit才会真正提交,rollback可以回滚commit之前的增删改
update 可以起到锁的作用,两条相同的update语句,只有前一条commit或rollback ,下一条才会执行
select * from table for update ,对同一表查询,只有commit或rollback ,下一条查询语句才会执行

posted @ 2022-03-31 23:07  我没有出家  阅读(33)  评论(0编辑  收藏  举报