2017-05-08 145 views
-3

我真的好奇VARCHAR和INTEGER類型之間的差異。整數和varchar之間的MySQL差異

例如,我想存儲用戶的年齡。但是如何?這是重要的,它是整數,tinyint或varchar?

另外對於用戶的性別,女性可以是0,男性可以是1。

我把年齡和性別作爲一個'tinyint'存儲起來,這樣很好嗎?

+0

「整數」用於數字,「varchar」用於數字,字母和其他字符(短文本)。因此,對於年齡,您可以使用「int」類型,對於性別,如果只有兩個選項,則可以使用「enum()」類型。 – Jer

+1

Varchar是文本,整數是數字。用戶的年齡文本還是數字? – JJJ

+0

你讀過[關於數據類型的MySQL文檔頁面](https://dev.mysql.com/doc/refman/5.7/en/data-types.html)嗎?你的問題的答案在那裏。 – axiac

回答

2

很多事情需要澄清......

  • 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