數實值型別
數實值型別大致劃分為兩大類:一個是整數,一個是浮點數或小數。
整數類型常用的為int類型,允許範圍在(-2147483648,2147483648)之間。
浮點數或小數常用類型有:float,double和decimal類型。
float類型(單精確度浮點數值),double類型(雙精確度浮點數值),decimal類型(用於要求非常高的精確度計算中,這些類型允許指定數值的精確度和計數方法作為選擇參數。精確度在這裡是指為這個值儲存的有效數位總個數,而計數方法表示小數點後數位個數)
create table data(age float(5,2));
insert into data(45.678);//結果保留兩位小數,四捨五入,結果為45.68
字串類型
常用字串類型有:char,varchar,text和blob類型
char類型:用於定長字串,必須在圓括弧內用一個大小修飾符來定義,這個大小修飾符範圍為0到255,指定了要儲存的值的長度。
varchar類型:是char類型的變體,用於變長字串,也也必須帶有一個範圍在0到255之間的大小指標,區別在於MySQL處理這個指標的方式:char把這個大小視為值的的準確大小,而varchar類型把它視為最大值並且只使用了儲存字串實際上需要的位元組數。所以如果不能確定欄位要儲存多少個字元時,使用這種類型是一個很好的選擇。
對於比較長的字串,MySQL提供了text和blob兩種類型,根據要儲存資料的大小,它們都有不同的子類型,用於儲存映像,大的文本,音效檔那樣的位元據。區別在於:blob類型區分大小寫,text類型不區分。
日期時間類型
MySQL用date和year類型描述簡單的日期值,使用time類型描述時間值。這些值可以描述為字串或不帶分隔字元的整數序列。如果描述為字串,date類型的值應該使用連字號作為分隔字元分隔開,而time類型的值應該使用冒號作為分隔字元分隔開。year類型的值必須用4個數字儲存,MySQL會自動轉換:把00~69範圍內的值轉換到2000~2069範圍內,而把70~99範圍內的值抓換到1970~1999之內。如下例:
create table data(showtime time,birthday date,graduation year);
insert into data values('12:02:02','2000-02-02',2002),(120202,20000202,02);//結果是一樣的
除了日期和時間資料類型,MySQL還支援一種混合類型:datetime和timestamp資料類型,它們可以把日期和時間作為一個單值的組成成分來儲存。這兩種類型通常用於自動儲存包含當前日期和時間的時間戳記,並且對執行大量資料庫事務和需要建立一個調試和審查用途的審計跟蹤的應用程式可以派上用場。
如果一個行中第一個欄位語句為timestamp類型,而且這個欄位沒有被明確指定值或被指定了一個null值, MySQL將會自動用當前日期和時間填充它。
使用MySQL的now()函數在語句為datetime類型的欄位中填充當前的日期和時間可以得到相同的結果。
刪除data資料表,建立dta表,欄位為'time1',類型為time, 欄位為'time2',類型為date,添加資料time1值為'23:00:22',time2值為'19990303',查看結果
資料類型選擇
資料分類在使儲存資料更有一致性和提高效率和速度方面起了重要的作用。從而,當設計一個資料庫時對資料類型的選取不能掉以輕心,並且從MySQL可以使用的多組選項做出選擇之前,應該對所有涉及的問題做出充分考慮。
下面列出對MySQL選取資料類型需要牢記的幾個標準:
允許值,允許輸入一個欄位中的值的範圍和類型是決定哪個資料類型加在這個欄位上的最直接因素。
儲存效率,考慮欄位可能的值的範圍並且根據這個範圍選取一個適當的、大小合適的資料類型也是很重要的,尤其是在處理數實值型別的時候。
格式和顯示要求,影響欄位類型選擇的另一個重要因素是儲存在欄位內的資料的應用格式和顯示要求。
資料處理要求,資料類型的選擇還應該考慮資料操作和應用處理的要求,比如說某些類型更適合於加快資料操作而不是其他方面。
排序、索引和比較要求,如果想不同的標準對一列中所有的值進行排序,那麼我們需要選擇一種能夠有效地執行這些功能並且帶有最大限度的靈活性的類型。對相應欄位添加索引,能夠加快檢索速度。比較的類型也應該使用的資料類型,需要保證使用的資料類型支援比較運算,並且相互相容。