(官档自学)Oracle Data Types数据种类

(官档自学)Oracle Data Types数据种类

每列都有一个数据类型,该数据类型都有特定的存储格式,约束和值的有效范围
这些属性可以让oracle区别对待他们每一种。比如,你可以乘NUMBER 却不可以乘RAW类。
当表被创建的时候,你必须为每一个columns指定一种数据类型。随后插入到列中的每个值均采用这个列数据类型。
oracle提供几种嵌入内置数据类型,最常见的有:
1,Character Data Types 字符数据类型
2. Numeric Data Types 数字数据类型
3. Datetime Data Types 日期时间数据类型
4. Rowid Data Types 序列号
5. Format Models and Data Types 格式模型和数据类型

字符数据类型

字符数据类型将字母数字数据存储在字符串中。最常见的是VARCHAR2
字节值对应于字符编码方案,通常称为字符集。最常见的字符集是7-bit ASCII, EBCDIC, and Unicode UTF-8(数据库字符集一般是在创建数据库的时候建立的)
VARCHAR2和CHAR数据类型
The VARCHAR2 data type stores variable-length character literals. A literal is a fixed data value.
例如
‘LILA’, ‘St. George Island’, and ‘101’ are all character literals
而5001 is a numeric literal
Character literals are enclosed in single quotation marks so that the database can distinguish them from schema object names
(不知道咋翻译,感觉英文挺清楚的)
当你创建一个带VARCHAR2 column的表,你必须指定一个最大长度。
VARCHAR2(25)意味着所有储存在列里的数据不能超过25字节
你可以利用这个机制来减少空间消耗

不同于VARCHAR2,CHAR 储存固定长度的character strings。当你创建一个CHAR列时,需要指定一个长度,默认的是1字节。数据库会用空格去填满剩下的未使用空间。

NCHAR and NVARCHAR2 Data Types
NCHAR和NVARCHAR2数据类型存储Unicode字符数据。
Unicode是通用编码的字符集,可以使用单个字符集以任何语言存储信息
和前面相同的是,NCHAR 储存固定长度的character,NVARCHAR2 储存非固定长度的字符串
创建数据库的时候设定的,这2种数据类型必须用AL16UTF16 或者UTF8

NLS_LENGTH_SEMANTICS enables you to create CHAR and VARCHAR2 columns using either byte or character length semantics. Existing columns are not affected.
NCHAR, NVARCHAR2, CLOB, and NCLOB columns are always character-based.
show parameter nls_length_semantics

NAME TYPE VALUE


nls_length_semantics string BYTE

Numeric Data Types

Oracle数据库数字类型可以储存浮点数,0,无穷大。
数据库可以存储任意大小的数字,保证此数据可在运行Oracle数据库的不同操作系统之间移植。
NUMBER 数据类型在大多数情况下都是储存数字数据的类型。
我们用NUMBER(p,s)这个参数来规范定点数
P Precision这个参数指定最大总位数。
S Scale刻度指定从小数点到最低有效位数的位数。 正标度会计算小数点右边的位数,最高到并包括最低有效位数。 负数标度会计算小数点左边的位数,但不包括最低有效位数。
(小数位超出长度会进行四舍五入,整数位超出长度报错)
1000 NUMBER(8,2) 1000.00

Floating-Point Numbers
Oracle数据库专门为浮点数提供了两种数字数据类型:BINARY_FLOAT和BINARY_DOUBLE。

Datetime Data Types

有2中:data和TIMESTAMP
DATE Data Types
DATE类型可以储存日期和时间。虽然文本和数字也可以储存时间,DATE有特别的属性。
DATE有7位数长度,分别对应世纪年月日时分秒
表现为DD-MON-RR,HH:MI:SS
TIMESTAMP Data Type
TIMESTAMP数据类型是DATE数据类型的扩展。
它可以精确到小数秒,TIMESTAMP数据类型对于存储精确的时间值很有用,例如在必须跟踪事件顺序的应用程序中。

Rowid Data Types

数据库中存储的每一行都有一个地址。 Oracle数据库使用ROWID数据类型存储数据库中每一行的地址(行)。
物理rowid将行的地址存储在heap-organized tables,表集群以及表和索引分区中。(杂乱无序的)
逻辑行标识将索引存储在index-organized tables。
外部行标识符是外部表(例如,通过网关访问的DB2表)中的标识符。 它们不是标准的Oracle数据库rowid
你也可以自己创建一张表时用ROWID数据类型
您可以使用数据类型为ROWID的列定义异常表,以存储违反完整性约束的行的rowid
使用ROWID数据类型定义的列的行为类似于其他表列:可以更新值

ROWID Pseudocolumn
每一个表在oracle数据库中都有一个伪列叫ROWID
伪列是一个行为像表列,但是实际上不存在表中。你可以从伪列中选取,但你无法更新,插入或删除它的值。

ROWID伪列的值代表着地址中的每一列。通过执行SELECT或DESCRIBE列出表的结构时,此伪列不显示,伪列也不占用空间。但是,可以使用保留字ROWID作为列名的SQL查询来检索每一行的rowid。
SQL> SELECT ROWID FROM employees WHERE employee_id = 100;

ROWID

AAAPecAAFAAAABSAAA

Format Models and Data Types
格式模型是一种字符文字,它描述了日期时间或存储在字符串中的数字数据的格式。 格式模型不会更改数据库中值的内部表示。

SQL> SELECT last_name employee, TO_CHAR(salary, ‘$99,990.99’) AS “SALARY”
2 FROM employees
3 WHERE department_id = 80 AND last_name = ‘Russell’;

EMPLOYEE SALARY


Russell $14,000.00

SQL> UPDATE employees
2 SET hire_date = TO_DATE(‘1998 05 20’,‘YYYY MM DD’)
3 WHERE last_name = ‘Hunold’;

翻译自oracle官档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值