【MySQL】數據庫 - 數據類型

在前面爲大家分析了數據庫庫與表的基本操作,下面是對數據類型的一些總結:

數據類型:


數值類型:


越界測試:


說明: 在MySQL中,整型可以指定是有符號的和無符號的,默認是有符號的。

           可以通過UNSIGNED來說明某個字段是無符號的


關於UNSIGNED細節:

      int的表示範圍是-2147483648 ~ 2147483647,int unsigned 的範圍是0 ~ 4294967295。所以我們在很多時候需要使用unsigned來表示非負數,比如年齡等。然而在實際使用中,unsigned可能會帶來一些負面的影響:


執行select a - b from tt4; 這個結果會是怎樣的呢?結果肯定不是-1,但是可以對SQL_ MODE這個參數進行設置即可,例如:


注意:儘量不使用unsigned,因爲可能帶來一些意想不到的效果。另外,對於int類型可能存放不下的數據,int
unsigned同樣可能存放不下,與其如此,還不如設計時,將int類型提升爲bigint類型。

bit的使用:

基本語法: bit[(M)] 位字段類型。M表示每個值的位數,範圍從1到64。如果M被忽略,默認爲1。


bit使用的時候注意事項:bit字段在顯示時,是按照ASCII碼對應的值顯示。


如果我們有這樣的值,只存放0或1,這時可以定義bit(1)。這樣可以節省空間。


小數的基本使用:

float:

float[(m, d)][unsigned]
M指定顯示長度,d指定小數位數,佔用空間4個字節
小數:float(4,2)表示的範圍是-99.99 ~ 99.99,MySQL在保存值時會進行四捨五入。


說明:當我們的float(4,2)如果是一個有符號的,則表示範圍是-99.99 ~ 99.99。如果定義的是float(4,2) unsigned 這時,因爲把它指定爲無符號的數,範圍是 0 ~ 99.99


decimal:

decimal(m, d) [unsigned]

定點數m指定長度,d表示小數點的位數
decimal(5,2) 表示的範圍是 -999.99 ~ 999.99

decimal(5,2) unsigned 表示的範圍 0 ~ 999.99

decimal和float很像,但是有區別:
float和decimal表示的精度不一樣


說明:float表示的精度大約是7位。
decimal整數最大位數m爲65。支持小數最大位數d是30。如果d被省略,默認爲0.如果m被省略,默認
是10。

建議:如果希望小數的精度高,推薦使用decimal。

字符串:

char(L): 固定長度字符串,L是可以存儲的長度,單位爲字符,最大長度值可以爲255
varchar(L): 可變長度字符串,L表示字符長度,最大長度65535個字節

測試char:


說明:char(2) 表示可以存放兩個字符,可以是字母或漢字,但是不能超過2個。
          最多隻能是255

測試varchar:


關於varchar(len),len到底是多大,這個len值,和表的編碼密切相關:
      varchar長度可以指定爲0到65535之間的值,但是有1 - 3 個字節用於記錄數據大小,所以說有效字節數
是65532。
      當我們的表的編碼是utf8時,varchar(n)n最大值是65532/3=21844[因爲utf中,一個漢字佔用3個字

節],如果編碼是gbk,varchar(n)n最大是65532/2=32766(因爲gbk中,一個漢字佔用2字節)。


char和varcahr存儲空間比較:


日期和時間類型:

datetime 時間日期格式 'yyyy-mm-dd HH:ii:ss' 表示範圍從1000到9999,佔用八字節
date:日期 'yyyy-mm-dd',佔用三字節
timestamp:時間戳,從1970年開始的 yyyy-mm-dd HH:ii:ss 格式和datetime完全一致,佔用四字節

建表:


插入數據:


更新數據:


枚舉和set:

創建調查表votes1,插入數據:


添加枚舉數據:


   以上便是對數據庫中數據類型的一些基本總結,有不足的地方歡迎大家批評指正。

發佈了85 篇原創文章 · 獲贊 110 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章