
點選關注,我們共同每天進步一點點!
1 字元類型
MySQL提供了多種關于字元存儲的類型,但是在大多數情況下我們隻使用char和varchar即可
2 字元集
字元串分二進制與非二進制類型,二進制用于儲存圖檔、聲音等檔案,非二進制用于儲存文本資料。
非二進制文本受字元集和校對規則影響。
其實字元集說白了就是字元編碼。
2|1概念解析
字元集(Character set)是多個字元的集合,字元集種類較多,每個字元集包含的字元個數不同。常用的字元集有GBK、BIG5、UTF8。
UTF8字元集包含文字内容更廣,如韓文、日文、德文相容度更高,也是推薦使用的字元集(UTF8MB4)。
表不設定字元集繼承資料庫,字段不設定字元集繼承表的,是以一般我們在配置檔案中為資料庫指定字元集即可
2|2校對規則
字元集内用于字元比較和排序的一套規則,以_ci結束的為大小寫不敏感、_bin結束的為不區分大小寫。
當使用不區分大小寫的校對規則時A與a是相同的,否則則不相同,這會影響到排序與比對。
修改表校對規則,對表的原字段将不影響,隻對新增字段影響
3 基本定義
對于字元類型而言,其指定寬度均為存入寬度,以字元為機關。
4 定長變長
4|1差別差異
char是定長字元串,當存入的字元數量不足指定寬度時,将會使用進行填充。
varchar是變長字元串,當存入的字元數類不足指定寬度時,不會使用任何字元進行填充。
通常情況下來講,char的存取速度要比varchar要高(約50%),但是更加浪費磁盤空間。
在InnoDB存儲引擎中,不存在這種差異。
差異詳解
#
由于varchar類型是變長存儲,是以需要有一個頭部來辨別真實内容占了多少字元,這個頭部通常占據1個位元組。
即存入abcd的時候算上頭部實際上是占用了5個位元組。這也是為什麼說通常情況下varchar比較節省記憶體,而不是說全部情況。
4|2差異對比
如果要想進定長與變長的差異對比試驗,需要用到以下兩個函數。
length():檢視位元組數
char_length():檢視字元數
mysql>
小總結:建議在同一張資料表中統一使用varchar或char類型,這裡更推薦使用char類型。
5 常用函數
5|1大小寫轉換
upper()小寫轉大寫,lower()大寫轉小寫
mysql>
5|2指定量取
left()與right()函數用于取左或右指定數量的字元
以下将示例取左邊3個字元。
mysql>
5|3中間字元
mid()從中間取字元串,參數二為指定起始位置(從1開始),參數三為取的字元數量(可不指定,一直取完)。
以下将示範從第二個字元開始取兩個。
mysql>
5|4截取子串
substring()從指定起始位置開始取出向右所有字元串,可指定結束位置。(其實我感覺這個和mid()好像沒啥差別)
mysql>
5|5字元長度
char_length()可擷取字元長度,如果要擷取char類型的字元長度且包括填充空白符,需要修改sql模式。
修改sql模式:SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
mysql>
5|6位元組長度
length()可擷取位元組長度。
mysql>
5|7字元連接配接
concat()可将多段字元進行連接配接。
以下示例将展示一二三四五,---以及12345這三段字元的連接配接。
mysql>
原文位址: https://www.cnblogs.com/Yunya-Cnblogs/p/13585668.html
喜歡請關注,有用請轉發~
升職、加薪、無漏測-點“在看”