字串型: 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...