91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

char和varchar差異

發布時間:2020-07-17 06:57:30 來源:網絡 閱讀:840 作者:拍黑磚業戶 欄目:MySQL數據庫

字符與字節的區別(查閱引用)

①ASCII碼中,一個英文字母(不分大小寫)占一個字節的空間,一個中文漢字占兩個字節的空間。一個二進制數字序列,在計算機中作為一個數字單元,一般為8位二進制數,換算為十進制。最小值0,最大值255。

②UTF-8編碼中,一個英文字符等于一個字節,一個中文(含繁體)等于三個字節。

③Unicode編碼中,一個英文等于兩個字節,一個中文(含繁體)等于兩個字節。

符號:英文標點占一個字節,中文標點占兩個字節。舉例:英文句號“.”占1個字節的大小,中文句號“。”占2個字節的大小。

④UTF-16編碼中,一個英文字母字符或一個漢字字符存儲都需要2個字節(Unicode擴展區的一些漢字存儲需要4個字節)。

⑤UTF-32編碼中,世界上任何字符的存儲都需要4個字節。

字節(Byte)是一種計量單位,表示數據量多少,它是計算機信息技術用于計量存儲容量的一種計量單位。

字符是指計算機中使用的文字和符號,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。

存數據時的區別

char定義的是固定長度,長度范圍為0-255,存儲時,如果字符數沒有達到定義的位數,會在后面用空格補全存入數據庫中。char最多能存放255個字符個數,和編碼無關。
varchar是變長長度,長度范圍為0-65535,存儲時,如果字符沒有達到定義的位數,也不會在后面補空格。對于varchar,理論上最多能存放65535個字符,varchar 字段是將實際內容單獨存儲在聚簇索引之外,內容開頭用1到2個字節表示實際長度(長度超過255時需要2個字節),因此最大長度不能超過65535字符。當用到utf-8編碼時候最多可以存21844個字符,在gbk編碼下最多可以有32766個字符,Latin1 一個字符占一個字節,最多能存放 65532 個字符。
GBK編碼計算方式:
若一個表只有一個varchar類型:
char和varchar差異
32766=(65535-1-2)/2。
減1的原因是實際存儲從第二字節開始;
減2的原因是varchar頭部的2個字節表示長度;
除2的原因是字符編碼是gbk;
UTF8計算方式:
char和varchar差異
32766=(65535-1-2)/3。
減1的原因是實際存儲從第二字節開始;
減2的原因是varchar頭部的2個字節表示長度;
實際例子:
create table t11(c int, c2 char(30), c3 varchar(21812)) charset=utf8;
char和varchar差異
減1的原因是實際存儲從第二字節開始;
減2的原因是varchar頭部的2個字節表示長度;
減4的原因是int類型的c占4個字節;
減30*3的原因是char(30)占用90個字節,編碼是utf8。

取數據區別
數據庫取char字段的數據的時候會把空格去掉,但是在取varchar字段的數據時,數據的尾部空格會保留
char和varchar差異
char和varchar差異

char和varchar差異

存儲引擎對于選擇CHAR和VARCHAR的影響:
對于MyISAM存儲引擎:最好使用固定長度的數據列代替可變長度的數據列。這樣可以使 整個表靜態化,從而使數據檢索更快,用空間換時間。
對于InnoDB存儲引擎:使用可變長度的數據列,因為InnoDB數據表的存儲格式不分固定 長度和可變長度,因此使用CHAR不一定比使用VARCHAR更好,但由于VARCHAR是按照 實際的長度存儲,比較節省空間,所以對磁盤I/O和數據存儲總量比較好。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大关县| 观塘区| 普格县| 灌阳县| 桃园市| 泾源县| 临海市| 绍兴市| 怀宁县| 山东省| 鹰潭市| 孙吴县| 通榆县| 墨玉县| 微山县| 鱼台县| 松阳县| 鸡泽县| 汝阳县| 西吉县| 岳西县| 班玛县| 鹤庆县| 昌平区| 巨野县| 拉孜县| 辽宁省| 湖北省| 四川省| 九龙坡区| 葫芦岛市| 宁强县| 石渠县| 红安县| 通渭县| 乌审旗| 迁安市| 辽阳县| 山阴县| 武川县| 大同县|