------------------------------------------------- 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