mysql signed unsigned和zerofill使用與區(qū)別
靈感來源

mysql中有符號signed,無符號unsigned與零填充zerofill
UNSIGNED
無符號UNSIGNED是一個屬性,你可以在創(chuàng)建或修改表時為整數(shù)類型的列指定它。無符號屬性意味著該列只能存儲非負整數(shù)(0和正整數(shù)),而不是默認的有符號整數(shù),后者可以存儲負數(shù)、零和正數(shù)。
例如,如果你定義一個列為INT UNSIGNED,那么這個列就不能存儲負數(shù)。相比之下,一個普通的INT類型的列(默認是有符號的)可以存儲從-2147483648到2147483647的整數(shù)。而INT UNSIGNED類型的列可以存儲從0 到 4294967295的整數(shù)。
使用無符號類型的好處是它可以擴大正數(shù)的存儲范圍,因為它不需要為負數(shù)分配空間。這在某些情況下非常有用,比如當你知道數(shù)據(jù)永遠不會是負數(shù)時(例如年齡、計數(shù)器或其他只能是正的度量)。
下面是一個創(chuàng)建無符號列的例子:
CREATE TABLE person (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
age TINYINT UNSIGNED NOT NULL
);
在這個例子中,id列是一個無符號整數(shù),并且是自動遞增的主鍵。age列是一個無符號的TINYINT,意味著它只能存儲從0到255的整數(shù)。如果嘗試插入一個負數(shù)到無符號列中,MySQL會產(chǎn)生一個錯誤或?qū)⒇摂?shù)轉(zhuǎn)換為最接近的有效值(通常是0)。
| 類型 | 大小 | 無符號范圍 | 有符號范圍 |
|---|---|---|---|
| TINYINT | 1 字節(jié) | (-128,127) | (0,255) 小整數(shù)值 |
| SMALLINT | 2 字節(jié) | (-32 768,32 767) | (0,65 535) 大整數(shù)值 |
| MEDIUMINT | 3 字節(jié) | (-8 388 608,8 388 607) | (0,16 777 215) 大整數(shù)值 |
| INT或INTEGER | 4 字節(jié) | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) 大整數(shù)值 |
zerofill
當插入mysql中該字段的值的長度小于定義的長度時,會在數(shù)值前面補全相應數(shù)據(jù)的0。
比較常用的應該是月份或日期前補0,還是整形數(shù)字不是字符串。
CREATE TABLE `t1` ( `year` year(4) DEFAULT NULL, `month` int(2) unsigned zerofill DEFAULT NULL, `day` int(2) unsigned zerofill DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;```
到此這篇關于mysql signed unsigned和zerofill使用與區(qū)別的文章就介紹到這了,更多相關mysql signed unsigned zerofill內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL如何導入csv格式數(shù)據(jù)文件解決方案
本文將詳細介紹MySQL如何導入csv格式數(shù)據(jù)文件并提供詳細解決方案,需要了解的朋友可以參考下2012-11-11
MySql Error 1698(28000)問題的解決方法
這篇文章主要介紹了MySql Error 1698(28000)問題的解決方法,需要的朋友可以參考下2017-06-06

