mysql數據類型:數字型,日期和時間,字符串類型
摘要
MySQL中定義數據字段的類型對數據庫的優化是非常重要的;
MySQL支持多種類型,大致可以分為三類,如下。
- 數字類型
- 整數:tinyint、smallint、mediumint、int、bigint
- 浮點數:float、double、real(實數)、decimal(小數)
- 日期和時間:date、time、datetime、timestamp、year
- 字符串類型
- 字符串:char、varchar
- 文本:tinytext、text、mediumtext、longtext
每個類型都強制數據滿足該數據類型預先確定的一組規則,例如大小、類型及格式。
關鍵詞
數字型 日期和時間類型 字符串類型
正文
1.數字型
1.一張圖解釋,數字型的基本信息
2.日期和時間類型
1.一張圖解釋
2.詳解
1.注意:每種日期和時間類型都有一個有效范圍。如果插入的值超出相應范圍,系統會報錯並將相應的零值插入到數據庫中,各個類型的零值請看上表。
2.YEAR類型用4位數表示年份。范圍從1901~2155,插入超范圍的值時系統報錯並插入0000。
3.DATE類型用YYYY-MM-DD形式顯示日期。范圍從1000-01-01~9999-12-31插入超范圍的值時系統報錯並插入零值。此類型除了可接受YYYY-MM-DD和YYYYMMDD格式的輸入外,還可以識別其它一些不嚴格的語法格式,例如YYYY/MM/DD、YYYY.MM.DD等其他標點符號作為間隔的形式日期值的輸入。
4.TIME類型用HH:MM:SS形式顯示時間。其中MM和SS的取值范圍是0~59,HH的取值范圍比較特別其取值范圍是0~838,一般來講小時數的范圍是0~23,但是為了滿足特殊情況的需要,MySQL擴大了TIME類型的范圍,而且可以接受負數。TIME類型支持D HH:MM:S格式的時間表達字串,D表示天數,取值范圍0~34。例如,輸入30 21:15:26,系統會將小時部分按30*24+21轉換為 741:15:26。除了標准的輸入方式HH:MM:SS外,此類型還可以接受一些非標准的輸入方式,例如,輸入12,系統會轉換為00:00:12、輸入1212,系統會轉換為00:12:12、輸入121212,系統會轉換為12:12:12等。
5.DATETIME類型用YYYY-MM-SS HH:MM:SS形式顯示日期與時間。范圍從1000-01-01 00:00:00~9999-12-31 23:59:59 插入超范圍的值時,系統報錯並插入零值(0000-00-00 00:00:00)。此類型除了可接受YYYY-MM-SS HH:MM:SS格式的輸入外,還可以識別YYYYMMSSHHMMSS形式的輸入值。例如,輸入20170117174856,系統會轉換為2017-01-17 17:48:56。
6.TIMESTAMP類型情況與DATETIME類型接近,但是它的取值范圍要比DATETIME類型窄很多,范圍從19700101080001~20380119111407(1970-01-01 08:00:01~2038-01-19 11:14:07)。**另外,TIMESTAMP類型還有一個特別之處,那就是它的值的時間部分是根據時區來顯示的,例如在東八區插入的TIMESTAMP類型值2017-01-16 18:04:25,在東七區的時間部分會顯示17:04:25,而在東九區則變為19:04:25,對於這一點我們要特別留意。**
7.我們在選擇日期與時間數據類型時,請根據實際需求選擇相應的類型,一般應選擇剛好夠用最好,這樣可節省系統資源。例如只需要知道日期的選擇DATE類型、需要同時知道日期與時間的就選擇DATETIME類型、僅僅需要記錄時間的則選擇TIME類型等。
字符串類型
1.一張圖解釋
2.char和varchar
3.相同點:char和varchar類型都是在創建表時指定最大長度。其基本形式是:字符串類型(M)例如:char(4)就是指定char類型且它的最大長度是4。
4.不同點:
1.char類型的長度是固定的,在創建表時就指定了,其最大長度是0-255的任意值。例如:char(100)就是指定char類型的長度為100.
2.varchar類型的長度是可變的,在創建時指定了最大長度。定義時,其最大值可以取0-65535之間的任意值。指定varchar類型的最大值之后,其長度可以在0到最大長度之間。例如:varchar(100)的最大長度是100.但是不是每條記錄都要占100條位置,而是在這個最大范圍內使用多少分配多少。varchar類型實際占用的空間為字符串的實際長度+1.這樣,可以有效地節約系統的空間。
3.text類型
1.text類型是一種特殊的字符串類型。text只能保存字符數據,如新聞的內容等。
2.text類型包括tinytext,text,mediumtext,longtext
3.這種字符串類型實際中用的並不是很多,一般用來直接存儲一個比較大的文本,不如說一篇文章,一篇新聞
4.簡單總結:經常變化的字段用varchar;知道固定長度的用char;盡量用varchar;超過255字符的只能用varchar或者text;能用varchar的地方不用text。
總結
通過對每種數據類型的用途,物理存儲,表示范圍等有一個概要的了解。這樣在面對具體應用時,就可以根據相應的特來來選擇合適的數據類型,使得我們能夠爭取在滿足應用的基礎上,
用較小的存儲代價換來較高的數據庫性能。
