mysql與oracle表字段定義比較

mysql與oracle表字段定義比較

 

說明

 

mysql

 

oracle

 

VARCHAR

  www.aiwalls.com  

變長字符串

 

VARCHAR[0-65535]

 

定義長度默認按字符長度計算,如果是GBK編碼的漢字將占用2個字節,如果字段定義總字節長度超過65535將自動轉化為MEDIUMTEXT類型定義

 

VARCHAR2[1-4000]

VARCHAR是VARCHAR2的同義詞

 

定義默認按字節長度計算

 

TINYINT

 

SMALLINT

  www.aiwalls.com  

MEDIUMINT

 

INT

BIGINT

 

整數

 

TINYINT(-128-127)

 

SMALLINT(-32768-32767)

 

MEDIUMINT(-8388608-8388607)

 

INT(-2147483648-2147483647)

BIGINT(-9223372036854775808-9223372036854775807) 

 

無專用類型,

  www.aiwalls.com  

TINYINT可以用NUMBER(3,0)代替

 

SMALLINT可以用NUMBER(5,0)代替

 

MEDUIMINT可以用NUMBER(7,0)代替

 

INT可以用NUMBER(10,0)代替

 

BIGINT可以用NUMBER(20,0)代替

 

ORACLE中有SMALLINT,INT,INTEGER類型,不過這是NUMBER(38,0)的同義詞

 

DECIMAL

NUMERIC

 

數值類型

 

DECIMAL[1-65[,0-30]]

NUMERIC是DECIMAL的同義詞

 

NUMBER 可表示數范圍: 1*10^-130至1*10^126

 

NUMBER([1-38][,-84-127])

 

DECIMAL、NUMERIC、DEC是NUMBER的同義詞

 

FLOAT

浮點型

  www.aiwalls.com  

FLOAT(D,M)

 

oracle10g開始增加BINARY_FLOAT類型

 

10g以前無專用類型,可以用NUMBER代替

 

ORACLE中有FLOAT和REAL類型,不過這是NUMBER的同義詞

 

DOUBLE

 

雙精度浮點型

 

DOUBLE(D,M)

 

oracle10g開始增加BINARY_DOUBLE類型

 

10g以前無專用類型,可以用NUMBER代替

 

ORACLE中有DOUBLE PRECISION類型,不過這是NUMBER的同義詞

 

BIT

 

位類型

 

BIT(1-64)

 

 

DATETIME

 

日期類型

  www.aiwalls.com  

DATE,3字節存儲,隻存儲日期,沒有時間,支持范圍是[1000-01-01]至[9999-12-31]

TIME,3字節存儲,隻存儲時間,沒有日期,支持范圍是[-838:59:59]至[838:59:59]

DATETIME,占8字節存儲,可表示日期和時間,支持范圍是[1000-01-01 00:00:00]至[9999-12-31 23:59:59]

TIMESTAMP,占4字節存儲,可表示日期和時間,范圍是[1970-01-01 00:00:00]至[2038-01-19 03:14:07]

 

DATE類型

7字節存儲,可表示日期和時間,支持范圍是[-4712-01-01 00:00:00]至[9999-12-31 23:59:59]

 

TIMESTAMP

 

高精度日期

 

5.6.4以前不支持小數秒精度

5.6.4開始TIME,DATETIME,TIMESTAMP支持,最多可以6位小數秒,也就是微秒級別

 

TIMESTAMP[0-9]

占用空間7-11個字節,當小數秒精度為0時與DATE類型相同,小數秒最高精度可達9位,也就是納精度

 

YEAR

  www.aiwalls.com  

年份

 

YEAR,1字節存儲,隻存儲年份,支持范圍是[1901]至[2155]

 

無對應類型,可以用NUMBER(3,0)代替

 

CHAR

 

定長字符串

 

CHAR[0-255],定義長度默認按字符長度計算,最大保存255字符

 

CHAR[1-2000]

 

定義默認按字節長度計算

 

UNSIGNED

 

無符號說明

  www.aiwalls.com  

支持,用於數值類型

 

不支持

 

CLOB

 

大字符串,一般用於存儲文本文件或超大描述及備註類信息

 

TINYTEXT 最大支持255個字節

TEXT最大支持65535個字節

MEDIUMTEXT最大支持16MB個字節

LONGTEXT最大支持4GB字節

 

字段不支持默認值

 

支持(CLOB)

oracle10g以前最大支持4GB個字節

 

oracle10g開始最大支持4GB個數據塊,數據塊大小為2KB-32KB

 

oracle還有一個LONG類型,是早期的存儲大字符串類型,最大支持2GB字節,現已不推薦使用

 

BLOB

 

大二進制對象,一般用於存儲文件或圖片數據

  www.aiwalls.com  

TINYBLOB 最大支持255個字節

BLOB最大支持65535個字節

MEDIUMBLOB最大支持16MB個字節

 

LONGBLOB最大支持4GB字節

 

字段不支持默認值

 

支持(BLOB)

 

oracle10g以前最大支持4GB個字節

 

oracle10g開始最大支持4G個數據塊,數據塊大小為2KB-32KB

 

oracle還有一個LONG RAW類型,是早期的存儲二進制類型,最大支持2GB字節,現已不推薦使用

 

BINARY

 

二進制信息

 

BINARY(0-255),定長

VARBINARY(0-65535),變長

 

RAW(1-2000)

 

ENUM

 

枚舉類型

 

ENUM(v1,v2,v3,…),最多65535個元素

  www.aiwalls.com  

不支持

 

SET

 

集合類型

 

SET(v1,v2,v3,…),最多64個元素

 

不支持

 

NATIONAL CHAR

 

國際化字符集類型,較少使用

 

無,MYSQL可以對每個字段指定字符編碼

 

支持

NCHAR(1-2000)

NVARCHAR(1-4000)

NCLOB

 

BFILE

 

外部文件指針類型

 

不支持

 

支持

文件大小最大4GB

文件名稱最長255字符

 

自定義數據類型

  www.aiwalls.com  

不支持

 

支持

 

XML類型

 

不支持

 

支持

 

自增類型

 

自動增長類型

 

支持

使用簡單

 

不支持

一般使用SEQUENCE解決,用法與自增類型差別較大,使用較復雜,但能實現非常靈活的應用,包括字符自增主鍵、全局主鍵等等

 

字段默認值表達式

 

不支持函數和表達式

TEXT和BLOB字段類型不支持默認值

 

支持函數和表達式

 

字段順序修改

 

支持,例如,把emp表的id字段順序放在name字段後面:

alter table emp modify column id varchar(20) after name;

 

不支持,隻能重建表或字段

  www.aiwalls.com  

虛擬字段

 

虛擬字段是一個邏輯字段定義,其結果值通常是一個表達式,並在表中存儲物理值,不占用空間,主要用於簡化查詢邏輯。比如有一個商品銷售表有單價和數量兩個字段,那可以建一個虛擬字段金額,其表達式=單價*數量

 

不支持

 

11g支持,例:

create table sales

(

  id       number,

  quantity number,

  price    number,

  amount   GENERATED always as (quantity*price) virtual

);

 

表字段數限制

 

INNODB 最大1000個字段

所有字段總定義長度不能超過65535字節

所有固定長度字段的總長度不超過半個數據塊大小(數據塊大小一般為16K)

 

最大1000個字段
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *