[转帖]Oracle、SQL Server、MySQL数据类型对比

oracle,sql,server,mysql,数据类型,对比 · 浏览次数 : 0

小编点评

**数据类型** | **数据类型** | **描述** | **大小** | **数据范围** | |---|---|---|---| | smallint | 1到2个字节 | 1 | -128~127 | | mediumint | 3到4个字节 | 3 | -8388608~8388607 | | int | 4到8个字节 | 4 | -2147483648~2147483647 | | bigint | 8到10个字节 | 8 | +9.22*10的18次方 | | float | 3到7位 | 7 | -2147483648~2147483647 | | char | 1到255个字符 | 1 | 0~255 | | varchar | 1到65535个字符 | 1 | 0~65535 | | text | 1到255个字符 | 1 | 0~255 | **字符串** | **数据类型** | **描述** | **大小** | **数据范围** | |---|---|---|---| | char | 1到255个字符 | 1 | 0~255 | | varchar | 1到65535个字符 | 1 | 0~65535 | | text | 1到255个字符 | 1 | 0~255 | **二进制数据** | **数据类型** | **描述** | **大小** | **数据范围** | |---|---|---|---| | _blob | 1到255个字节 | 1 | 0~255 | **索引** | **索引类型** | **索引描述** | **创建条件** | |---|---|---| | smallint | smallint索引 | -128~127 | | mediumint | mediumint索引 | -8388608~8388607 | | int | int索引 | -2147483648~2147483647 | | bigint | bigint索引 | +9.22*10的18次方 | | float | float索引 | -2147483648~2147483647 | | char | char索引 | 0~255 | | varchar | varchar索引 | 0~65535 | | text | text索引 | 0~255 | | _blob | _blob索引 | - | **其他** | **日期时间** | date | 2008-12-2 | | **时间** | time | 12:25:36 |

正文

Oracle、SQL Server、MySQL数据类型对比 - 知乎 (zhihu.com)

1,标准SQL数据类型

BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中。不需数据转换(例如,转换到文本数据)。数据输入二进制字段的方式决定了它的输出方式。
BIT 1 个字节0 和 1 ,以及只包含这两个数值之一的字段。
TINYINT 1 个字节 介于 0 到 255 之间的整型数。
MONEY 8 个字节 介于 – 922,337,203,685,477.5808 到 922,337,203,685,477.5807 之间的符号整数。
DATETIME 8 个字节 介于 100 到 9999 年的日期或时间数值。
UNIQUEIDENTIFIER 128 个位 用于远程过程调用的唯一识别数字。
REAL 4 个字节单精度浮点数,负数范围是从 –3.402823E38 到 –1.401298E-45,正数从1.401298E-45 到 3.402823E38,和 0。
SMALLINT 2 个字节 介于 –32,768 到 32,767 的短整型数。
INTEGER 4 个字节介于 –2,147,483,648 到 2,147,483,647 的长整型数。
DECIMAL 17 个字节容纳从 1028 - 1到 - 1028 - 1. 的值的精确的数字数据类型。你可以定义精度 (1 - 28) 和 符号 (0 - 定义精度)。缺省精度和符号分别是18和0。
TEXT 每一字符两字节(参见注意) 从零到最大 2.14 千兆字节。
IMAGE 视实际需要而定 从零到最大 2.14 千兆字节。用于 OLE 对象。
CHARACTER 每一字符两字节(参见注意) 长度从 0 到 255 个字符。

2,Oracle数据类型

类型 含义 存储描述 备注
CHAR 固定长度字符串 最大长度2000bytes  
VARCHAR2 可变长度的字符串, 最大长度4000bytes 可做索引的最大长度749
NCHAR 根据字符集而定的固定长度字符串 最大长度2000bytes  
NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000bytes  
DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS),经过严格测试,无千虫问题  
TIMESTAMP 日期(日-月-年) DD-MM-YY(HH-MI-SS:FF3),经过严格测试,无千虫问题 与DATE相比较,TIMESTAMP有小数位秒信息
LONG 超长字符串 最大长度2G,足够存储大部头著作  
RAW 固定长度的二进制数据 最大长度2000bytes 可存放多媒体图象声音等
LONG RAW 可变长度的二进制数据 最大长度2G 可存放多媒体图象声音等
BLOB 二进制数据 最大长度4G  
CLOB 字符数据 最大长度4G  
NCLOB 根据字符集而定的字符数据 最大长度4G  
BFILE 存放在数据库外的二进制数据 最大长度4G  
ROWID 数据表中记录的唯一行号 10bytes ********.****.****格式,*为0或1
NROWID 二进制数据表中记录的唯一行号 最大长度4000bytes  
NUMBER(P,S) 数字类型 P为整数位,S为小数位  
DECIMAL(P,S) 数字类型 P为整数位,S为小数位  
INTEGER 整数类型 小的整数  
FLOAT 浮点数类型 NUMBER(38),双精度  
REAL 实数类型 NUMBER(63),精度更

3,SQL Server数据类型

第一大类:整数数据

bit:bit数据类型代表0,1或NULL,就是表示true,false.占用1byte.
int:以4个字节来存储正负数.可存储范围为:-2^31至2^31-1.
smallint:以2个字节来存储正负数.存储范围为:-2^15至2^15-1
tinyint: 是最小的整数类型,仅用1字节,范围:0至此^8-1


第二大类:精确数值数据

numeric:表示的数字可以达到38位,存储数据时所用的字节数目会随着使用权用位数的多少变化.
decimal:和numeric差不多


第三大类:近似浮点数值数据

float:用8个字节来存储数据.最多可为53位.范围为:-1.79E+308至1.79E+308.
real:位数为24,用4个字节,数字范围:-3.04E+38至3.04E+38


第四大类:日期时间数据

datatime:表示时间范围可以表示从1753/1/1至9999/12/31,时间可以表示到3.33/1000秒.使用8个字节.
smalldatetime:表示时间范围可以表示从1900/1/1至2079/12/31.使用4个字节.


第五大类:字符串数据

char:长度是设定的,最短为1字节,最长为8000个字节.不足的长度会用空白补上.
varchar:长度也是设定的,最短为1字节,最长为8000个字节,尾部的空白会去掉.
text:长宽也是设定的,最长可以存放2G的数据.


第六大类:Unincode字符串数据

nchar:长度是设定的,最短为1字节,最长为4000个字节.不足的长度会用空白补上.储存一个字符需要2个字节.
nvarchar:长度是设定的,最短为1字节,最长为4000个字节.尾部的空白会去掉.储存一个字符需要2个字节.
ntext:长度是设定的,最短为1字节,最长为2G.尾部的空白会去掉,储存一个字符需要2个字节.


第七大类:货币数据类型

money:记录金额范围为:-92233720368577.5808至92233720368577.5807.需要8 个字节.
smallmoney:记录金额范围为:-214748.3648至214748.36487.需要4个字节.


第八大类:标记数据

timestamp:该数据类型在每一个表中是唯一的!当表中的一个记录更改时,该记录的timestamp字段会自动更新.
uniqueidentifier:用于识别数据库里面许多个表的唯一一个记录.


第九大类:二进制码字符串数据

binary:固定长度的二进制码字符串字段,最短为1,最长为8000.
varbinary:与binary差异为数据尾部是00时,varbinary会将其去掉
image:为可变长度的二进制码字符串,最长2G.

4,MySQL数据类型

1、整型

MySQL数据类型 含义(有符号)
tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(+-9.22*10的18次方)

取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围。

(MySQL可以为整型类型指定宽度,例如Int(11),对绝大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了MySQL的一些交互工具(例如MySQL命令行客户端)用来显示字符的个数。对于存储和计算来说,Int(1)和Int(20)是相同的。)

2、浮点型(float和double)

MySQL数据类型 含义
float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位

设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。

3、定点数

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。

MySQL5.0和更高版本将数字打包保存到一个二进制字符串中(每4个直接存9个数字)。例如,decimal(18,9)小数点两边将各存储9个数字,一共使用9个字节:小数点前的数字用4个字节,小数点后的数字用4个字节,小数点本身占1个字节。

浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。float使用4个字节存储。double占用8个字节。

因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时才使用decimal——例如存储财务数据。但在数据量比较大的时候,可以考虑使用bigint代替decimal。

4、字符串(char,varchar,_text)

MySQL数据类型 含义
char(n) 固定长度,最多255个字符
varchar(n) 固定长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符

char和varchar:

1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。

2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n< n>255),所以varchar(4),存入3个字符将占用4个字节。

3.char类型的字符串检索速度要比varchar类型的快。

varchar和text:

1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n< n>255),text是实际字符数+2个字节。

2.text类型不能有默认值。

3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

5.二进制数据(_Blob)

1._BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。

2._BLOB存储的数据只能整体读出。

3._TEXT可以指定字符集,_BLO不用指定字符集。

6.日期时间类型

MySQL数据类型 含义
date 日期 '2008-12-2'
time 时间 '12:25:36'
datetime 日期时间 '2008-12-2 22:06:44'
timestamp 自动存储记录修改时间

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

与[转帖]Oracle、SQL Server、MySQL数据类型对比相似的内容:

[转帖]Oracle、SQL Server、MySQL数据类型对比

Oracle、SQL Server、MySQL数据类型对比 - 知乎 (zhihu.com) 1,标准SQL数据类型 BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中。不需数据转换(例如,转换到文本数据)。数据输入二进制字段的方式决定了它的输出方式。BIT 1 个字节0 和

[转帖]一文搞懂各种数据库SQL执行计划:MySQL、Oracle等

https://zhuanlan.zhihu.com/p/99331255 MySQL 执行计划 Oracle 执行计划 SQL Server 执行计划 PostgreSQL 执行计划 执行计划(execution plan,也叫查询计划或者解释计划)是数据库执行 SQL 语句的具体步骤,例如通过索

[转帖]我国数据库现状与未来发展趋势

https://www.modb.pro/db/586678 一、数据库现状 (一)国际数据库市场现状 在看国内数据库市场现状前,先看一组国际市场数据库的应用情况。以2021年4月份数据国际市场数据库热度排名为例,稳居前三的Oracle、MySQL 和 Microsoft SQL Server 分数

[转帖]datax安装+配置+使用文档

1 DataX离线同步工具DataX3.0介绍 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS

[转帖]USQL

usql is a universal command-line interface for PostgreSQL, MySQL, Oracle Database, SQLite3, Microsoft SQL Server, and many other databases including N

[转帖]数据库选型比对 Oracle vs sqlserver

http://blog.itpub.net/23825935/viewspace-2928407/ SQL Server 2014 优点 1. 内存 OLTP: 提供部署到核心 SQL Server 数据库中的内存 OLTP 功能,以显著提高数据库应用程序性能。 内存 OLTP 是随 SQL Ser

[转帖]Oracle 性能优化 之 游标及 SQL

https://www.cnblogs.com/augus007/articles/9273236.html 一、游标 我们要先说一下游标这个概念。 从 Oracle 数据库管理员的角度上说,游标是对存储在库缓存中的可执行对象的统称。SQL 语句是存储在库缓存中的,它是游标。除了它之外,还有 Ora

[转帖]Oracle JDBC中的语句缓存

老熊 Oracle性能优化 2013-09-13 在Oracle数据库中,SQL解析有几种: 硬解析,过多的硬解析在系统中产生shared pool latch和library cache liatch争用,消耗过多的shared pool,使得系统不具有可伸缩性。 软解析,过多的软解析仍然可能会导

[转帖]Oracle打开审计

0、审计安装11g默认是开始审计的,有审计记录,所以不需要安装,如果查询发现表不存在,则需要安装。使用此命令安装即可,安装完成后重启数据库。SQL> @/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/cataudit.sql;1、开启审计SQL> al

[转帖]充分利用 Oracle SQL监控

https://zhuanlan.zhihu.com/p/397834311 经常被问到查看执行计划的最佳工具是什么,对我来说,答案总是SQL Monitor(包含在 Oracle Tuning Pack 中)。如果您需要确定在执行任何长时间运行的 SQL 语句期间发生了什么,它确实是最宝贵的工具。