oracle常用字段类型

常用数据库字段类型如下:
字段类型     中文说明          限制条件                  其它说明
CHAR        固定长度字符串     最大长度2000   bytes
VARCHAR2    可变长度的字符串   最大长度4000   bytes     可做索引的最大长度749
NCHAR       根据字符集而定的固定长度字符串   最大长度2000   bytes
NVARCHAR2   根据字符集而定的可变长度字符串   最大长度4000   bytes
DATE        日期(日-月-年)   DD-MM-YY(HH-MI-SS)


LONG        超长字符串   最大长度2G(231-1)   足够存储大部头著作
RAW         固定长度的二进制数据   最大长度2000   bytes     可存放图象声音等
LONG  RAW   可变长度的二进制数据   最大长度2G   同上
BLOB        二进制数据   最大长度4G
CLOB        字符数据   最大长度4G
NCLOB       根据字符集而定的字符数据   最大长度4G
BFILE       存放在数据库外的二进制数据   最大长度4G
ROWID       数据表记录的唯一行号   10   bytes   ********.****.****格式,*为0或1
NROWID      二进制数据表中记录的唯一行号   最大长度4000   bytes
NUMBER(P,S) 数字类型   P为整数位,S为小数位
DECIMAL(P,S)数字类型   P为整数位,S为小数位
INTEGER     整数类型   小的整数
FLOAT       浮点数类型   NUMBER(38),双精度
REAL        实数类型     NUMBER(63),精度更高
### Oracle 主键字段支持的数据类型Oracle数据库中,主键字段可以使用多种数据类型来确保唯一性和完整性。通常情况下,为了优化性能并保持最佳实践,建议为主键选择合适的数据类型。 #### 数值类型 `NUMBER` 是最常用的主键数据类型之一。这种类型的优点是可以精确存储整数值,并且可以通过设置精度和规模来自定义其范围。对于单列主键来说,`NUMBER(m)` 或者 `NUMBER(m,0)` 都是非常常见的选[^2]: ```sql CREATE TABLE example_table ( id NUMBER(10) PRIMARY KEY, ... ); ``` 由于Oracle不再支持MySQL中的INT类型,因此推荐使用`NUMBER`替代之。需要注意的是,在创建表结构时指定的任何`INT`都将被自动转换为`NUMBER`类型。 #### 字符串类型 虽然不常见,但在某些特殊场景下也可以采用字符类型作为主键。例如,如果业务逻辑要求使用字母编或者其他形式的字符串标识,则可以选择VARCHAR2或CHAR类型。不过应当谨慎考虑长度限制及其对索引效率的影响: ```sql CREATE TABLE another_example ( code VARCHAR2(20 BYTE) PRIMARY KEY, ... ); ``` #### RAW 和 ROWID 类型 RAW类型适合用于二进制数据,而ROWID则是指向特定行物理位置的一种内部地址表示法。尽管这两类不太适合作为常规意义上的主键候选对象,但在分布式环境或其他特殊情况里可能会发挥作用。 #### 使用序列(SEQUENCE) 考虑到Oracle缺乏类似于MySQL那样的AUTO_INCREMENT特性,实践中经常通过结合`NUMBER`类型与序列机制共同构建自增长式的主键方案。这不仅能够满足连续递增的需求,而且有助于提高并发处理能力: ```sql CREATE SEQUENCE seq_example START WITH 1 INCREMENT BY 1; CREATE TABLE sequence_based_table( id NUMBER DEFAULT seq_example.NEXTVAL PRIMARY KEY, ... ); ``` 综上所述,尽管理论上几乎所有的非大对象(BLOB/CLOB)基本数据类型都可以充当主键角色,但从实际应用角度出发,还是应该优先选用`NUMBER`这样的高效稳定的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值