mysql 可變字串 MySQL 字串型別

2021-10-18 10:08:20 字數 1366 閱讀 8410

字串型: set , enum , blob , text , varchar , char。

1. char (字元)

格式:char(m)  固定長度

m 表示嚴格限定的長度。

char(5)

varchar(5)

5位元組1位元組

需要乙個位元組,儲存字串的總長度

'abc'

'abcde'

'abcdef'

超出限制,插入不成功

插入不成功

效率相對高

空間控制好

2. varchar(變長字串)

格式:varchar(m)   可變長度

m 表示允許的最大長度。

預留了乙個位元組,儲存字串的長度。

當讀取了該長度的字串時,便不再繼續讀取了。

eg. 當存固定長度的字串(如 身份證號,手機號碼),使用char ,速度快,不會造成空間的浪費;

tip: m 表示的是位元組數,而不是位元組數。

但總的長度是按照位元組數計算的。

真實的varchar長度:總長度65535,

varchar的特點:當型別資料超過255個字元時,採用2個位元組表示長度。

因此65535 - 2 = 65533 。

另外,整條記錄需要乙個額外的位元組,用於儲存當前哪個欄位是null值。

除非所有欄位都不是null,這個位元組才可以省略。

1 create tables_1(2 a varchar(65533) not null //所有位元組都不是null,不需要儲存null值

3 )character setlatin1;4

5 create tables_2(6 a varchar(65532) //65535中,2個位元組儲存長度,1個位元組儲存當前哪個欄位是null值7 )character set latin1;

而當table中有其他的列時,

tinyint本身佔1位元組,varchar需要2位元組儲存自身的長度。若二者都是not null,那可以省去儲存null的字段,

varchar可以占用65535 - 1 - 2 = 65532,如下圖第一張所示:

若a、b中任何乙個不寫not null,則儲存null的字段就必須存在,占用1個位元組,此時varchar最大只能是65532 - 1 = 65531。

字串 可變字串與不可變字串

一 nsstring 是不可變字串,所有它所有產生其他字串方法都是生成乙個新的字串,而不會改變原來字串 第一種 字面量 它是常量字串,儲存常量區 nsstring str abc 第二種是通過 快捷的構造方法 nsstring stringwithformat 第三種方式 初始化方法 nsstrin...

mysql字串亂碼 解決Mysql字串亂碼

1 字符集和字元序2 3 字符集 character set 定義了字元以及字元編碼。4 5 字元序 collation 定義了字元的比較規則。6 7 mysql支援多種字符集 與 字元序。8 9 乙個字符集對應至少一種字元序 一般是1對多 10 11 兩個不同的字符集不能有相同的字元序。12 13...

mysql字串邊界 mysql字串函式

mysql 字串擷取函式 ord cast left right substring substring index mid substr 其中,mid substr 等價於substring 函式,substring 的功能非常強大和靈活。ord 用於返回字串第乙個字元的ascii碼。cast 1...