--varchar,varchar2
聯絡:
1.varchar/varchar2用於儲存可變長度的字串
比如varchar(20),存入字串'abc',則資料庫中該欄位只佔3個位元組,而不是20個位元組
2.size 的最大值是 4000,而最小值是 1,其值表示位元組數,比如
varchar(20)表示最大可以存放20個位元組的內容
區別:
1.varchar2把所有字元都佔兩位元組處理(一般情況下),varchar只對漢字和全形等字元佔兩位元組,數字,英文字元等都是一個位元組;
2.VARCHAR2把空串等同於null處理,而varchar仍按照空串處理;
3.VARCHAR2字元要用幾個位元組儲存,要看資料庫使用的字元集,
比如GBK,漢字就會佔兩個位元組,英文1個
如果是UTF-8,漢字一般佔3個位元組,英文還是1個。
但是一般情況下,我們都認為是兩個位元組處理,因為oracle安裝時候預設我們都選擇GBK的編碼格式,但是我們在頁面做輸入字串長度的校正的時候,還是以資料庫設計欄位最大長度除3來作為最大長度-----防止資料庫移植時設定不同編碼格式;
比如:VARCHAR2(10),一般情況下最多存放5個漢字,10個字元
--nvarchar,nvarchar2
聯絡:
1.nvarchar/nvarchar2用於儲存可變長度的字串
2.size 的最大值是 4000,而最小值是 1,其值表示字元的個數,而不是位元組數
3.這兩種類型更適合儲存中文
區別:
1.nvarchar中字元為中文則一般按2個位元組計算,英文數字等按照一個自己計算
2.nvarchar2中所有字元均按照2個位元組計算;
3.nvarchar2雖然更占空間,但是它有更好的相容性,所有推薦使用;
VARCHAR2(size)
可變長度的字串,其最大長度為size個位元組;size的最大值是4000,而最小值是1;你必須指定一個VARCHAR2的size;
NVARCHAR2(size)
可變長度的字串,依據所選的國家字元集,其最大長度為size個字元或位元組;size的最大值取決於儲存每個字元所需的位元組數,其上限為4000;你必須指定一個NVARCHAR2的size;
NUMBER(p,s)
精度為p並且數值範圍為s的數值;精度p的範圍從1到38;數值範圍s的範圍是從-84到127;
例如:NUMBER(5,2) 表示整數部分最大3位,小數部分為2位;
NUMBER(5,-2) 表示數的整數部分最大為7其中對整數的倒數2位為0,前面的取整。
NUMBER 表示使用預設值,即等同於NUMBER(5);
LONG
可變長度的字元資料,其長度可達2G個位元組;
DATE
有效日期範圍從公元前4712年1月1日到公元後4712年12月31日
RAW(size)
長度為size位元組的原始位元據,size的最大值為2000位元組;你必須為RAW指定一個size;
LONG RAW
可變長度的原始位元據,其最長可達2G位元組;
CHAR(size)
固定長度的字元資料,其長度為size個位元組;size的最大值是2000位元組,而最小值和預設值是1;
NCHAR(size)
也是固定長度。根據Unicode標準定義
CLOB
一個字元大型物件,可容納單位元組的字元;不支援寬度不等的字元集;最大為4G位元組
NCLOB
一個字元大型物件,可容納單位元組的字元;不支援寬度不等的字元集;最大為4G位元組;儲存國家字元集
BLOB
一個二進位大型物件;最大4G位元組
BFILE
包含一個大型二進位檔案的定位器,其儲存在資料庫的外面;使得可以以字元流I/O訪問存在資料庫伺服器上的外部LOB;最大大小為4G位元組.