第三章 小A的疑問 ---- 數據類型和自增列
小A拿著雞腿,回到了房間裡面,咬了一嘴油,說:"我有2個疑問,在Excell裡面,像列PetAge(寵物年齡)這樣的數字,我一般會設置成數值格式,而像PetName,則會默認文本格式,還有,Mysql多出來的那列ID列,好像和Excell的不一樣啊,你看,Mysql的數據表,是你自己寫的一列,而Excell是自己自帶的。"。
小Y:"這2個問題問的好,我先回答你第一個問題吧,在Mysql數據表裡面,同樣有數據格式的,像PetAge這樣,我們稱為浮點型,也就是帶小數點的,我們一般用Double或者Float來設置這一列的數據類型,而像PetName這樣的,我們稱為字符型,我們通常用Varchar和Char來設置數據類型,當然還有你說的ID列,它是整數,我們稱之為整形,一般使用用Int來設置數據類型,而經常用到的,還有時間格式,我們用DateTime和Date來設置。當然不僅僅是這些類型,Mysql中還有更多的類型,但是對於你這樣的初學者,可以暫時不去理會。"。
小A:"我有點迷糊了,我大概知道了,數字類型要是整數的話,就使用Int類型,要是字符,比如中文和英文,就用Varchar和Char類型,要是時間,用DateTime和Date類型,可是這個Varchar和Char,還有這個時間。怎麼這麼多個啊,我到底該用哪個?"。
小Y:"其實很簡單,Double和Float都是用來表示小數的,但是Double支持的位數比較多,在Mysql中,可以支持17位,而Float則是6位。如果你嫌麻煩,可以直接使用最大值Double統一設置,但你要是一個專業的數據庫人員,就要根據這一列的存放數據的情況而定Float還是Double。就算存放貨物,你給這個貨物開辟了3平米的空間,結果發現這個貨物只是一台手機,這樣豈不是很浪費空間?而你開辟了1平米的空間,卻發現是一台42寸的電視機,那就更不得了了,按照曹操的說法,寧錯殺不放過。"
小A:"小Y啊,平時不多看點書,寧錯殺不放過,那是汪精衛說的!"。
小Y:"......不要在意細節!再說Varchar和Char吧,實際上他們都可以存儲字符,但是Varchar是可以自由縮小長度的,也就是說,我開了一個5平米的空間用來放手機,但是我發現這個手機只占20平方厘米,那我就要把這個位置留給其他物品了,反過來說,Char開辟了5平米的,放的是手機,那也不會去更改存放空間的。2種各有優點,Varchar從空間上節省,而Char從效率上占優,道理很簡單,雖然是5平米的,但是我放一個手機上去,而不用再去理會要縮小位置,從生活方面講,這肯定會節省倉庫管理員的時間。"
小A:"好像很有道理,那我直接給Varchar好了,畢竟數據多了,可以節省一大筆存儲空間呢,而效率上,也不差那一點。"。
小Y:"對於大型數據而言,該用哪個,還是要仔細一點的,至於DateTime,就更好理解了,Datetime是代表年月日時分秒的,Date只能寫入年月日。我們再說一說ID列吧,如你所看見的,這一列就只是一個告訴你行數的列而已,但是Excel裡面自帶了,而Mysql是沒有的,需要自己添加,對於這一個自增列,還是很有用的,比如我知道某一列的序號,想要找這一列的信息,就變得簡單多了,因此我們往往要保證這一列的唯一性,而我們通常,會把這一列設置為主鍵,以保證該列的唯一,哦,對了,主鍵的意思,實際上是英文(primarykey)翻譯得來,Key是鑰匙的意思,只有這把鑰匙,才能打開這行數據的門,讓我們查看裡面的數據,換一句話說,主鍵可以保證數據的完整性。"。
小A:"嗯...好像有點難以理解啊。"。
小Y:"不用著急,接下來,我們將所學的理論知識,用於實際操作上,這樣你就能很快理解我所說的話了。"。
小A:"那我們趕緊開始吧!"。
小Y:"這麼晚了,趕緊回家睡覺去,明天還要早起上班呢!"。
小A:"沒注意已經這麼晚了。那我明天再來想你討教。"。