為什么標(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):

可以看出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ō)明:
再看看其他版本的類似的說(shuō)明:
顯而易見了,官方文檔說(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使用不同的形式性能差距很大的。
新聞熱點(diǎn)
疑難解答
圖片精選