我真的好奇VARCHAR和INTEGER類型之間的差異。整數和varchar之間的MySQL差異
例如,我想存儲用戶的年齡。但是如何?這是重要的,它是整數,tinyint或varchar?
另外對於用戶的性別,女性可以是0,男性可以是1。
我把年齡和性別作爲一個'tinyint'存儲起來,這樣很好嗎?
我真的好奇VARCHAR和INTEGER類型之間的差異。整數和varchar之間的MySQL差異
例如,我想存儲用戶的年齡。但是如何?這是重要的,它是整數,tinyint或varchar?
另外對於用戶的性別,女性可以是0,男性可以是1。
我把年齡和性別作爲一個'tinyint'存儲起來,這樣很好嗎?
很多事情需要澄清......
VARCHAR
是存儲文本。INTEGER
是存儲整數,作爲相對非整數(數字與一個小數點和尾數)選擇應與在字段存儲的值的類型的數據類型。 這有很多原因。主要原因是存儲空間和對數字進行計算的能力。
年齡顯然總是一個數字,所以你應該使用INTEGER
來存儲它。
還有多種數字和文本字段,其特徵在於它們在內存或磁盤驅動器中佔用的空間。選擇正確的類型來存儲正確的東西是非常重要的,特別是當你有很多數據時。在你的表中有100條記錄,這並不重要。擁有10億條記錄是絕對必要的。但是一位優秀的程序員/設計師始終牢記這一點,並始終認真考慮性能和成本。
對於整數,你可以選擇其中包括:
DataType Range
TINYINT -128 to 127
SMALLINT -32768 to 32767
MEDIUMINT -8388608 to 8388607
INT -2147483648 to 2147483647
BIGINT -9223372036854775808 to 9223372036854775807
如果要存儲一個人的年齡,機會是很高,你將永遠不會大於127歲,所以TINYINT
是可以接受的,但剛需當然,採取SMALLINT
。
在附註中,如果可能,最好存儲一個生日,以便隨時精確計算年齡。如果你只存儲年齡,那麼它只會在一年內有效,它不會是「動態」的。
對於你的性別,你已經基本上2點的方法:
CHAR(1)
(一個字符),具有值 'M' 和 'F' 的實例。TINYINT
,它將作爲一個布爾值(true或false - 1或0),您必須定義男性是真的還是女性的假,或者相反,並且在任何地方應用相同的方案在你的應用程序。如果你想正確設計你的數據庫,你應該真的學習the documentation。
「整數」用於數字,「varchar」用於數字,字母和其他字符(短文本)。因此,對於年齡,您可以使用「int」類型,對於性別,如果只有兩個選項,則可以使用「enum()」類型。 – Jer
Varchar是文本,整數是數字。用戶的年齡文本還是數字? – JJJ
你讀過[關於數據類型的MySQL文檔頁面](https://dev.mysql.com/doc/refman/5.7/en/data-types.html)嗎?你的問題的答案在那裏。 – axiac