oracle函数及相关问题


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


between and 包含开头结尾

函数:
substr(a,b,c) 截取 a值 b开始位置,索引从1开始,0不截取,c结束索引位置
round(a,b) 四舍五入,a:值 b:需要保留的小数
trunc(a,b) 取整,a值 b需要保留的小数位,不进行四舍五入
mod(a,b) 取余

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
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()
max()
avg()
sum()


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 ,下一条查询语句才会执行