Mysql字段大小是0是自動(dòng)的。當(dāng)我們?cè)趧?chuàng)建一個(gè)表格時(shí),如果沒(méi)有明確地指定字段的長(zhǎng)度,則Mysql會(huì)默認(rèn)將這個(gè)字段的長(zhǎng)度設(shè)置為0。
一般來(lái)說(shuō),我們?cè)趧?chuàng)建表格時(shí)都會(huì)指定字段的長(zhǎng)度,因?yàn)檫@樣有很多好處,比如可以確保數(shù)據(jù)的完整性,避免產(chǎn)生不必要的錯(cuò)誤。但是有時(shí)候我們也會(huì)遇到這種情況,就是一個(gè)字段可能不需要限制長(zhǎng)度,比如說(shuō)我們存儲(chǔ)一個(gè)url地址或者一個(gè)文件路徑,這個(gè)字段的長(zhǎng)度可能會(huì)非常長(zhǎng),如果我們限制了長(zhǎng)度,就會(huì)影響數(shù)據(jù)的完整性。
在這種情況下,我們就可以將這個(gè)字段的長(zhǎng)度設(shè)置為0,這樣就可以讓Mysql自動(dòng)根據(jù)數(shù)據(jù)的大小來(lái)自動(dòng)調(diào)整字段的長(zhǎng)度。
CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `url` varchar(0) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在上面的例子中,我們創(chuàng)建了一張表格,其中一個(gè)字段是url,它的長(zhǎng)度被設(shè)置為0,這樣這個(gè)字段就可以存儲(chǔ)任意長(zhǎng)度的url地址,不會(huì)出現(xiàn)長(zhǎng)度不足或者過(guò)長(zhǎng)的問(wèn)題。
然而,需要注意的是,將字段長(zhǎng)度設(shè)置為0并不是一種最佳實(shí)踐,因?yàn)镸ysql每次訪問(wèn)這個(gè)字段時(shí)都需要重新計(jì)算長(zhǎng)度,這會(huì)對(duì)查詢和存儲(chǔ)的性能產(chǎn)生一定的影響。如果我們可以確定這個(gè)字段的數(shù)據(jù)范圍,最好還是指定一個(gè)合適的長(zhǎng)度。