oracle 基础

ORACLE基本数据类型

字符串

固定长度类型(CHAR/NCHAR) 

CHAR:定长字符串,会用空格填充来达到其最大长度。

可变长度类型(VARCHAR2/NVARCHAR2)

NVARCHAR2:包含UNICODE格式数据的变长字符串

注意:数据库的NLS_CHARACTERSET 为AL32UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节。

数据类型

长度

说明

CHAR(n BYTE/CHAR)

默认1字节,n值最大为2000

末尾填充空格以达到指定长度,超过最大长度报错。默认指定长度为字节数,字符长度可以从1字节到四字节。

NCHAR(n)

默认1字符,最大存储内容2000字节

末尾填充空格以达到指定长度,n为Unicode字符数。默认为1字节。

NVARCHAR2(n)

最大长度必须指定,最大存储内容4000字节

变长类型。n为Unicode字符数

VARCHAR2(n BYTE/CHAR)

最大长度必须指定,至少为1字节或者1字符,n值最大为4000

变长类型。超过最大长度报错。默认存储的是长度为0的字符串。

VARCHAR

同VARCHAR2

不建议使用

数字

NUMBER(P,S):

P 精度缩写,表示有效数字的位数

S 正数时,表示从小数点到最低有效数字的位数,负数时,表示从最大有效数字到小数点的位数

INTEGER和FLOAT类型也是NUMBER的子类型。

INTEGER:等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。

Float(n):数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。

数据类型

长度

说明

NUMBER(p[,s])

1-22字节。

P取值范围1到38

S取值范围-84到127

存储定点数,值的绝对值范围为1.0 x 10 -130至1.0 x 10 126。值大于等于1.0 x 10 126时报错。p为有意义的10进制位数,正值s为小数位数,负值s表示四舍五入到小数点左部多少位。

BINARY_FLOAT

5字节,其中有一长度字节。

32位单精度浮点数类型。

符号位1位,指数位8位,尾数位23位。

BINARY_DOUBLE

9字节,其中有一长度字节。

64位双精度浮点数类型。

日期

DATE:Oracle 存储以下信息:世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。

TIMESTAMP:有小数秒的信息

DATE类型转换成TIMESTAMP类型:CAST(date1 AS TIMESTAMP)

数据类型

长度

说明

DATE

7字节

默认值为SYSDATE的年、月,日为01。包含一个时间字段,若插入值没有时间字段,则默认值为:00:00:00 or 12:00:00 for 24-hour and 12-hour clock time。没有分秒和时间区。

TIMESTAMP [(fractional_seconds_precision)]

7至11字节

fractional_seconds_precision为Oracle存储秒值小数部分位数,默认为6,可选值为0到9。没有时间区。

TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE

13字节

使用UTC,包含字段YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_

HOUR, TIMEZONE_MINUTE

TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE

7至11字节

存时使用数据库时区,取时使用回话的时区。

INTERVAL YEAR [(year_precision)] TO MONTH

5字节

包含年、月的时间间隔类型。year_precision是年字段的数字位数,默认为2,可取0至9。

INTERVAL DAY [(day_precision)]

TO SECOND [(fractional_seconds_precision)]

11字节

day_precision是月份字段的数字位数,默认为2,可取0至9。

时间字段可取值范围:

时间字段

时间类型有效值

时间间隔类型有效值

YEAR

-4712至9999,包括0

任何整数

MONTH

01至12

0至11

DAY

01至31

任何整数

HOUR

00 至 23

0 至 23

MINUTE

00 至 59

0至 59

SECOND

00 to 59.9(n),9(n)不适用与DATE类型

0 to 59.9(n)

TIMEZONE_HOUR

-1至14,不适用与DATE和TIMESTAMP类型

不可用

TIMEZONE_MINUTE

00至59,不适用与DATE和TIMESTAMP类型

不可用

TIMEZONE_REGION

不可用

TIMEZONE_ABBR

不可用

LOB类型

CLOB:单字节和多字节字符数据

BLOB:非结构化的二进制数据大对象

数据类型

长度

说明

BLOB

最大为(4GB-1)*数据库块大小

存储非结构化二进制文件。支持事务处理。

CLOB

最大为(4GB-1)*数据库块大小

存储单字节或者多字节字符数据。支持事务处理。

NCLOB

最大为(4GB-1)*数据库块大小

存储Unicode数据。支持事务处理。

BFILE

最大为2 32-1字节

LOB地址指向文件系统上的一个二进制文件,维护目录和文件名。不参与事务处理。只支持只读操作。

其他

数据类型

长度

说明

LONG

最大为2GB

变长类型,存储字符串。创建表时不要使用该类型。ORACLE建议开发中使用CLOB替代LONG类型。

RAW(n)

最大2000字节,n为字节数,必须指定n

变长类型,字符集发生变化时不会改变值。

LONG RAW

最大为2GB

变长类型,不建议使用,建议转化为BLOB类型,字符集发生变化时不会改变值。

ROWID

10字节

代表记录的地址。显示为18位的字符串。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。

UROWID(n)

LONG类型的限制如下:

1.一个表中只有一列可以为LONG型。(Why?有些不明白)

2.LONG列不能定义为主键或唯一约束,

3.不能建立索引

4.LONG数据不能指定正则表达式。

5.函数或存储过程不能接受LONG数据类型的参数。

6.LONG列不能出现在WHERE子句或完整性约束(除了可能会出现NULL和NOT NULL约束)

报错

java.sql.SQLException: 无效的列类型: 1111

sql要改成

SELECT car_num from car where car_id = #{id,jdbcType=VARCHAR}

如果id是数值  那么id = #{id,jdbcType=NUMERIC}

ORA-01000: 超出打开游标的最大数

show parameter open_cursors;

alter system set open_cursors=1000;

commit;

show parameter open_cursors;

工具使用

Oracle SQL Developer显示的时间包含时分秒

将工具--首选项--数据库--NLS--日期格式由DD-MON-RR修改为DD-MON-RR HH24:MI:SS

PLSQL数据导入

select * from xxx for update,点击那个小锁,选中第一列全部,然后从excel完全复制再粘帖提交即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值