Oracle 中主要的数据类型
Varchar2 变长字符串 4000个汉字 varchar2(1~4000)
Number 数字 Number = Number(10) =Number(10,0)
Number(总长度,小数点后有几位)
DATE 日期 DATE 进行操作的时候必须使用函数 TO_DATE('2009-11-11','yyyy-mm-dd')
CLOB 大的字符数据对象 2G CLOB Stream
BLOB 大的二进制数据对象 2G BLOB Stream
1 数据类型[oracle 内置的数据类型 - 因为oracle允许自定义数据类型]
* VARCHAR2() 变长字符串,长度<4000
NVARCHAR2() ---本地字符集 变长字符串,长度<4000
* NUMBER() 数字类型 Number = Number(10) =Number(10,0)
FLOAT(p) 浮点类型 FLOAT(p)=number(22,p)
* Date 日期 【精确到日】
* TIMESTAMP 时间戳 【精确到毫秒】
CHAR(n) 字符 用来定义一些标记,一般用单字符[char(1)]
* CLOB 大字符对象, 存储类似于新闻正文、文件内容....等数据
* BLOB 大二进制对象,picture[NCIIS中数码照片]
原则 1: 建表
1 能不用Lob类型尽量不用
2 字段定义的总长度越短越好
3 尽量使用简单数据类型
4 尽量使用代码表
5 主键必须有,尽量不使用联合主键,
6 主键必须没有实际意义,尽量使用Number
--------------------------------------------------------------------
原则 2 :索引
1 索引尽量使用查询条件
2 索引尽量使用简单数据类型
3 索引应该小于4个
2 常用函数
A 系列
ABS 绝对值 ABS(Number)
ASCIISTR 得到ASCII字符串
ASCII 得到ASCII字符代码
---------------
日期系列
ADD_MONTHS 添加x月到某一个日期 ADD_MONTHS(DATE,Number)
CURRENT_DATE 当前时间 select current_date from dual;
CURRENT_TIMESTAMP 当前时间戳 select CURRENT_TIMESTAMP from dual;
SYSDATE 当前系统时间 select SYSDATE from dual;
SYSTIMESTAMP 当前系统时间戳 select SYSTIMESTAMP from dual;
TO_CHAR 格式化时间成为字符串 TO_CHAR
TO_TIMESTAMP 格式化成为时间戳 TO_TIMESTAME
TO_DATE 格式化成为日期 TO_DATE
select to_char(sysdate,'yyyy-mm-dd') from dual;
select to_date('1900-1-1','yyyy-mm-dd') from dual;
select TO_TIMESTAMP('1900-1-1 11:37:58','yyyy-mm-dd HH:MI:SS') from dual;
年 yyyy
月 mm
日 dd
时 HH HH24 HH12
分 MI
秒 SS
--------------------------
字符系列
CHR() 把 ASCII 码 变成字符 --- ASCII()
CONCAT 连接字符串 【相当于 || 】
INITCAP 首字母大写 忽略中文
LOWER 全部小写 忽略中文
UPPER 全部大写 忽略中文
SUBSTR 截取字符串 substr('src',start,length) ==> [start,start+length)
substr('src',start)=substr('src',start,length('src'))
length 得到一个字符串的长度【字符长度】 select length('s忽略中文c') from dual
REPLACE
select replace('abbbabbbaxxxx','ba','-:-') from dual;
select replace('_a_a_a_','_a_','T') from dual;
LTRIM 去掉前空格
RTRIM 去掉后空格
TRIM 去掉前后空格
LPAD 在前面补齐 lpad('p01 x',15,'ABCDEF')
RPAD 在后面补齐 rpad('p01 x',15,'ABCDEF')
当 补齐长度小于原始字符串长度的时候,相当于 substr('src',1,length);
Exp 导出数据
exp username/password@sid file=exp.dmp OWNER=abc
导出数据到文件 exp.dmp ,数据是abc所拥有的所有的内容
IMP 导入数据
imp username/password@sid file=exp.dmp fromuser=abc touser=abc
导入数据文件 exp.dmp数据中abc所拥有的所有的内容到数据库abc的用户的schema中
select INITCAP('china bus 好人yi') from dual;
select LOWER('China Bus 好人yi') from dual;
select UPPER('China Bus 好人yi') from dual;
------------------------------------------------------------------------
1 jdbc连接oracle
2 sql - select -聚合函数
dual 只有一条记录
insert into abc_1 values(1,to_date('1990-1-1','yyyy-mm-dd'))
insert into abc_1 values(1,sysdate)