雖然一個CHAR或VARVHAR的最大長度可以到255,我認為大于20的CHAR是幾乎用不到的——很少有大于20個字節(jié)長度的固定長度的東東吧?不是固定長度的就用VARCHAR!大于100的VARCHAR也是幾乎用不到的——比這更大的用TEXT就好了。TINYTEXT,最大長度為255,占用空間也是(實際長度 1);TEXT,最大長度65535,占用空間是(實際長度 2);MEDIUMTEXT,最大長度16777215,占用空間是(實際長度 3);LONGTEXT,最大長度4294967295,占用空間是(實際長度 4)。為什么“ 1”?“ 2”?“ 3”?“ 4”?你要是還不知道就該打PP了。這些可以用在論壇啊、新聞啊,什么的,用來保存文章的正文。根據(jù)實際情況的不同,選擇從小到大的不同類型。
四、枚舉和集合類型。
枚舉(ENUM)類型,最多可以定義65535種不同的字符串從中做出選擇,只能并且必須選擇其中一種,占用存儲空間是一個或兩個字節(jié),由枚舉值的數(shù)目決定;集合(SET)類型,最多可以有64個成員,可以選擇其中的零個到不限定的多個,占用存儲空間是一個到八個字節(jié),由集合可能的成員數(shù)目決定。
舉個例子來說,在SQLServer中,你可以節(jié)約到用一個Bit類型來表示性別(男/女),但MySQL沒有Bit,用TINTINT?不,可以用ENUM(帥哥,美眉)!只有兩種選擇,所以只需一個字節(jié)——跟TINYINT一樣大,但卻可以直接用字符串帥哥和美眉來存取。真是太方便啦!
好了,MySQL的數(shù)據(jù)類型介紹得差不多,我的建庫策略也隨著介紹數(shù)據(jù)類型介紹給大家一些。但這只是其中一部分,篇幅有限,不能再細說;其他的,就靠各人在對數(shù)據(jù)類型理解的基礎上,多多實踐、多多討論。