oracle数据库常用知识1

来源:互联网 发布:天天向上四大网络作家 编辑:程序博客网 时间:2024/05/01 00:18
1.数据库中ROWNUM是内置函数把查出的结果集排序从1开始排,可用于在分页系统中。关于Oracle数据中ROWNUM的理解使用,rownum这个函数变数必须是从1开始编号。是加的一列伪序列
    例:select rownum r from a_table where r>3;查的肯定是空集,因为查询的结果编号从1开始编号,当查出第一个结果的时候
没有满足r>3,则会自动删除,以此类推每个都不满足肯定是空集的。
    解决方案:可以使用先查询出来结果然后在进行条件的筛选:select * from (select rownum r from a_table) where r>3;
(注意:上述后查询的字段一定要先在第一个查询中查询出来)
2.实现更新的两种形式:SELECT * from tablename FOR update 或  select t.*,t.rowid from tableName t(推荐使用),for update会经常导致锁表。
3.case when的用法:case when 条件 then 值1 else 值2 end。
4.group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后。子查询概念 :当一个查询的结果是另一个查询的条件时,称之为子查询。
5.ORACLE中更改字段名:alter table [表名]  rename column 旧的字段名 to 新的字段名;
6.sql执行顺序:先执行From ->Where ->Group By->Order By。执行From 字句是从右往左进行执行。因此必须选择记录条数最少的表放在右边。
Where字句其执行顺序是从后向前执行、因此可以过滤最大数量记录的条件必须写在Where子句的末尾.
7.sql中where子句后的条件(+)相当于两个表外连接。
8.oracle中nvl(exp1,exp2) ;如果exp1为空则显示第二个值。
9.to_char和to_date的区别:①.to_char 是把日期或数字转换为字符串。②.to_date 是把字符串转换为数据库中得日期类型
10.先分组在排序:ROW_NUMBER() OVER(partition by col1 order by col2) 表示根据col1分组,在分组内部根据col2排序.rownum是一个伪序列,且始终从结果集1开始进行编号。rank()是跳跃排序rank()是跳跃排序,有两个第二名时接下来就是第四名。
 dense_rank()l是连续排序,有两个第二名时仍然跟着第三名
11.Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
    Union all:对两个结果集进行并集操作,包括重复行,不进行排序;
12.TRUNCATE TABLE tableName;表示删除表中的数据,只保留表结构。
13.创建同义词语句:create public synonym table_name for user.table_name;
    如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:
create synonym table_name for table_name@DB_Link; 
    授权:grant insert, update, delete, references, alter, index on T_APP_FEE_TYPE to OA_OPR;
14.可以遍历树:START  WITH branch_id='1' CONNECT BY  parent_id= PRIOR branch_Id
0 0