數(shù)值類(lèi)型:
數(shù)值類(lèi)型大致劃分為兩大類(lèi):一個(gè)是整數(shù),一個(gè)是浮點(diǎn)數(shù)或小數(shù)。
整數(shù)類(lèi)型常用的為int類(lèi)型,允許范圍在(-2147483648,2147483648)之間。
浮點(diǎn)數(shù)或小數(shù)常用類(lèi)型有:float,double和decimal類(lèi)型。
float類(lèi)型(單精度浮點(diǎn)數(shù)值);
double類(lèi)型(雙精度浮點(diǎn)數(shù)值);
decimal類(lèi)型(用于要求非常高的精確度計(jì)算中;
這些類(lèi)型允許指定數(shù)值的精確度和計(jì)數(shù)方法作為選擇參數(shù)。精確度在這里是指為這個(gè)值保存的有效數(shù)字的總個(gè)數(shù),而計(jì)數(shù)方法表示小數(shù)點(diǎn)后數(shù)字的個(gè)數(shù))
Case:?設(shè)置age為單精度浮點(diǎn)型,當(dāng)我們插入45.696,就會(huì)四舍五入;? create?table?data01(age?float(5,2));? insert?into?data01??values(45.696);//結(jié)果保留兩位小數(shù),四舍五入,結(jié)果為45.70
字符串類(lèi)型:
常用字符串類(lèi)型有:char,varchar,text和blob類(lèi)型
char類(lèi)型:用于定長(zhǎng)字符串,必須在圓括號(hào)內(nèi)用一個(gè)大小修飾符來(lái)定義,這個(gè)大小修飾符范圍為0到255,指定了要存儲(chǔ)的值的長(zhǎng)度。
varchar類(lèi)型:是char類(lèi)型的變體,用于變長(zhǎng)字符串,也也必須帶有一個(gè)范圍在0到255之間的大小指示器,區(qū)別在于MySQL處理這個(gè)指示器的方式:char把這個(gè)大小視為值的的準(zhǔn)確大小,而varchar類(lèi)型把它視為最大值并且只使用了存儲(chǔ)字符串實(shí)際上需要的字節(jié)數(shù)。所以如果不能確定字段要存儲(chǔ)多少個(gè)字符時(shí),使用這種類(lèi)型是一個(gè)很好的選擇。
對(duì)于比較長(zhǎng)的字符串,MySQL提供了text和blob兩種類(lèi)型,根據(jù)要存儲(chǔ)數(shù)據(jù)的大小,它們都有不同的子類(lèi)型,用于存儲(chǔ)圖像,大的文本,聲音文件那樣的二進(jìn)制數(shù)據(jù)。區(qū)別在于:blob類(lèi)型區(qū)分大小寫(xiě),text類(lèi)型不區(qū)分。
日期事件類(lèi)型:
MySQL用date和year類(lèi)型描述簡(jiǎn)單的日期值,使用time類(lèi)型描述時(shí)間值。這些值可以描述為字符串或不帶分隔符的整數(shù)序列。
如果描述為字符串,
date類(lèi)型的值應(yīng)該使用連字號(hào)作為分隔符分隔開(kāi),而time類(lèi)型的值應(yīng)該使用冒號(hào)作為分隔符分隔開(kāi),year類(lèi)型的值必須用4個(gè)數(shù)字存儲(chǔ),MySQL會(huì)自動(dòng)轉(zhuǎn)換:把00~69范圍內(nèi)的值轉(zhuǎn)換到2000~2069范圍內(nèi),而把70~99范圍內(nèi)的值抓換到1970~1999之內(nèi)。如下例:
Case:? create?table?data2(showtime?time,birthday?date,graduation?year);? 001)?insert?into?data2?values(‘14:51:02’,’2000-02-02’,2017);
002) insert into data2 values(145202,20000202,2017);
//結(jié)果與(001)的寫(xiě)法是一樣的
除了日期和時(shí)間數(shù)據(jù)類(lèi)型,MySQL還支持一種混合類(lèi)型:
datetime和timestamp數(shù)據(jù)類(lèi)型,它們可以把日期和時(shí)間作為一個(gè)單值的組成成分來(lái)存儲(chǔ)。
這兩種類(lèi)型通常用于自動(dòng)存儲(chǔ)包含當(dāng)前日期和時(shí)間的時(shí)間戳,并且對(duì)執(zhí)行大量數(shù)據(jù)庫(kù)事務(wù)和需要建立一個(gè)調(diào)試和審查用途的審計(jì)跟蹤的應(yīng)用程序可以派上用場(chǎng)。
如果一個(gè)行中第一個(gè)字段語(yǔ)句為timestamp類(lèi)型,而且這個(gè)字段沒(méi)有被明確指定值或被指定了一個(gè)null值, MySQL將會(huì)自動(dòng)用當(dāng)前日期和時(shí)間填充它。
使用MySQL的now()函數(shù)在語(yǔ)句為datetime類(lèi)型的字段中填充當(dāng)前的日期和時(shí)間可以得到相同的結(jié)果。
數(shù)據(jù)類(lèi)型選擇:
數(shù)據(jù)分類(lèi)可以使存儲(chǔ)數(shù)據(jù)更有一致性和提高效率和速度方面起了重要的作用。所以,當(dāng)設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)時(shí)對(duì)數(shù)據(jù)類(lèi)型的選取非常重要,并且從MySQL可以使用的多組選項(xiàng)做出選擇之前,應(yīng)該對(duì)所有涉及的問(wèn)題做出充分考慮。
下面列出對(duì)MySQL選取數(shù)據(jù)類(lèi)型需要牢記的幾個(gè)標(biāo)準(zhǔn):
允許值,允許輸入一個(gè)字段中的值的范圍和類(lèi)型是決定哪個(gè)數(shù)據(jù)類(lèi)型加在這個(gè)字段上的最直接因素。存儲(chǔ)效率,考慮字段可能的值的范圍并且根據(jù)這個(gè)范圍選取一個(gè)適當(dāng)?shù)摹⒋笮『线m的數(shù)據(jù)類(lèi)型也是很重要的,尤其是在處理數(shù)值類(lèi)型的時(shí)候。格式和顯示要求,影響字段類(lèi)型選擇的另一個(gè)重要因素是存儲(chǔ)在字段內(nèi)的數(shù)據(jù)的應(yīng)用格式和顯示要求。數(shù)據(jù)處理要求,數(shù)據(jù)類(lèi)型的選擇還應(yīng)該考慮數(shù)據(jù)操作和應(yīng)用處理的要求,比如說(shuō)某些類(lèi)型更適合于加快數(shù)據(jù)操作而不是其他方面。排序、索引和比較要求,如果想不同的標(biāo)準(zhǔn)對(duì)一列中所有的值進(jìn)行排序,那么我們需要選擇一種能夠有效地執(zhí)行這些功能并且?guī)в凶畲笙薅鹊撵`活性的類(lèi)型。對(duì)相應(yīng)字段添加索引,能夠加快檢索速度。比較的類(lèi)型也應(yīng)該使用的數(shù)據(jù)類(lèi)型,需要保證使用的數(shù)據(jù)類(lèi)型支持比較運(yùn)算,并且相互兼容。