說明 |
mysql |
oracle |
變長字串 |
VARCHAR[0-65535] 定義長度預設按字元長度計算,如果是GBK編碼的漢字將佔用2個位元組 |
VARCHAR2[1-4000] VARCHAR是VARCHAR2的同義字 定義預設按位元組長度計算 |
整數 |
TINYINT(-128-127) SMALLINT(-32768-32767) MEDIUMINT(-8388608-8388607) INT(-2147483648-2147483647) BIGINT(-9223372036854775808-9223372036854775807) |
無專用類型, 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[1-65[,0-30]] NUMERIC是DECIMAL的同義字 |
NUMBER 可表示數範圍: 1*10^-130至1*10^126 NUMBER([1-38][,-84-127]) DECIMAL、NUMERIC、DEC是NUMBER的同義字 |
浮點型 |
FLOAT(D,M) |
oracle10g開始增加BINARY_FLOAT類型 10g以前無專用類型,可以用NUMBER代替 ORACLE中有FLOAT和REAL類型,不過這是NUMBER的同義字 |
雙精確度浮點型 |
DOUBLE(D,M) |
oracle10g開始增加BINARY_DOUBLE類型 10g以前無專用類型,可以用NUMBER代替 ORACLE中有DOUBLE PRECISION類型,不過這是NUMBER的同義字 |
位類型 |
BIT(1-64) |
無 |
日期類型 |
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] |
高精度日期 |
5.6.4以前不支援小數秒精度 5.6.4開始TIME,DATETIME,TIMESTAMP支援,最多可以6位小數秒,也就是微秒層級 |
TIMESTAMP[0-9] 佔用空間7-11個位元組,當小數秒精度為0時與DATE類型相同,小數秒最高精度可達9位,也就是納精度 |
年份 |
YEAR,1位元組儲存,只儲存年份,支援範圍是[1901]至[2155] |
無對應類型,可以用NUMBER(3,0)代替 |
定長字串 |
CHAR[0-255],定義長度預設按字元長度計算,最大儲存255字元 |
CHAR[1-2000] 定義預設按位元組長度計算 |
無符號說明 |
支援,用於數實值型別 |
不支援 |
大字串,一般用於儲存文字檔或超大描述及備忘類資訊 |
TINYTEXT 最大支援255個位元組 TEXT最大支援65535個位元組 MEDIUMTEXT最大支援16MB個位元組 LONGTEXT最大支援4GB位元組 欄位不支援預設值 |
支援(CLOB) oracle10g以前最大支援4GB個位元組 oracle10g開始最大支援4GB個資料區塊,資料區塊大小為2KB-32KB oracle還有一個LONG類型,是早期的儲存大字串類型,最大支援2GB位元組,現已不推薦使用 |
二進位對象,一般用於隱藏檔或圖片資料 |
TINYBLOB 最大支援255個位元組 BLOB最大支援65535個位元組 MEDIUMBLOB最大支援16MB個位元組 LONGBLOB最大支援4GB位元組 欄位不支援預設值 |
支援(BLOB) oracle10g以前最大支援4GB個位元組 oracle10g開始最大支援4G個資料區塊,資料區塊大小為2KB-32KB oracle還有一個LONG RAW類型,是早期的儲存二進位類型,最大支援2GB位元組,現已不推薦使用 |
二進位資訊 |
BINARY(0-255),定長 VARBINARY(0-65535),變長 |
RAW(1-2000) |
枚舉類型 |
ENUM(v1,v2,v3,...),最多65535個元素 |
不支援 |
集合類型 |
SET(v1,v2,v3,...),最多64個元素 |
不支援 |
國際化字元集類型,較少使用 |
無,MYSQL可以對每個欄位指定字元編碼 |
支援 NCHAR(1-2000) NVARCHAR(1-4000) NCLOB |
外部檔案指標類型 |
不支援 |
支援 檔案大小最大4GB 檔案名稱最長255字元 |
|
不支援 |
支援 |
|
不支援 |
支援 |
自動成長類型 |
支援 使用簡單 |
不支援 一般使用SEQUENCE解決,用法與自增類型差別較大,使用較複雜,但能實現非常靈活的應用,包括字元自增主鍵、全域主鍵等等 |
|
不支援函數和運算式 TEXT和BLOB欄位類型不支援預設值 |
支援函數和運算式 |
|
支援,例如,把emp表的id欄位順序放在name欄位後面: alter table emp modify column id varchar(20) after name; |
不支援,只能重建表或欄位 |
虛擬欄位是一個邏輯欄位定義,其結果值通常是一個運算式,並在表中儲存物理值,不佔用空間,主要用於簡化查詢邏輯。比如有一個商品銷售表有單價和數量兩個欄位,那可以建一個虛擬欄位金額,其運算式=單價*數量 |
不支援 |
11g支援,例: create table sales ( id number, quantity number, price number, amount GENERATED always as (quantity*price) virtual ); |
|
INNODB 最大1000個欄位 所有欄位總定義長度不能超過65535位元組 所有固定長度欄位的總長度不超過半個資料區塊大小(資料區塊大小一般為16K) |
最大1000個欄位 |