今天小編給大家分享一下MySQL有沒有varchar2的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

我們提供的服務(wù)有:網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、銀州ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的銀州網(wǎng)站制作公司
mysql沒有varchar2,只有varchar。VARCHAR代表可變長度的字符串,其長度可以達(dá)到65,535個字符; MySQL將VARCHAR值作為1字節(jié)或2字節(jié)長度前綴加上實際數(shù)據(jù)。 VARCHAR2是oracle的類型,代表可變長度的字符串,可以存儲1到4000字節(jié)的值,這意味著對于單字節(jié)字符集,最多可以在VARCHAR2列中存儲4000個字符。
mysql沒有varchar2,只有varchar,oracle有varchar2,代表字節(jié)長度,能容納多少個漢字和數(shù)據(jù)庫的字符集有關(guān)。
mysql的varchar類型
VARCHAR是可變長度的字符串,其長度可以達(dá)到65,535個字符。 MySQL將VARCHAR值作為1字節(jié)或2字節(jié)長度前綴加上實際數(shù)據(jù)。
長度前綴指定值的字節(jié)數(shù)。 如果列需要少于255個字節(jié),則長度前綴為1個字節(jié)。 如果列需要超過255個字節(jié),長度前綴是兩個長度字節(jié)。
但是,最大長度受到最大行大小(65,535字節(jié))和所使用的字符集的限制。 這意味著所有列的總長度應(yīng)該小于65,535字節(jié)。
下面我們來看一個例子。
創(chuàng)建一個新的表,它有兩列s1和s2,長度分別為32765(長度前綴為+2)和32766(+2)。注意,32765 + 2 + 32766 + 2 = 65535,這是最大行大小。
USE testdb;
CREATE TABLE IF NOT EXISTS varchar_test (
s1 VARCHAR(32765) NOT NULL,
s2 VARCHAR(32766) NOT NULL
) CHARACTER SET 'latin1' COLLATE LATIN1_DANISH_CI;
該語句成功創(chuàng)建了表。 但是,如果我們將s1列的長度增加1。
USE testdb;
CREATE TABLE IF NOT EXISTS varchar_test_2 (
s1 VARCHAR(32766) NOT NULL, -- error
s2 VARCHAR(32766) NOT NULL
) CHARACTER SET 'latin1' COLLATE LATIN1_DANISH_CI;
MySQL將發(fā)出錯誤消息:
Error Code: 1118. Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs 0.000 sec
如上所示,行長度太大,所以創(chuàng)建語句失敗。
如果插入長度大于VARCHAR列長度的字符串,MySQL將發(fā)出錯誤。 請考慮以下示例:
USE testdb;
CREATE TABLE items (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(3)
);
INSERT INTO items(title)
VALUES('ABCD');
在這個例子中,MySQL發(fā)出以下錯誤消息:
1406 - Data too long for column 'title' at row 1
oracle的varchar2類型
要存儲可變長度的字符串,可以使用Oracle VARCHAR2數(shù)據(jù)類型。 VARCHAR2列可以存儲1到4000字節(jié)的值。 這意味著對于單字節(jié)字符集,最多可以在VARCHAR2列中存儲4000個字符。
當(dāng)使用VARCHAR2列創(chuàng)建表時,必須指定最大字符串長度(以字節(jié)為單位):
VARCHAR2(max_size BYTE)
或以字符 -
VARCHAR2(max_size CHAR)
默認(rèn)情況下,如果沒有在max_size之后顯式指定BYTE或CHAR,則Oracle使用BYTE。 換句話說,VARCHAR2(N)列最多可以容納N個字節(jié)的字符。
如果存儲大小超過VARCHAR2列最大長度的字符串,則Oracle發(fā)出錯誤。
例如,如果定義最大長度為20的VARCHAR2列,則在單字節(jié)字符集中最多可以存儲20個字符。 如果存儲了21個或更多字符,則Oracle返回錯誤。
另外,如果在VARCHAR2(20)列中存儲10個字符,則Oracle僅使用10個字節(jié)進(jìn)行存儲,而不是20個字節(jié)。 因此,使用VARCHAR2數(shù)據(jù)類型可以幫助您節(jié)省表使用的空間。
比較VARCHAR2值時,Oracle使用非填充比較語義。
VARCHAR2最大長度
從Oracle 12c開始,可以為VARCHAR2數(shù)據(jù)類型最大長度為:32767。 Oracle使用MAX_STRING_SIZE參數(shù)來控制最大長度。 如果MAX_STRING_SIZE是STANDARD,則VARCHAR2的最大大小是4000字節(jié)。 如果MAX_STRING_SIZE為EXTENDED,則VARCHAR2的大小限制為32767。
要獲取MAX_STRING_SIZE參數(shù)的值,請使用以下查詢:
SELECT
name,
value
FROM
v$parameter
WHERE
name = 'max_string_size';
執(zhí)行上面查詢語句,得到以下結(jié)果 -
SHOW PARAMETER max_string_size;
以上就是“mysql有沒有varchar2”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
標(biāo)題名稱:mysql有沒有varchar2
當(dāng)前路徑:http://chinadenli.net/article4/ipccie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站改版、網(wǎng)站建設(shè)、虛擬主機、靜態(tài)網(wǎng)站、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)