可以設(shè)置的.

成都創(chuàng)新互聯(lián)公司是專業(yè)的大理州網(wǎng)站建設(shè)公司,大理州接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行大理州網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
MySQL有幾種數(shù)據(jù)類型可以限制類型的"長(zhǎng)度",有CHAR(Length)、VARCHAR(Length)、TINYINT(Length)、SMALLINT(Length)、MEDIUMINT(Length)、INT(Length)、BIGINT(Length)、FLOAT(Length, Decimals)、DOUBLE(Length, Decimals)和DECIMAL(Length, Decimals)。
然而,這些數(shù)據(jù)類型的長(zhǎng)度,并不是都指數(shù)據(jù)的大小。具體說(shuō)就是:
(1)CHAR、VARCAHR的長(zhǎng)度是指字符的長(zhǎng)度,例如CHAR[3]則只能放字符串"123",如果插入數(shù)據(jù)"1234",則從高位截取,變?yōu)?123"。 VARCAHR同理。
(2)TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的長(zhǎng)度,其實(shí)和數(shù)據(jù)的大小無(wú)關(guān)!Length指的是顯示寬度,舉個(gè)例子:
如果是建表語(yǔ)句則在create table時(shí)即指定字段類型和長(zhǎng)度,如果是修改表,則用alter語(yǔ)句修改,或者直接在客戶端工具上選中表右鍵編輯表,在可視化頁(yè)面調(diào)整長(zhǎng)度都可以。
mysql varchar(50) 不管中文 還是英文 都是存50個(gè)的
MySQL5的文檔,其中對(duì)varchar字段類型這樣描述:varchar(m) 變長(zhǎng)字符串。M 表示最大列長(zhǎng)度。M的范圍是0到65,535。(VARCHAR的最大實(shí)際長(zhǎng)度由最長(zhǎng)的行的大小和使用的字符集確定,最大有效長(zhǎng)度是65,532字節(jié))。
為何會(huì)這般變換?真是感覺(jué)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é)長(zhǎng)的前綴+數(shù)據(jù)。如果VARCHAR列聲明的長(zhǎng)度大于255,長(zhǎng)度前綴是兩個(gè)字節(jié)。
好了,貌似懂了一點(diǎn)。但具體他說(shuō)的長(zhǎng)度大于255時(shí)使用2個(gè)字節(jié)長(zhǎng)度前綴,小學(xué)減法題:65535 - 2 = 65533啊。不知道這些大牛如何計(jì)算的,暫且保留疑問(wèn)吧?
注:我測(cè)試了一下使用UTF8編碼,varchar的最大長(zhǎng)度為21854字節(jié)。
在mysql 5.0.45版本,數(shù)據(jù)庫(kù)編碼utf8下進(jìn)行測(cè)試:varchar最長(zhǎng)定義為21785。也就是說(shuō)不論字母、數(shù)字、漢字,只能放21785個(gè)。
1、mysql中修改字段長(zhǎng)度:
ALTER?TABLE?tb_article?MODIFY?COLUMN?NAME?VARCHAR(50);??
這里的tb_article為表名,NAME為字段名,50為修改后的長(zhǎng)度
2、mysql修改字段類型:
ALTER?TABLE?tb_article?MODIFY?COLUMN?NAME?CHAR(50);??
修改后,name字段類型由varchar變?yōu)閏har
3、mysql中增加列:
ALTER?TABLE?tb_article?ADD?COLUMN?name1?VARCHAR(30);??
4、mysql中修改列 :
ALTER?TABLE?tb_article?CHANGE?name1?name2?VARCHAR(30);?
5、mysql中刪除列 :
ALTER?TABLE?tb_article?DROP?COLUMN?name2;??
MySQL 數(shù)據(jù)庫(kù)的varchar類型在4.1以下的版本中的最大長(zhǎng)度限制為255,其數(shù)據(jù)范圍可以是0~255或1~255(根據(jù)不同版本數(shù)據(jù)庫(kù)來(lái)定)。在 MySQL5.0以上的版本中,varchar數(shù)據(jù)類型的長(zhǎng)度支持到了65535,也就是說(shuō)可以存放65532個(gè)字節(jié)的數(shù)據(jù),起始位和結(jié)束位占去了3個(gè)字 節(jié),也就是說(shuō),在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的數(shù)據(jù)可以使用可變長(zhǎng)的varchar來(lái)存放,這樣就能有效的減少數(shù)據(jù)庫(kù)文 件的大小。
MySQL 數(shù)據(jù)庫(kù)的varchar類型在4.1以下的版本中,nvarchar(存儲(chǔ)的是Unicode數(shù)據(jù)類型的字符)不管是一個(gè)字符還是一個(gè)漢字,都存為2個(gè)字節(jié) ,一般用作中文或者其他語(yǔ)言輸入,這樣不容易亂碼 ;varchar: 漢字是2個(gè)字節(jié),其他字符存為1個(gè)字節(jié) ,varchar適合輸入英文和數(shù)字。
4.0版本以下,varchar(20),指的是20字節(jié),如果存放UTF8漢字時(shí),只能存6個(gè)(每個(gè)漢字3字節(jié)) ;5.0版本以上,varchar(20),指的是20字符,無(wú)論存放的是數(shù)字、字母還是UTF8漢字(每個(gè)漢字3字節(jié)),都可以存放20個(gè),最大大小是65532字節(jié) ;varchar(20)在Mysql4中最大也不過(guò)是20個(gè)字節(jié),但是Mysql5根據(jù)編碼不同,存儲(chǔ)大小也不同,具體有以下規(guī)則:
a) 存儲(chǔ)限制
varchar 字段是將實(shí)際內(nèi)容單獨(dú)存儲(chǔ)在聚簇索引之外,內(nèi)容開(kāi)頭用1到2個(gè)字節(jié)表示實(shí)際長(zhǎng)度(長(zhǎng)度超過(guò)255時(shí)需要2個(gè)字節(jié)),因此最大長(zhǎng)度不能超過(guò)65535。
b) 編碼長(zhǎng)度限制
字符類型若為gbk,每個(gè)字符最多占2個(gè)字節(jié),最大長(zhǎng)度不能超過(guò)32766;
字符類型若為utf8,每個(gè)字符最多占3個(gè)字節(jié),最大長(zhǎng)度不能超過(guò)21845。
若定義的時(shí)候超過(guò)上述限制,則varchar字段會(huì)被強(qiáng)行轉(zhuǎn)為text類型,并產(chǎn)生warning。
c) 行長(zhǎng)度限制
導(dǎo)致實(shí)際應(yīng)用中varchar長(zhǎng)度限制的是一個(gè)行定義的長(zhǎng)度。 MySQL要求一個(gè)行的定義長(zhǎng)度不能超過(guò)65535。若定義的表長(zhǎng)度超過(guò)這個(gè)值,則提示
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。
---------------------------------------------------------------------
mysql的vachar字段的類型雖然最大長(zhǎng)度是65535,但是并不是能存這么多數(shù)據(jù),最大可以到65533(不允許非空字段的時(shí)候),當(dāng)允許非空字段的時(shí)候只能到65532。
直接寫alter table語(yǔ)句修改字段類型及長(zhǎng)度,或者在數(shù)據(jù)庫(kù)連接客戶端右鍵修改表來(lái)設(shè)置字段長(zhǎng)度。
本文標(biāo)題:mysql字段怎么調(diào)長(zhǎng)度,mysql如何修改表的字符長(zhǎng)度
文章起源:http://chinadenli.net/article32/dsgjopc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)、營(yíng)銷型網(wǎng)站建設(shè)、虛擬主機(jī)、關(guān)鍵詞優(yōu)化、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)