深入淺出MySQL 第三章 MySQL支持的數據類型 筆記

第三章 MySQL支持的數據類型

浮點數如果不寫精度和標度,則會按照實際精度值顯示,如果有精度和標度,則會自動將四捨五入後的結果插入,系統不會報錯;定點數如果不寫精度和標度,則按照默認值 decimal(10,0)來進行操作,並且如果數據超越了精度和標度值,系統則會報錯。

對於 BIT(位)類型,用於存放位字段值,BIT(M)可以用來存放多位二進制數,M 範圍從 1~64,如果不寫則默認爲 1 位。對於位字段,直接使用 SELECT 命令將不會看到結果,可以用bin()(顯示爲二進制格式)或者 hex()(顯示爲十六進制格式)函數進行讀取。

數據插入 bit 類型字段時,首先轉換爲二進制,如果位數允許,將成功插入;如果位數小於實際定義的位數,則插入失敗

日期

  • 如果要用來表示年月日,通常用 DATE 來表示。
  • 如果要用來表示年月日時分秒,通常用 DATETIME 表示。
  • 如果只用來表示時分秒,通常用 TIME 來表示。
  • 如果需要經常插入或者更新日期爲當前系統時間,則通常使用 TIMESTAMP 來表示。TIMESTAMP 值返回後顯示爲“YYYY-MM-DD HH:MM:SS”格式的字符串,顯示寬度固定爲 19 個字符。如果想要獲得數字值,應在 TIMESTAMP 列添加+0。
  • 如果只是表示年份,可以用 YEAR 來表示,它比 DATE 佔用更少的空間。YEAR 有 2 位或4 位格式的年。默認是 4 位格式。在 4 位格式中,允許的值是 1901~2155 和 0000。在2 位格式中,允許的值是 70~69,表示從 1970~2069 年。MySQL 以 YYYY 格式顯示 YEAR值。

注意:每種日期時間類型都有一個有效值範圍,如果超出這個範圍,在默認的 SQLMode 下,系統會進行錯誤提示,並將以零值來進行存儲。

TIMESTAMP:

  • MySQL只給表中的第一個TIMESTAMP字段設置默認值爲系統日期,如果有第二個TIMESTAMP類型,則默認值設置爲0值
  • 可以修改其他TIMESTAMP列默認值爲其他常量日期,但是不能再修改爲current_timestmap,因爲MySQL規定TIMESTAMP類型字段只能有一列的默認值爲current_timestmap,如果強制修改,系統會報錯。
  • 和時區相關。當插入日期時,會先轉換爲本地時區後存放;而從數據庫裏面取出時,也同樣需要將日期轉換爲本地時區後顯示。這樣,兩個不同時區的用戶看到的同一個日期可能是不一樣的。

char和varchar:

  • CHAR 列的長度固定爲創建表時聲明的長度,而 VARCHAR 列中的值爲可變長字符串
  • 在檢索的時候,CHAR 列刪除了尾部的空格,而 VARCHAR 則保留這些空格。

ENUM枚舉類型:

  • 對於插入不在 ENUM 指定範圍內的值時,並沒有返回警告,而是插入了枚舉的第一個值。
  • ENUM 類型只允許從值集合中選取單個值,而不能一次取多個值。

SET類型:

  • 根據成員數量的不同,存儲空間上也有所不同。
  • Set 類型一次可以選取多個成員,而 ENUM則只能選一個。
  • 對於輸入的值只要是在允許值的組合範圍內,都可以正確地注入到 SET 類型的列中。對於超出允許值範圍的值將不允許注入到上面例子中設置的 SET 類型列中,而對於包含重複成員的集合將只取一次。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章