日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

MYSQL中 char 和 varchar的區別

瀏覽:84日期:2023-10-11 13:47:43

CHAR和VARCHAR類型相似,差別主要在存儲,尾隨空格和檢索方式上。

CHAR和VARCHAR相同的是:CHAR和VARCHAR都指定了字符長度,注意是字符長度。例如char(30) 和 varchar(30)表示都可以存30個字符。有一點要注意的是在utf8mb4編碼中,每個字符占4個節點。在utf8中,每個字符占3個字節。當要存儲的字符超過CHAR/VARCHAR指定的最大長度。在sql mode 沒開啟的時候是截斷要存儲的字串,只存儲前30位

CHAR列中的值是定長的字符串。長度可以指定為0到255個字符(例如utf8mb4: 0-255*4個字節)之間的值當使用CHAR存儲字符時,以CHAR(30)為例,不夠30個字符的以空格向右填充。當檢索CHAR值時,除非啟用sqlmode:PAD_CHAR_TO_FULL-LENGTH SQL模式,否則將刪除尾部空格。

VARCHAR列中的值是可變長度的字符串。長度可以指定為0到65535字節之間的值。VARCHAR的有效最大長度取決于最大行大小(65535字節,在所有列之間共享)和使用的字符集

與CHAR不同的是,VARCHAR在存儲數據的時候,會額外存儲存儲1-2個字節(例如varchar(4),這1-2個字節長度不會算在這4個字符長度里面,不用擔心被截斷),這1-2個字節用來記錄數據字符的長度。假如數據字符長度小于等于255,則使用1個字節記錄數據長度。大于則用兩個字節。CHAR只存儲數據本身。如下圖所示。

(誤區:varchar在查詢時比char慢是因為會計算varchar的字節長度(X))

在latin1編碼中,Latin1不能存中文。英文字母為1個字節。

Value CHAR(4) Storage Required VARCHAR(4) Storage Required ’’ ’ ’ 4 bytes ’’ 1 byte ’ab’ ’ab ’ 4 bytes ’ab’ 3 byte ’abcd’ ’abcd’ 4 bytes ’abcd’ 5 byte ’abcdefgh’ ’abcd’ 4 bytes ’abcd’ 5 byte

需要注意的是VARCHAR值在存儲時不填充空格。在存儲和檢索值時,尾部空格將被保留,這與標準SQL一致。而CHAR則相反,CHAR在儲存時會填充空格,在檢索時尾部空格會去掉,無論這個尾部空格是自動填充的還是數據本身的。舉個例子:

mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));Query OK, 0 rows affected (0.01 sec) mysql> INSERT INTO vc VALUES (’ab ’, ’ab ’);Query OK, 1 row affected (0.00 sec) mysql> SELECT CONCAT(’(’, v, ’)’), CONCAT(’(’, c, ’)’) FROM vc;+---------------------+---------------------+| CONCAT(’(’, v, ’)’) | CONCAT(’(’, c, ’)’) |+---------------------+---------------------+| (ab ) | (ab) |+---------------------+---------------------+1 row in set (0.06 sec)<br><br><br>

做三個實驗。

mysql> show create table vc;+-------+------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+-------+------------------------------------------------------------------------------------------------------------------------------------------------------+| vc | CREATE TABLE `vc` ( `v` varchar(4) DEFAULT NULL, `c` char(4) DEFAULT NULL, UNIQUE KEY `v_UNIQUE` (`v`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |+-------+------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)

1.查詢語句 where 字段=’ ab’;

mysql> SELECT concat(’(’,v, ’)’),concat(’(’,c, ’)’) FROM vc where v=’ ab’;Empty set (0.00 sec) mysql> SELECT concat(’(’,v, ’)’),concat(’(’,c, ’)’) FROM vc where c=’ ab’;Empty set (0.00 sec)

2.查詢語句 where 字段=’ab ’;

mysql> SELECT concat(’(’,v, ’)’),concat(’(’,c, ’)’) FROM vc where v=’ab ’;+--------------------+--------------------+| concat(’(’,v, ’)’) | concat(’(’,c, ’)’) |+--------------------+--------------------+| (ab ) | (ab) |+--------------------+--------------------+1 row in set (0.00 sec) mysql> SELECT concat(’(’,v, ’)’),concat(’(’,c, ’)’) FROM vc where c=’ab ’;+--------------------+--------------------+| concat(’(’,v, ’)’) | concat(’(’,c, ’)’) |+--------------------+--------------------+| (ab ) | (ab) |+--------------------+--------------------+1 row in set (0.00 sec)<br><br><br>在所有字符串的比較中,不論是varchar,text,char 都會忽略去掉尾部空格,除了like子句,like子句不會去掉尾部空格如下所示<br><br>

mysql> SELECT concat(’(’,v, ’)’),concat(’(’,c, ’)’) FROM vipshop_dba.vc where c like ’ab’; (無尾部空格)+--------------------+--------------------+| concat(’(’,v, ’)’) | concat(’(’,c, ’)’) |+--------------------+--------------------+| (ab ) | (ab) || ( ab ) | (ab) |+--------------------+--------------------+2 rows in set (0.00 sec) mysql> SELECT concat(’(’,v, ’)’),concat(’(’,c, ’)’) FROM vipshop_dba.vc where c like ’ab ’; (有尾部空格)Empty set (0.00 sec) CHAR在儲存時會填充空格,在檢索時尾部空格會去掉,無論這個尾部空格是自動填充的還是數據本身的。這個去掉尾部空格的動作在比較之前會發生 mysql> SELECT concat(’(’,v, ’)’),concat(’(’,c, ’)’) FROM vipshop_dba.vc where v like ’ab ’; (有尾部空格)+--------------------+--------------------+| concat(’(’,v, ’)’) | concat(’(’,c, ’)’) |+--------------------+--------------------+| (ab ) | (ab) |+--------------------+--------------------+1 row in set (0.01 sec) mysql> SELECT concat(’(’,v, ’)’),concat(’(’,c, ’)’) FROM vipshop_dba.vc where v like ’ab’; (無尾部空格)Empty set (0.00 sec)

3.varchar 設置unique 索引 觀察 ’ab’ 和 ’ab ’是否同時能存在

mysql> insert into vc (v,c)values(’ab ’, ’ab ’) -> ;ERROR 1062 (23000): Duplicate entry ’ab ’ for key ’v_UNIQUE’mysql> insert into vc (v,c)values(’ ab ’, ’ab ’) -> ;Query OK, 1 row affected, 1 warning (0.00 sec)<br>說明雖然varchar 尾部空格可以保留,但是索引上似乎額外做了限制。如果varchar是唯一索引,插入的值區別只在于尾部空格的數量的話則會報 Duplicate key

說到字節限制這個問題,也想提醒一下。索引長度也是有限制的噢:

innodb引擎的每個索引列長度限制為767字節(bytes),所有組成索引列的長度和不能大于3072字節。注意是字節,varchar(256)在不同的編碼字節計算不同。例如在utf8mb4中,一個字符占4個字節,256個字符=1024個字節。就達不到索引覆蓋的效果噢。相當于只做了一個前綴索引(非常重要,前綴索引是需要回(主鍵)表的,二次查詢)

innodb引擎可以通過配置innodb_large_prefix=on(全局參數,動態生效)來讓單個索引列長度限制上升到3072字節

在MySQL5.7里默認 innodb_large_prefix=1 解除了767bytes長度限制,但是單列索引長度最大還是不能超過3072bytes 在MySQL5.6里默認 innodb_large_prefix=0 限制單列索引長度不能超過767bytes。需要設置innodb_large_prefix=ON、innodb_file_format=barracuda、innodb_file_per_table=ON ,且Innodb表的存儲格式為 DYNAMIC 或 COMPRESSED,則前綴索引最多可包含3072個字節

以上就是MYSQL中 char 和 varchar的區別的詳細內容,更多關于MYSQL char 和 varchar的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品一二三| 免费看av不卡| 亚洲精品极品少妇16p| 欧洲亚洲一区二区三区| 午夜av成人| 播放一区二区| 日韩毛片视频| 久久久久久黄| 亚洲激情中文在线| 美女精品在线观看| 天堂va欧美ⅴa亚洲va一国产| 亚洲精品动态| 7777精品| 欧美激情视频一区二区三区免费| 国产精品片aa在线观看| 久久99高清| 中文在线а√天堂| 美女毛片一区二区三区四区| 亚洲大全视频| 蜜桃视频在线观看一区二区| 日韩国产精品久久久久久亚洲| 亚洲精品影视| 国产精品日韩精品中文字幕| 欧美黄页在线免费观看 | 99久久精品网| 国产精品视区| 亚洲精品一二三**| 国产精品hd| 亚洲1234区| 激情婷婷欧美| 亚洲精品综合| 麻豆精品少妇| 免费久久精品| 在线视频精品| 欧美有码在线| 精品午夜视频| 久久亚洲精品中文字幕蜜潮电影| 亚洲深爱激情| 青青草国产精品亚洲专区无| 久久午夜影院| 九色精品91| 日韩激情啪啪| 国产一区二区三区探花| 黑丝美女一区二区| 日韩毛片网站| 97欧美在线视频| 性色一区二区| 久久99久久久精品欧美| 精品国产午夜肉伦伦影院| 久久激情一区| 日韩av字幕| 高清av不卡| 亚洲欧美日韩国产综合精品二区 | 91精品国产乱码久久久久久久| 亚洲免费网址| 国产精品亚洲综合色区韩国 | 亚洲成人va| 日韩欧美另类中文字幕| 国产精品3区| 欧美日韩免费观看视频| 蜜桃一区二区三区在线| 精品福利久久久| 热久久国产精品| 久久影院一区二区三区| 欧美日一区二区| 欧美日韩精品一区二区三区在线观看| 亚洲天堂资源| 婷婷综合福利| 在线天堂中文资源最新版| 久久不射网站| 国产夫妻在线| 日本va欧美va瓶| 久久人人97超碰国产公开结果| 首页国产欧美久久| 成人在线免费观看91| 日韩专区一卡二卡| 日韩av二区| 日本午夜免费一区二区 | 国产精品毛片视频| 国产综合激情| 国产精品欧美一区二区三区不卡| 婷婷亚洲五月| 精品久久97| 亚洲精品人人| 激情综合网址| 手机在线电影一区| 亚洲一区区二区| 高清久久精品| 日本天堂一区| 国产精品美女久久久| 国内精品麻豆美女在线播放视频| 免费不卡在线观看| 亚洲成av在线| 久久超级碰碰| 日韩欧美四区| 狠狠色狠狠色综合日日tαg| 在线一区av| 免费在线成人| 日本不卡视频一二三区| 欧美日韩国产免费观看| 亚洲天堂资源| 国产欧美亚洲一区| 最近国产精品视频| 欧美在线亚洲| 天堂中文av在线资源库| 国产精品mv在线观看| 日韩中文字幕视频网| 在线综合亚洲| 欧美日韩免费观看一区=区三区| 深夜福利视频一区二区| 美女视频黄免费的久久| 久久国产三级| 日韩精彩视频在线观看| 免费成人在线影院| 亚洲欧美日韩国产综合精品二区 | 日本一区二区中文字幕| 日韩制服丝袜av| 国产农村妇女精品一区二区| 激情欧美一区二区三区| 日韩在线看片| 麻豆理论在线观看| 毛片在线网站| 日韩国产一区| www在线观看黄色| 丁香婷婷久久| 国产精品久久久久久久久久10秀| 狠狠久久伊人中文字幕| 九九99久久精品在免费线bt| 日韩精品欧美大片| 亚洲精品福利| 日韩精品一级| 97精品久久| 国产亚洲高清一区| 国产精品一区二区av日韩在线| 国产欧美高清| 久久这里只有| 97精品国产一区二区三区 | 国产麻豆精品久久| 你懂的网址国产 欧美| 久久99久久人婷婷精品综合| 久久亚洲道色| 色婷婷综合网| 精品丝袜在线| 激情久久五月| 伊人成人网在线看| 美日韩精品视频| 久久亚洲电影| 日韩精品国产欧美| 麻豆一区二区99久久久久| 成人在线观看免费视频| 日韩精品网站| 中文精品在线| 色狠狠一区二区三区| 国产亚洲久久| 精品一区二区三区视频在线播放| 日韩理论视频| 蜜桃tv一区二区三区| 一本色道精品久久一区二区三区| 在线精品一区| 国产精品jk白丝蜜臀av小说| 欧美激情另类| 亚洲黄页一区| 日韩激情视频网站| 国产不卡一区| 一区免费在线| 日韩高清在线一区| 国产成人77亚洲精品www| 欧美 日韩 国产一区二区在线视频| 国产精品腿扒开做爽爽爽挤奶网站| 婷婷视频一区二区三区| 麻豆视频久久| 91精品推荐| 激情91久久| 国产日韩欧美一区二区三区 | 每日更新成人在线视频| 久久国产麻豆精品| 日韩精品看片| 中文字幕av一区二区三区人| 欧美日韩调教| 色偷偷色偷偷色偷偷在线视频| 国产麻豆综合| 国产精品国产三级在线观看| 蜜桃精品在线| 久久亚洲精品伦理| 欧美激情五月| 黄色日韩在线| 国产日本亚洲| 久久一级电影| 久久精品72免费观看| 久久久久美女| 青草av.久久免费一区| 日韩精品中文字幕第1页| 蜜桃传媒麻豆第一区在线观看 | 国产精品.xx视频.xxtv| 久久国产亚洲| 日韩av中文字幕一区二区三区| 久久精品一本| 91久久亚洲| 黄色网一区二区| 亚洲乱码视频|