MySQL動(dòng)態(tài)修改varchar長度的方法
雖然這種情況不應(yīng)該發(fā)生,通常像我們關(guān)系型數(shù)據(jù)庫,我們應(yīng)該是事先設(shè)計(jì)好,以后不能改動(dòng),但是由于之前工作的疏忽,其實(shí)說實(shí)話,也不僅僅是我個(gè)人的疏忽,主要是溝通上的原因,當(dāng)然數(shù)據(jù)庫畢竟是我設(shè)計(jì)的,所以,還是自我批評(píng)一下。
說一下情況:MySQL字段有個(gè)varchar值字段設(shè)置的太短了,設(shè)置了30個(gè),(我依稀記得varchar是可擴(kuò)展的,當(dāng)然現(xiàn)實(shí)并不容忍我的依稀),所以我只能找一個(gè)方法在保證數(shù)據(jù)庫數(shù)據(jù)不變的情況下,動(dòng)態(tài)修改varchar字段的長度,找了一段時(shí)間,終于讓我找到了。
alter table 表名 modify column 字段名 varchar(數(shù)量);
這個(gè)功能還是比較強(qiáng)大的,但是還是提醒大家最好設(shè)計(jì)的時(shí)候就不要出現(xiàn)這種問題啊。
PS:mysql中的設(shè)置varchar長度問題
如果某一項(xiàng)中設(shè)置的是varchar(50)
那么對(duì)英文當(dāng)然是50
那么對(duì)中文呢
utf-8的中文占3個(gè)字節(jié)
那么,這個(gè)varchar(50)是不是只能存16個(gè)漢字了?
mysql varchar(50) 不管中文 還是英文 都是存50個(gè)的
MySQL5的文檔,其中對(duì)varchar字段類型這樣描述:varchar(m) 變長字符串。M 表示最大列長度。M的范圍是0到65,535。(VARCHAR的最大實(shí)際長度由最長的行的大小和使用的字符集確定,最大有效長度是65,532字節(jié))。
為何會(huì)這般變換?真是感覺MySQL的手冊(cè)做的太不友好了,因?yàn)槟阋屑?xì)的繼續(xù)往下讀才會(huì)發(fā)現(xiàn)這段描述:MySQL 5.1遵從標(biāo)準(zhǔn)SQL規(guī)范,并且不刪除VARCHAR值的尾部空格。VARCHAR保存時(shí)用一個(gè)字節(jié)或兩個(gè)字節(jié)長的前綴+數(shù)據(jù)。如果VARCHAR列聲明的長度大于255,長度前綴是兩個(gè)字節(jié)。
好了,貌似懂了一點(diǎn)。但具體他說的長度大于255時(shí)使用2個(gè)字節(jié)長度前綴,小學(xué)減法題:65535 - 2 = 65533啊。不知道這些大牛如何計(jì)算的,暫且保留疑問吧?
注:我測(cè)試了一下使用UTF8編碼,varchar的最大長度為21854字節(jié)。
在mysql 5.0.45版本,數(shù)據(jù)庫編碼utf8下進(jìn)行測(cè)試:varchar最長定義為21785。也就是說不論字母、數(shù)字、漢字,只能放21785個(gè)。
推想:varchar字節(jié)最大65535,utf8編碼一個(gè)字符3個(gè)字節(jié)65535/3=21785。
以上所述是小編給大家介紹的MySQL動(dòng)態(tài)修改varchar長度的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持
相關(guān)文章
MySQL分表實(shí)現(xiàn)上百萬上千萬記錄分布存儲(chǔ)的批量查詢?cè)O(shè)計(jì)模式詳解
本篇文章是對(duì)使用MySQL分表實(shí)現(xiàn)上百萬上千萬記錄分布存儲(chǔ)的批量查詢?cè)O(shè)計(jì)模式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
MySQL利用AES_ENCRYPT()與AES_DECRYPT()加解密的正確方法示例
MySQL中AES_ENCRYPT('密碼','鑰匙')函數(shù)可以對(duì)字段值做加密處理,AES_DECRYPT(表的字段名字,'鑰匙')函數(shù)解密處理,下面這篇文章主要給大家介紹了關(guān)于MySQL利用AES_ENCRYPT()與AES_DECRYPT()加解密的正確方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下。2017-08-08
windows系統(tǒng)mysql5.7.18安裝圖文教程
這篇文章主要為大家詳細(xì)介紹了windows系統(tǒng)下mysql5.7.18安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
MySQL 5.7.14 net start mysql 服務(wù)無法啟動(dòng)-“NET HELPMSG 3534” 的奇怪問題
這篇文章主要介紹了MySQL 5.7.14 net start mysql 服務(wù)無法啟動(dòng)-“NET HELPMSG 3534” 的奇怪問題,需要的朋友可以參考下2016-12-12
MySQL數(shù)據(jù)庫存儲(chǔ)引擎和分支現(xiàn)狀分析
在MySQL經(jīng)歷了2008年Sun的收購和2009年Oracle收購Sun的過程中,基本處于停滯發(fā)展的情況,在可以預(yù)見的未來,MySQL是肯定會(huì)被Oracle擱置并且逐步雪藏消滅掉的。2011-03-03

