mysql與oracle 表字段定義比較

2021-06-09 03:47:38 字數 3988 閱讀 8562

mysql與oracle 表字段定義比較

說明mysql

oracle

varchar

變長字串

varchar[0-65535]

定義長度預設按字元長度計算,如果是gbk編碼的漢字將占用2個位元組

varchar2[1-4000]

varchar是varchar2的同義詞

定義預設按位元組長度計算

tinyint

smallint

mediumint

intbigint

整數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

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

浮點型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

日期型別

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

年份year,1位元組儲存,只儲存年份,支援範圍是[1901]至[2155]

無對應型別,可以用number(3,0)代替

char

定長字串

char[0-255],定義長度預設按字元長度計算,最大儲存255字元

char[1-2000]

定義預設按位元組長度計算

unsigned

無符號說明

支援,用於數值型別

不支援clob

大字串,一般用於儲存文字檔案或超大描述及備註類資訊

tinytext 最大支援255個位元組

text

最大支援65535個位元組

mediumtext

最大支援16mb個位元組

longtext

最大支援4gb位元組

欄位不支援預設值

支援(clob)

oracle10g以前最大支援4gb個位元組

oracle10g開始最大支援4gb個資料塊,資料塊大小為2kb-32kb

oracle還有乙個long型別,是早期的儲存大字串型別,最大支援2gb位元組,現已不推薦使用

blob

大二進位制物件,一般用於儲存檔案或資料

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個元素

不支援set

集合型別

set(v1,v2,v3,...),最多64個元素

不支援national char

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

無,mysql可以對每個字段指定字元編碼

支援nchar(1-2000)

nvarchar(1-4000)

nclob

bfile

外部檔案指標型別

不支援支援

檔案大小最大

4gb檔名稱最長255字元

自定義資料型別

不支援支援

xml型別

不支援支援

自增型別

自動增長型別

支援使用簡單

不支援一般使用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個字段

Oracle操作表,字段

0.建立表 create table table name as select from table name b 1.oracle 修改表名 alter table old table name rename to new table name 大寫為系統命令 2.oracle通過altertab...

oracle修改表字段

增加字段 alter table docdsp add dspcode char 200 刪除字段 alter table table name drop column column name 修改字段型別 alter table table name alter column column nam...

MySQL表字段操作

語法 新增到末尾 alter table 表名 add 欄位名,資料型別 新增到開始 alter table 表名 add 欄位名 資料型別 first 新增到制定位置 alter table 表名 add 欄位名 after 欄位名 會新增在這個欄位名的下面 刪除字段 alter table 表名...