国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

深入研究mysql中的varchar和limit(容易被忽略的知識(shí))

2024-07-24 12:46:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

為什么標(biāo)題要起這個(gè)名字呢?commen sence指的是那些大家都應(yīng)該知道的事情,但往往大家又會(huì)會(huì)略這些東西,或者對(duì)這些東西一知半解,今天我總結(jié)下自己在mysql中遇到的一些commen sense類型的問(wèn)題。

  1、varchar(5)可以存儲(chǔ)多少個(gè)漢字,多少個(gè)字母數(shù)字?

  相信有好多人應(yīng)該跟我一樣,對(duì)這個(gè)已經(jīng)很熟悉了,根據(jù)經(jīng)驗(yàn)我們能很快的做出決定,比如說(shuō)用varchar(200)去存儲(chǔ)url等等,但是,即使你用了很多次也很熟悉了,也有可能對(duì)上面的問(wèn)題做出錯(cuò)誤的回答。

  這個(gè)問(wèn)題我查了好多資料,有的人說(shuō)是可以存儲(chǔ)5個(gè)字符,2.5個(gè)漢字(每個(gè)漢字占用兩個(gè)字節(jié)的話),有的人說(shuō)這個(gè)要區(qū)分版本,5.0是個(gè)分界限,5.0之前是前面說(shuō)的那樣,5.0之后是可以存儲(chǔ)5個(gè)“字”,不區(qū)分是數(shù)字、英文、漢字,果真是這樣嗎,我們來(lái)做個(gè)實(shí)驗(yàn):

復(fù)制代碼 代碼如下:

CREATE TABLE `test` (
  `name` varchar(5) NOT NULL DEFAULT '',
  `info` char(5) NOT NULL DEFAULT '',
  PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

  可以看出varchar(5)中的5代表的是5個(gè)“字”,而不是5個(gè)字節(jié)(bytes),當(dāng)我們存儲(chǔ)長(zhǎng)度超過(guò)制定長(zhǎng)度的時(shí)候會(huì)將超過(guò)的部分“咔嚓”掉,我的mysql版本是5.6,字符集(charset)utf8和gbk是一樣的。

其他版本我電腦上沒(méi)有,去官方文檔看看有沒(méi)有什么說(shuō)明,在官方文檔中查了半天終于發(fā)現(xiàn)了點(diǎn)區(qū)別:

下面這段來(lái)自http://dev.mysql.com/doc/refman/4.1/en/char.html,是對(duì)mysq4.1的說(shuō)明:

復(fù)制代碼 代碼如下:

The CHAR and VARCHAR types are declared with a length that indicates the maximum number of characters you want to store. For example, CHAR(30) can hold up to 30 characters. (Before MySQL 4.1, the length is interpreted as number of bytes.)

再看看其他版本的類似的說(shuō)明:

復(fù)制代碼 代碼如下:

The CHAR and VARCHAR types are declared with a length that indicates the maximum number of characters you want to store. For example, CHAR(30) can hold up to 30 characters.

 顯而易見了,官方文檔說(shuō)了,mysql版本小于4.1的時(shí)候存儲(chǔ)的時(shí)候符合說(shuō)法:varchar(5)保存5個(gè)bytes,及5個(gè)英文數(shù)字或者2.5個(gè)漢字(假設(shè)一個(gè)漢字2個(gè)字節(jié));

mysql版本大于等于4.1的時(shí)候varchar(5)中的5不再是字節(jié)數(shù)了,應(yīng)該理解為“字”這里的字的意思是一個(gè)漢字和一個(gè)英文或者數(shù)字“相同對(duì)待”

  2、mysql中的limit,你真的會(huì)用嗎?

  你在項(xiàng)目中怎么使用limit?limit num?還是limit num1,num2?還是其他的?要知道limit使用不同的形式性能差距很大的。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 曲阳县| 岳阳县| 松阳县| 大悟县| 松潘县| 江永县| 琼结县| 德庆县| 界首市| 西畴县| 香港 | 蒙城县| 新疆| 大渡口区| 沙田区| 沙河市| 昔阳县| 罗城| 理塘县| 福建省| 哈巴河县| 苗栗市| 崇义县| 榆社县| 浙江省| 秭归县| 离岛区| 古交市| 宜阳县| 定结县| 临沧市| 五常市| 浮梁县| 高安市| 南城县| 云龙县| 尉犁县| 安陆市| 陆丰市| 松桃| 石家庄市|