Oracle Schema Objects——Tables——Oracle Data Types
Oracle Data Types
数据类型
Data Type |
Description |
NUMBER(P,S) |
Number value having a maximum number of digits p, with a digits to the right of the decimal point. |
VARCHAR2(s) |
Variable-length character value of maximum size s |
DATE |
Date and time value between January 1,4712 B.C.(公元前) and December 31,A.D.(公元)9999 |
字符数据类型 |
字符数据类型存储在字符串中的字符 (字母或数字) 数据。
最常用的字符数据类型是 VARCHAR2,它是用于存储字符数据的最有效的选项。
与字符编码模式相对应的字节值,一般称为 字符集或 代码页。 数据库字符集是在数据库创建时建立的。
字符集的例子有 7 位 ASCII 码、 EBCDIC码、和 Unicode utf-8。
字符数据类型的长度语义可以以字节或字符为单位。
字节语义将字符串视为一个字节序列。 这是字符数据类型的默认值。
字符语义将字符串视为字符序列。 一个字符在技术上是数据库字符集的编码点。
VARCHAR2 、CHAR NCHAR、NVARCHAR2
Oracle Database compares VARCHAR2 values using nonpadded comparison semantics and compares CHAR values using blank-padded comparison semantics. Oracle 数据库将使用非填充比较语义来比较 VARCHAR2 值,而使用空白填充比较语义来比较 CHAR 值。
|
||||||||||||
数字数据类型 |
Oracle 数据库的数字数据类型存储固定和浮点数字、零、或无穷。
某些数值类型也可以存储未定义操作的结果值,叫做"非数字"或 NAN。
Oracle 数据库以变长格式存储数字数据。用科学计数法存储值,其中一个字节用于存储指数。
数据库使用最多 20 个字节存储尾数,即浮点数的有效位数部分。
Oracle 数据库不会存储前导零和结尾零。
NUMBER Data Type
NUMBER 数据类型存储固定和浮点数字。
数据库可以存储几乎任何规模的数字。
此数据保证在运行 Oracle 数据库的不同操作系统之间可移植。
大多数情况下,当您必须存储数值数据时,推荐使用 NUMBER 数据类型。
按 NUMBER(p,s)的形式定义定点数,p 和 s 有以下特征:
Floating-Point Numbers
Oracle 数据库为浮点数提供了两种互斥的数值数据类型: BINARY_FLOAT和 BINARY_DOUBLE。
这两种类型支持所有 NUMBER 数据类型提供的基本功能。
然而,相比 NUMBER使用十进制精度,BINARY_FLOAT 和BINARY_DOUBLE 使用二进制精度,可以使算术计算更快并且通常可以降低存储需求。
BINARY_FLOAT 和 BINARY_DOUBLE 是近似数字数据类型。
它们存储十进制的值的近似表示,而不是精确的表示形式。
例如值 0.1不能用BINARY_DOUBLE 或 BINARY_FLOAT 完全精确地表示。他们经常用于科学计算。
其行为类似于 Java 或 XMLSchema 中的 FLOAT 和 DOUBLE 数据类型。 |
||||||||||||
日期时间数据类型 |
Datetime Data Types
The datetime data types are DATE and TIMESTAMP. Oracle Database provides comprehensive time zone support for time stamps. 日期时间数据类型包括 DATE和 TIMESTAMP。Oracle 数据库为时间戳提供全面的时区支持。
|
||||||||||||
ROWI数据类型 |
Rowid Data Types Every row stored in the database has an address. Oracle Database uses a ROWID data type to store the address (rowid) of every row in the database. Rowids fall into the following categories: 存储在数据库中的每一行都有一个地址。Oracle 数据库使用 ROWID 数据类型存储在数据库中的每一行的地址 (rowid)。Rowids 分为以下几类:
A data type called the universal rowid, or UROWID, supports all kinds of rowids. 有一种数据类型称为用 通用 rowid 或 UROWID,支持各种 rowids。
Use of Rowids Oracle Database uses rowids internally for the construction of indexes. Oracle 数据库在内部使用 rowids用于构造索引, A B-tree index, which is the most common type, contains an ordered list of keys divided into ranges. Each key is associated with a rowid that points to the associated row's address for fast access. 最常见的 B 树索引,包含一个被划分成多个键范围的排序列表。每个键都与一个指向关联的行地址的rowid 相关联,用于快速访问。 End users and application developers can also use rowids for several important functions: 最终用户和应用程序开发人员也可以使用rowids 的几个重要功能:
Rowids 是访问特定行的最快方式。
Rowids 提供了查看表的组织方式的能力。
Rowids 是给定表中的行的唯一标识符。
You can also create tables with columns defined using the ROWID data type. For example, you can define an exception table with a column of data type ROWID to store the rowids of rows that violate integrity constraints. Columns defined using the ROWID data type behave like other table columns: values can be updated, and so on. 您也可以创建带 ROWID 数据类型列的表。例如,您可以定义一个异常表,其中一列为 ROWID 数据类型,以存储违反了完整性约束的行 rowids。使用ROWID 数据类型定义的列像其他表中的列一样, 其值可以更新,等等。
ROWID Pseudocolumn
SQL Fundamentals || Single-Row Functions || 日期函数date functionsOracle Schema Objects——Sequences(伪列:nextval,currval)
Oracle 数据库中的每个表都有一个名为 ROWID 的 伪列。
伪列类似于表列,但实际上并不存储在表中。
您可以从伪列中选择数据,但不能插入、更新、或删除它们的值。 A pseudocolumn is also similar to a SQL function without arguments. Functions without arguments typically return the same value for every row in the result set, whereas pseudocolumns typically return a different value for each row.
伪列也类似于不带参数的 SQL 函数。不带参数的函数对于结果集中的每一行通常返回相同的值,而伪列通常为每个行返回不同的值。
ROWID 伪列的值是表示的每个行的地址的字符串。这些字符串具有的数据类型 ROWID。在执行 SELECT 或 DESCRIBE 列出表的结构时,此伪列并不显示,它也不占用空间。
但是,每个行的 rowid 可以通过使用保留字ROWID 作为列名的 SQL 查询来检索。
SQL> SELECT ROWID FROM employees WHERE employee_id = 100; ROWID ------------------ AAAPecAAFAAAABSAAA
|
||||||||||||
格式模型和数据类型 |
Format Models and Data Types
格式模型是一个字符文本,用来描述存储在一个字符串中的日期时间或数值数据的格式。
格式模式不会更改数据库中的值的内部表示形式。
当您将一个字符串转换成日期或数字时,格式模型决定了数据库如何解释字符串。
在 SQL 中,你可以使用格式模型作为 TO_CHAR 和 TO_DATE 函数的参数,来格式化将从数据库中返回的一个值,或将存储到数据库中的一个值。
下面的语句选择部门 80 中的雇员的薪水,并使用 TO_CHAR 函数来将这些薪水的值,转换为以数字格式模型 '$ 99,990.99' 指定的字符值: SQL> SELECT last_name employee, TO_CHAR(salary, '$99,990.99') 2 FROM employees 3 WHERE department_id = 80 AND last_name = 'Russell'; EMPLOYEE TO_CHAR(SAL ------------------------- ----------- Russell $14,000.00 下面的示例更新一个雇佣日期,使用 TO_DATE 函数与格式掩码 'YYYYMM DD' 将字符串 '1998 05 20' 转换为日期值。 SQL> UPDATE employees 2 SET hire_date = TO_DATE('1998 05 20','YYYY MM DD') 3 WHERE last_name = 'Hunold'; |
||||||||||||
其他内建类型 |
Other important categories of built-in types include raw, large objects (LOBs), and collections. PL/SQL has data types for constants and variables, which include BOOLEAN, reference types, composite types (records), and user-defined types. RAW、大对象 (LOB)、 和集合。 PL/SQL 具有用于常量和变量的数据类型,包括布尔、 引用类型、 复合类型 (记录) 、和用户定义类型 |