oracle数据类型

https://liushilive.github.io/github_exercise_oracle/md/%E6%A6%82%E5%BF%B5/Oracle%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B.html

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Data-Types.html#GUID-A3C0D836-BADB-44E5-A5D4-265BA5968483

https://docs.oracle.com/en/database/oracle/oracle-database/index.html

https://developer.aliyun.com/article/33855

https://www.cnblogs.com/kerrycode/archive/2013/08/17/3265120.html

http://blog.itpub.net/26736162/viewspace-2149685/

 

 


 

Oracle 数据类型

要使用数据库来存储数据,首先就要知道这个数据库都能存储什么类型的数据。

数据类型是在向数据表中存储数据前必须设定好的,就像如果要使用记事本查看文件内容,那么文件就要是文本的,不能有图片,否则图片是查看不了的,因为记事本中只能查看文本文件。

官网文档

在 Oracle 11g 中提供的数据类型有 23 种,下面介绍常用的数据类型。

1. 字符型

字符型在 Oracle 11g 中有 varchar2、char、nchar、nvarchar2 和 long 五种,它们在数据库中是以 ASCII 码的格式存储的。

数据类型说明
CHAR(n) 存储固定长度的字符串,长度以字节为单位,默认和最小字符数为 1,最大字符数为 2000
VARCHAR2(n) 存储可变长度的字符串,长度以字节为单位,最小字符数是 1,最大字符数是 4000

2. 数字型

数字型在 Oracle 11g 中常用的有 number 和 float 类型两种,可以用它们来表示整数和小数。

数据类型说明
NUMBER(p, s) 可以存储 0、正数和负数。p 表示数值的总位数(精度),取值范围为 1~38;s 表示刻度,取值为−84~127

3. 日期类型

日期类型在 Oracle 11g 中常用的有 date 和 timestamp 两种类型,可以用它们来存放日期和时间。

数据类型说明
DATE 用于存储日期和时间。可以存储的日期范围为公元前 4712 年 1 月 1 日到公元后 9999 年 12 月 31 日,占据 7 字节的空间,由世纪、年、月、日、时、分、秒组成
TIMESTAMP(n) 表示时间戳,是 DATE 数据类型的扩展,允许存储小数形式的秒值。p 表示秒的小数位数,取值范围为 0~9,默认值为 6

4. 其他数据类型

除了上面讲过的字符型、数字型、日期类型之外,在 Oracle 11g 中还有存放大数据的数据类型以及存放二进制文件的数据类型。

数据类型取值范围(字节)说明
CLOB 用于存储单字节或多字节的大型字符串对象,支持使用数据库字符集的定长或变长字符。在 Oracle 11g 中 CLOB 类型最大存储容量为 128TB  
BLOB 用于存储大型的、未被结构化的变长的二进制数据(如二进制文件、图片文件、音频和视频等非文本文件)。在 Oracle 11g 中 BLOB 类型最大存储容量为 128TB  
BFILE 用于存储指向二进制格式文件的定位器,该二进制文件保存在数据库外部的操作系统中。在 Oracle 11g 中 BFILE 文件最大容量为 128TB,不能通过数据库操作修改 BFILE 定位器所指向的文件  
RAW(n) 用于存储变长的二进制数据,n 表示数据长度,取值范围为 1~2000 字节  
LONG RAW 用于存储变长的二进制数据,最大存储数据量为 2GB。Oracle 建议使用 BLOB 类型代替 LONG RAW 类型  
ROWID 行标识符,表示表中行的物理地址的伪列类型  

 

def oracle_records_to_df(records):
    values = {}
    for rows in records:
         for i in rows:
            if i not in values:
                values[i] = []
            v = rows[i]
            if isinstance(v, str):
                values[i].append(v)
            elif isinstance(v, float):
                values[i].append(v)
            elif isinstance(v, datetime.datetime):
                values[i].append(datetime_to_date_int(v))
            elif isinstance(v, int):
                values[i].append(v)
            elif v is None:
                values[i].append(0)
            else:
                raise ValueError('invalid data type:' + str(type(v)))
    return pd.DataFrame(values)

 

posted @ 2023-06-05 11:30  He_LiangLiang  阅读(33)  评论(0编辑  收藏  举报