zoukankan      html  css  js  c++  java
  • 三大数据库对比研究系列——数据类型

    如果你经常在不同类型数据库做开发或学习时,切换数据库写脚本时,不同数据库的数据类型可能会让你有点“晕”。下面我将对Oracle、SQL Server 、MySql三种数据库的数据类型做下例举、比较

    SQL SERVER数据库暂且以SQL Server 2005为参考

    SQL SERVER 数据类型分的比较细: 整数数据、 字符数据、 货币数据、日期和时间数据、二进制字符串等

    数据类型

    所属类型

    所占字节

    范围

    tinyint

    精确数字类型

    1字节

    0 ~ 255

     

     

    smallint

    精确数字类型

    2字节

    -215(-32768)~215-1(32767)

     

     

    int

    精确数字类型

    4字节

    -231 (-2,147,483,648) 231-1 (2,147,483,647)

     

     

    bigint

    精确数字类型

    8字节

    -2^63 (-9,223,372,036,854,775,808) 2^63-1 (9,223,372,036,854,775,807)

     

     

    bit

    精确数字类型

    视情况定(参加MSDN)

    取值为0、1或NULL

     

     

    decimal

    精确数字类型

    5~17字节

    固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1

     

     

    numeric

    精确数字类型

    5~17字节

    类似于decimal

     

     

    smallmoney

    精确数字类型

    4字节

    -214,748.3648 到 214,748.3647

     

     

    money

    精确数字类型

    8字节

    -922,337,203,685,477.5808 到 922,337,203,685,477.5807

     

     

    float

    近似数字

    4或8字节取决于float(n)中n的值

    -1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308

     

     

     

    real

    近似数字

    4字节

    -3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38

     

     

     

    smalldatetime

    时间类型

    4字节

    1900 年 1 月 1 日到 2079 年 6 月 6 日

    精度为一分钟

     

     

     

    datetime

    时间类型

    8字节

    1753 年 1 月 1 日到 9999 年 12 月 31 日

    精度为3.33毫秒

     

     

    char

    字符串类型

    Char(n)跟n有关

    固定长度、非Unicode字符数据

    取值范围为1~8000

     

     

    varchar

    字符串类型

    存储大小事输入数据的实际长度加2个字节

    取值范围1~8000

    max指示最大存储大小是2^31 -1个字节

     

     

    text

    字符串类型

     

     

     

    nchar

    Unicode字符串

    nchar(n)占2*n个字节

    1—4000

     

     

    nvarchar

    Unicode字符串

    nvarchar(n)占2*n

    nvarchar(max)

    1—4000 nvarchar(max)指示最大存储大小为2^31 -1字节

     

     

    ntext

    Unicode字符串

     

    12^30 -1 (1073741823)字符,一个字符占两个字节

     

     

    binary

    二进制字符串

    binary(n)

    1—8000

     

     

     

    varbinary

    二进制字符串

    varbinary(n|max)

    1—8000 max指示2^31 -1 (2,147,483,647)

     

     

     

    image

    二进制字符串

     

     

    0—2^31 -1 (2,147,483,647)

     

     

     

    cursor

    其它数据类型

     

    这是变量或存储过程OUTPUT参数的一种数据类型

     

     

     

    timestamp

    其它数据类型

    8字节

    2000好像没有这个数据类型

     

     

     

    sql variant

    其它数据类型

     

    一种数据类型,用于存储SQL Server 2005支持的各种数据类型

    (不包括text、ntext、image、timestamp和sql variant)

     

     

     

    uniqueidentifier

    其它数据类型

    16字节

    使用NEWID函数获得

     

     

     

    table

    其它数据类型

     

    一种特殊的数据类型,用于存储结果集以进行后续处理。

     

     

     

    xml

    其它数据类型

     

    MySQL数据类型

    数据类型

    所属类型

    所占字节

    范围

    SMALLINT

    数字类型(整数)

    2

    -32000——32000

    INT

    数字类型(整数)

    4

    -2000000000——2000000000

    BIGINT

    数字类型(整数)

    8

    不能用smallint或int描述的超大整数

    FLOAT

    数字类型(单精度浮点)

    4

    单精度浮点数

    DOUBLE

    数字类型(双节点浮点)

    8

    双精度浮点数

    DECIMAL

    数字类型(用户定义精度的浮点数据)

    字节数取决于精度与长度

    CHAR

    字符串

    Char(n)与n字节

    VARCHAR

    字符串

    Varchar(n)占n+1个字节

    TEXT

    字符串

    2+ 实际长度

    没有最大长度限制的可变长度的字符串

    BLOB

    二进制字符串

    变长 2+实际字符串长度

    存储图片、附件、二进制文件

    DATE

    时间类型

    3

    存储日期yyyy-mm-dd

    TIME

    时间类型

    3

    存储时间或时间间隔

    DATETIME

    时间类型

    8

    存储包含日期和时间的数据

    TIMESTAMP

    时间类型(时间戳)

    4

    YEAR

    时间类型

    1

    YYYY格式的年份

    ENUM

    1或2

    一组数据,用户可以从中选择一个

    SET

    1—8取决于设置的大小

    一组数据,用户可从中选择0,1或跟多

     

    ORACLE数据类型

     

    数据类型

    所属类型

    所占字节

    范围

    CHAR

    字符串类型

    CHAR(n) n个字节 存储固定长度的子字符串,如果没有明确说明长度,默认长度为1,如果长度不足规定长度,Oracle自动用空格填充

    1—2000

    VARCHAR2

    字符串类型

    可变长字符串类型。 VARCHAR2(n) n 如果最大长度不是n,不需要空格填充,推荐使用VARCHAR2

    1—4000

    NCHAR

    字符串类型

    NVARCHAR2

    字符串类型

     

     

    NUMBER

    数字类型

     

     

    DATE

     

     

     

    LONG

     

    存储最大长度为2GB的变长的变长字符串

    2GB

    RAW

     

    用来存储非结构化数据的变长字符串

    长度<= 2000字节

    LONG RAW

     

    用来存储非结构化数据的变长字符串

    长度<=2GB

    ROWID

    伪列

    BLOB

    大型对象数据类型

    存储二进制数据信息

     

    CLOB

    大型对象数据类型

    只能存储字符数据

     

    NCLOB

    大型对象数据类型

    存储本地语言字符集数据

     

    BFILE

    大型对象数据类型

    存储在Oracle数据库以外的文件的指针

     

    UROWID

     

    用来存储表示任何类型列地址的二进制字符串

     

    FLOAT

     

    存储浮点数

     

     

     

     

    从上面我们可以看出SQL Server数据类型的粒度分得最细,当然上面整理的数据类型也未必是最新的,不同版本的数据库对数据类型的支持是不同的(有新的数据类型增加或旧的数据类型删除)。

    SQL Server 2005或以上版本的数据类型你可以通过系统视图查看

    SELECT * FROM SYS.types

    SELECT NAME, max_length, PRECISION, scale FROM sys.types

     

    其中max_length 表示类型的最大长度(以字节为单位)但是imgetextntext的最大长度为16,有点不明白。个人怀疑是保存的数据的地址()。至于xml-1就更不明白了。

    Oracle 10g 的数据类型  DBA_TYPES中保存了数据库中所有的抽象数据类型   USER_TYPES 表中用户的类型。 

    SELECT * FROM USER_TYPES WHERE TYPECODE !='OBJECT' AND TYPECODE != 'COLLECTION'

    SELECT * FROM DBA_TYPES WHERE TYPECODE !=
    'OBJECT' AND TYPECODE != 'COLLECTION'

    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    2019-2020-1 20199324《Linux内核原理与分析》第七周作业
    2019-2020-1 20199324《Linux内核原理与分析》第六周作业
    2019-2020-1 20199324《Linux内核原理与分析》第五周作业
    介绍一个比较了各种浏览器对于HTML5 等标准支持程度的网站
    JaveScript 中的正则表达式
    Windows中查看进程的资源消耗(cpu, Disk,Memory,NetWork)
    Windows中通过命令行启动打开Service 管理工具
    删除Widows 启动项中的信息
    LAMP中添加多虚拟主机
    多线程的安全问题
  • 原文地址:https://www.cnblogs.com/kerrycode/p/2022913.html
Copyright © 2011-2022 走看看