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 表名...