久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql有沒有varchar2

129次閱讀
沒有評論

共計 2420 個字符,預計需要花費 7 分鐘才能閱讀完成。

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

mysql 沒有 varchar2,只有 varchar。VARCHAR 代表可變長度的字符串,其長度可以達到 65,535 個字符;MySQL 將 VARCHAR 值作為 1 字節或 2 字節長度前綴加上實際數據。VARCHAR2 是 oracle 的類型,代表可變長度的字符串,可以存儲 1 到 4000 字節的值,這意味著對于單字節字符集,最多可以在 VARCHAR2 列中存儲 4000 個字符。

mysql 沒有 varchar2,只有 varchar,oracle 有 varchar2,代表字節長度,能容納多少個漢字和數據庫的字符集有關。

mysql 的 varchar 類型

VARCHAR 是可變長度的字符串,其長度可以達到 65,535 個字符。MySQL 將 VARCHAR 值作為 1 字節或 2 字節長度前綴加上實際數據。

長度前綴指定值的字節數。如果列需要少于 255 個字節,則長度前綴為 1 個字節。如果列需要超過 255 個字節,長度前綴是兩個長度字節。

但是,最大長度受到最大行大小 (65,535 字節) 和所使用的字符集的限制。這意味著所有列的總長度應該小于 65,535 字節。

下面我們來看一個例子。

創建一個新的表,它有兩列 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;

該語句成功創建了表。但是,如果我們將 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 將發出錯誤消息:

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

如上所示,行長度太大,所以創建語句失敗。

如果插入長度大于 VARCHAR 列長度的字符串,MySQL 將發出錯誤。請考慮以下示例:

USE testdb;
CREATE TABLE items (
 id INT PRIMARY KEY AUTO_INCREMENT,
 title VARCHAR(3)
INSERT INTO items(title)
VALUES(ABCD

在這個例子中,MySQL 發出以下錯誤消息:

1406 - Data too long for column  title  at row 1

oracle 的 varchar2 類型

要存儲可變長度的字符串,可以使用 Oracle VARCHAR2 數據類型。VARCHAR2 列可以存儲 1 到 4000 字節的值。這意味著對于單字節字符集,最多可以在 VARCHAR2 列中存儲 4000 個字符。

當使用 VARCHAR2 列創建表時,必須指定最大字符串長度(以字節為單位):

VARCHAR2(max_size BYTE)

或以字符 –

VARCHAR2(max_size CHAR)

默認情況下,如果沒有在 max_size 之后顯式指定 BYTE 或 CHAR,則 Oracle 使用 BYTE。換句話說,VARCHAR2(N)列最多可以容納 N 個字節的字符。

如果存儲大小超過 VARCHAR2 列最大長度的字符串,則 Oracle 發出錯誤。

例如,如果定義最大長度為 20 的 VARCHAR2 列,則在單字節字符集中最多可以存儲 20 個字符。如果存儲了 21 個或更多字符,則 Oracle 返回錯誤。

另外,如果在 VARCHAR2(20)列中存儲 10 個字符,則 Oracle 僅使用 10 個字節進行存儲,而不是 20 個字節。因此,使用 VARCHAR2 數據類型可以幫助您節省表使用的空間。

比較 VARCHAR2 值時,Oracle 使用非填充比較語義。

VARCHAR2 最大長度

從 Oracle 12c 開始,可以為 VARCHAR2 數據類型最大長度為:32767。Oracle 使用 MAX_STRING_SIZE 參數來控制最大長度。如果 MAX_STRING_SIZE 是 STANDARD,則 VARCHAR2 的最大大小是 4000 字節。如果 MAX_STRING_SIZE 為 EXTENDED,則 VARCHAR2 的大小限制為 32767。

要獲取 MAX_STRING_SIZE 參數的值,請使用以下查詢:

SELECT
 name,
 value
 v$parameter
WHERE
 name =  max_string_size

執行上面查詢語句,得到以下結果 –

SHOW PARAMETER max_string_size;

以上就是“mysql 有沒有 varchar2”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計2420字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 武威市| 徐汇区| 丘北县| 石林| 双峰县| 奈曼旗| 巩义市| 会东县| 崇阳县| 广安市| 宜都市| 荣成市| 兴安县| 阳东县| 淳安县| 安平县| 大邑县| 南乐县| 灌云县| 旬阳县| 赣州市| 台南县| 内乡县| 靖边县| 绍兴市| 临高县| 石屏县| 师宗县| 大石桥市| 隆回县| 新宁县| 浦县| 赣州市| 中牟县| 西华县| 怀安县| 锦州市| 疏附县| 洛南县| 长沙市| 宜州市|