zoukankan      html  css  js  c++  java
  • MySql Oracle SqlServer 数据库的数据类型列表

    Oracle数据类型

      一、概述  

         在ORACLE8中定义了:标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,下面详细介绍它们的特性。

    二、标量(SCALAR)    

        合法的标量类型与数据库的列所使用的类型相同,此外它还有一些扩展。它又分为七个组:数字、字符、行、日期、行标识、布尔和可信。    数字,它有三种基本类型--NUMBER、PLS_INTEGER和BINARY_INTENER。NUMBER可以描述整数或实数,而PLS_INTEGER和BINARY_INTENER只能描述整数。  

     NUMBER,是以十进制格式进行 存储的,它便于 存储,但是在计算上,系统会自动的将它转换成为二进制进行运算的。它的定义方式是NUMBER(P,S),P是精度,最大38位,S是刻度范围,可在-84...127间取值。例如:NUMBER(5,2)可以用来存储表示-999.99...999.99间的数值。P、S可以在定义是省略,例如:NUMBER(5)、NUMBER等;  

     BINARY_INTENER用来描述不存储在数据库中,但是需要用来计算的带符号的整数值。它以2的补码二进制形式表述。循环计数器经常使用这种类型。    PLS_INTEGER和BINARY_INTENER唯一区别是在计算当中发生溢出时,BINARY_INTENER型的变量会被自动指派给一个NUMBER型而不会出错,PLS_INTEGER型的变量将会发生错误。  

    字符,包括CHAR、VARCHAR2(VARCHAR)、LONG、NCHAR和NVARCHAR2几种类型。  

     CHAR,描述定长的字符串,如果实际值不够定义的长度,系统将以空格填充。它的声明方式如下CHAR(L),L为字符串长度,缺省为1,作为变量最大32767个字符,作为数据存储在ORACLE8中最大为2000。   VARCHAR2(VARCHAR),描述变长字符串。它的声明方式如下VARCHAR2(L),L为字符串长度,没有缺省值,作为变量最大32767个字节,作为数据存储在ORACLE8中最大为4000。在多字节语言环境中,实际存储的字符个数可能小于L值,例如:当语言环境为中文(SIMPLIFIED CHINESE_CHINA.ZHS16GBK)时,一个VARCHAR2(200)的数据列可以保存200个英文字符或者100个汉字字符。    LONG,在数据库存储中可以用来保存高达2G的数据,作为变量,可以表示一个最大长度为32760字节的可变字符串。    NCHAR、NVARCHAR2,国家字符集,与环境变量NLS指定的语言集密切相关,使用方法和CHAR、VARCHAR2相同。    行,包括RAW和LONG RAW两种类型。用来存储二进制数据,不会在字符集间转换。  

    RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。    LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节。   日期,只有一种类型--DATE,用来存储时间信息,站用7个字节(从世纪到秒),绝对没有“千年虫”问题。   行标识,只有一种类型--ROWID,用来存储“行标识符”,可以利用ROWIDTOCHAR函数来将行标识转换成为字符。   布尔,只有一种类型--BOOLEAN,仅仅可以表示TRUE、FALSE或者NULL。    可信,只有一种类型--MLSLABEL,可以在TRUSTED ORACLE中用来保存可变长度的二进制标签。在标准ORACLE中,只能存储NULL值。

    三、复合(COMPOSITE)  

           标量类型是经过预定义的,利用这些类型可以衍生出一些复合类型。主要有记录、表。   记录,可以看作是一组标量的组合结构,它的声明方式如下:   TYPE record_type_name IS RECORD    ( filed1 type1 [NOT NULL] [:=expr1]   .......    filedn typen [NOT NULL] [:=exprn] )   其中,record_type_name是记录类型的名字。(是不是看着象CREATE TABLE?......)引用时必须定义相关的变量,记录只是TYPE,不是VARIABLE。    表,不是物理存储数据的表,在这里是一种变量类型,也称为PL/SQL表,它类似于C语言中的数组,在处理方式上也相似。它的声明方式如下:     TYPE table_type_name IS TABLE OF scalar_type INDEX BY BINARY_INTENER;   其中,table_type_name是类型的名字,scalar_type是一种标量类型的类型声明。引用时也必须定义相关的变量。表和数组不同,表有两列,KEY和VALUE,KEY就是定义时声明的BINARY_INTENER,VALUE就是定义时声明的scalar_type。  

     除了记录和表之外,还有对象类型、集合(嵌套表和VARRAYS)等类型,这些将专门讲解。

    四、引用(REFERENCE)  

          在PL/SQL8.0之前,只有一种类型--REF CURSOR,也就是游标。它的定义较为简单,   CURSOR cursor_name IS select .....from.....;    在PL/SQL8.0之后,引入了REF类型,它指向一个对象。这种类型将单独讲解。(等我弄明白再说,免得在高人面前......)

    五、LOB型  

         LOB变量主要是用来存储大量数据的数据库字段,最大可以存储4G字节的内容(这么大,存VCD?,浪费!)。主要有:

        CLOB:和ORACLE7中的LONG类型相似,存储单字节字符数据。(别用来存中文喔。。。)  

     NCLOB:用来存储定宽多字节字符数据。(例如:存《啸傲江湖》就挺好)

       BLOB:和LONG RAW相似,用来存储无结构的二进制数据。  

      BFILE:它用来允许ORACLE对数据库外存储的大型二进制文本进行只读形式的访问。  

    六、其他  

        其实在完成对标量变量的理解之后,基本上可以应付C/S模式下的常规数据库应用所需了,后续的类型说实话,我玩了5年ORACLE,都很少用到。    附:参考书《ORACLE8 PL/SQL程序设计》(《ORACLE8 PL/SQL PROGRAMMING》) ORACLE技术系列丛书 机械工业出版社    注:本文所列举的是PL/SQL当中可以定义的数据类型,并不是所有的类型都可以在建表时指定为列的数据类型  

    Microsoft Access 数据类型

    数据类型描述存储
    Text 用于文本或文本与数字的组合。最多 255 个字符。  
    Memo Memo 用于更大数量的文本。最多存储 65,536 个字符。注释:无法对 memo 字段进行排序。不过它们是可搜索的。  
    Byte 允许 0 到 255 的数字。 1 字节
    Integer 允许介于 -32,768 与 32,767 之间的全部数字。 2 字节
    Long 允许介于 -2,147,483,648 与 2,147,483,647 之间的全部数字。 4 字节
    Single 单精度浮点。处理大多数小数。 4 字节
    Double 双精度浮点。处理大多数小数。 8 字节
    Currency 用于货币。支持 15 位的元,外加 4 位小数。提示:您可以选择使用哪个国家的货币。 8 字节
    AutoNumber AutoNumber 字段自动为每条记录分配数字,通常从 1 开始。 4 字节
    Date/Time 用于日期和时间 8 字节
    Yes/No 逻辑字段,可以显示为 Yes/No、True/False 或 On/Off。在代码中,使用常量 True 和 False (等价于 1 和 0)。注释:Yes/No 字段中不允许 Null 值 1 比特
    Ole Object 可以存储图片、音频、视频或其他 BLOBs(Binary Large OBjects)。 最多 1GB
    Hyperlink 包含指向其他文件的链接,包括网页。  
    Lookup Wizard 允许您创建一个可从下拉列表中进行选择的选项列表。 4 字节

    MySQL 数据类型

    在 MySQL 中,有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。

    Text 类型:

    数据类型描述
    CHAR(size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
    VARCHAR(size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。
    TINYTEXT 存放最大长度为 255 个字符的字符串。
    TEXT 存放最大长度为 65,535 个字符的字符串。
    BLOB 用于 BLOBs(Binary Large OBjects)。存放最多 65,535 字节的数据。
    MEDIUMTEXT 存放最大长度为 16,777,215 个字符的字符串。
    MEDIUMBLOB 用于 BLOBs(Binary Large OBjects)。存放最多 16,777,215 字节的数据。
    LONGTEXT 存放最大长度为 4,294,967,295 个字符的字符串。
    LONGBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。
    ENUM(x,y,z,etc.) 允许您输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。

    注释:这些值是按照您输入的顺序排序的。

    可以按照此格式输入可能的值: ENUM('X','Y','Z')

    SET 与 ENUM 类似,不同的是,SET 最多只能包含 64 个列表项且 SET 可存储一个以上的选择。

    Number 类型:

    数据类型描述
    TINYINT(size) -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。
    SMALLINT(size) -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。
    MEDIUMINT(size) -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。
    INT(size) -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。
    BIGINT(size) -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。
    FLOAT(size,d) 带有浮动小数点的小数字。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
    DOUBLE(size,d) 带有浮动小数点的大数字。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
    DECIMAL(size,d) 作为字符串存储的 DOUBLE 类型,允许固定的小数点。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。

    *这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。

    Date 类型:

    数据类型描述
    DATE() 日期。格式:YYYY-MM-DD

    注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'

    DATETIME() *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS

    注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

    TIMESTAMP() *时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的秒数来存储。格式:YYYY-MM-DD HH:MM:SS

    注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

    TIME() 时间。格式:HH:MM:SS

    注释:支持的范围是从 '-838:59:59' 到 '838:59:59'

    YEAR() 2 位或 4 位格式的年。

    注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。

    *即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。


    SQL Server 数据类型

    String 类型:

    数据类型描述存储
    char(n) 固定长度的字符串。最多 8,000 个字符。 Defined width
    varchar(n) 可变长度的字符串。最多 8,000 个字符。 2 bytes + number of chars
    varchar(max) 可变长度的字符串。最多 1,073,741,824 个字符。 2 bytes + number of chars
    text 可变长度的字符串。最多 2GB 文本数据。 4 bytes + number of chars
    nchar 固定长度的 Unicode 字符串。最多 4,000 个字符。 Defined width x 2
    nvarchar 可变长度的 Unicode 字符串。最多 4,000 个字符。  
    nvarchar(max) 可变长度的 Unicode 字符串。最多 536,870,912 个字符。  
    ntext 可变长度的 Unicode 字符串。最多 2GB 文本数据。  
    bit 允许 0、1 或 NULL  
    binary(n) 固定长度的二进制字符串。最多 8,000 字节。  
    varbinary 可变长度的二进制字符串。最多 8,000 字节。  
    varbinary(max) 可变长度的二进制字符串。最多 2GB。  
    image 可变长度的二进制字符串。最多 2GB。  

    Number 类型:

    数据类型描述存储
    tinyint 允许从 0 到 255 的所有数字。 1 字节
    smallint 允许介于 -32,768 与 32,767 的所有数字。 2 字节
    int 允许介于 -2,147,483,648 与 2,147,483,647 的所有数字。 4 字节
    bigint 允许介于 -9,223,372,036,854,775,808 与 9,223,372,036,854,775,807 之间的所有数字。 8 字节
    decimal(p,s) 固定精度和比例的数字。

    允许从 -10^38 +1 到 10^38 -1 之间的数字。

    p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。

    s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。

    5-17 字节
    numeric(p,s) 固定精度和比例的数字。

    允许从 -10^38 +1 到 10^38 -1 之间的数字。

    p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。

    s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。

    5-17 字节
    smallmoney 介于 -214,748.3648 与 214,748.3647 之间的货币数据。 4 字节
    money 介于 -922,337,203,685,477.5808 与 922,337,203,685,477.5807 之间的货币数据。 8 字节
    float(n) 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。

    n 参数指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。

    4 或 8 字节
    real 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 4 字节

    Date 类型:

    数据类型描述存储
    datetime 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。 8 字节
    datetime2 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 6-8 字节
    smalldatetime 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。 4 字节
    date 仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 3 bytes
    time 仅存储时间。精度为 100 纳秒。 3-5 字节
    datetimeoffset 与 datetime2 相同,外加时区偏移。 8-10 字节
    timestamp 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 值基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。  

    其他数据类型:

    数据类型描述
    sql_variant 存储最多 8,000 字节不同数据类型的数据,除了 text、ntext 以及 timestamp。
    uniqueidentifier 存储全局唯一标识符 (GUID)。
    xml 存储 XML 格式化数据。最多 2GB。
    cursor 存储对用于数据库操作的指针的引用。
    table 存储结果集,供稍后处理。
  • 相关阅读:
    关于格林尼治时间(GMT)和DateTime相互转换的分享
    Mybatis多表操作
    Mybatis动态SQL
    Mybatis连接池及事务
    Mybatis基本使用
    Mybatis基本入门搭建
    面试刷题29:mysql事务隔离实现原理?
    面试刷题28:如何写出安全的java代码?
    面试刷题27:程序员如何防护java界的新冠肺炎?
    面试刷题26:新冠攻击人类?什么攻击java平台?
  • 原文地址:https://www.cnblogs.com/wxs121/p/5341086.html
Copyright © 2011-2022 走看看