oracle高阶知识点

------------------------------------------------- varchar2(4000)字符型,最大长度不能超过4000,与char的区别是不用空格补足 number(1)标志 number(10)整型 number(14,4)小数 -------------------------------------------------- date 日期 Clob大文本字段(文章,读取时需要一些特殊处理) Blob二进制字段(附件)

tuuncate清空表快,效果强烈,属于DDL---数据定义语言,数据被删除后无法回滚 delete删除后可以rollback,即使已经commit,属于数据操作语言

普通视图(虚拟的表,就是一个查询)和物化视图(查询结果存到硬盘里)

物化视图类型(刷新方式不同) on demand on commit

 

存储过程(无返回值) 包(缺点:耦合的高) 自定义函数(有返回值)

数据很大时,将数据库数据取到内存中,进行操作 好处:减少同数据库的交互

触发器

导入导出命令,可保存为bat来执行 如果导入前,表中数据非空,需先清空表

------- ---------------------------------------------------

distinct group by分组     having过滤分组

---------------------------------------------------

子查询 in

create table t_m_s as select * from ... where 1<>1;//创建一个与该视图具有相同结构的空数据表

向表中批量插入数据 insert into  ... select * from ... where ... 列名不要省

---------------------------------------------------

联合语句 union取并集(排除重复) union all取并集(不排除重复) intersect取交集 minus减 运算没有优先级,从左到右

----------------------------------------------------

连接 cross join 笛卡尔积 inner join 仅对满足连接条件的cross中的列 left outer join

----------------------------------------------------

update,最容易被忽略的是添加where条件,没有添加限制条件,将更新全部。 单表视图是可以更新的,多表视图是不允许更新的 select * from ... for update

----------------------------------------------------

常见函数

lpad(),向左补全字符串 rpad(),向右补全字符串 lower() upper() length()

-------------------------------------------------------

substr(string,start_index,length)

截取字符串 instr()获得字符串出现位置 取文件名(exception:多个点号,不存在点号。。。)

-------------------------------------------------------

oracle中的‘空’

---------------

‘’和null是一样的 空字符串就是空,空就是空字符串

select length('') from dual;返回为空

-------------------------------------------------------

精度与小数位数

-------------------------------------------------------

abs() round()

SQL> select round(23.37,1)from dual;   ROUND(23.37,1)

--------------          

23.4 ------------------------------------------------------

ceil() floor()

trunc()截取数字 mod()取余

------------------------------------------------------------

sysdate-1

last_day()

add_month()加上月份

months_between()

trunc()截取日期

-------------------------------------------------------------

to_char()格式化日期

SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;  

TO_CHAR(SYSDATE,'YYYY-MM-DD')

-----------------------------

2013-12-05  

SQL> select to_char(sysdate,'yyyy/mm/dd') from dual;

  TO_CHAR(SYSDATE,'YYYY/MM/DD')

-----------------------------

2013/12/05

-------------------------------------------------------------

max,min数字,字符,日期都可以用 avg数字

count(id)单列 count(*)统计所有列

decode()多值判断函数,相当于if else,减少代码量,

oracle专用 nvl()函数,空值处理

-------------------------------------------------------------

 rownum 返回结果集的行号

select rownum,t.* from ... t where rownum<5 order by salary(假分页)

select rownum,a.* from (select )(真分页)

-------------------------------------------------------------

between数字, in like模糊匹配(区分大小写)

-------------------------------------------------------------

排名函数

rank()    dense_rank()     row_number()

------------------------------------------------------------

优化sql语句

 exist 表存在,速度快  in 表匹配

---------------------------------------------------------------

硬盘是ntfs的,可以用everything

 

 

你可能感兴趣的:(oracle高阶知识点)