首頁>技術>

整數型別

整數型別分為tinyint、smallint、mediumint、int和bigint這5個型別。如果超出類型範圍的操作,會發生“Out of range”錯誤提示。對於整型資料,MySQL還支援在型別名稱後面的小括號內指定顯示寬度,例如 int(5)表示當數值寬度小於5位的時候在數字前面填滿寬度,如果不顯示指定寬度則預設為int(11)。一般配合zerofill使用,顧名思義,zerofill就是用“O”填充的意思,也就是在數字位數不夠的空間用字元“0”填滿。

alter table student modify age int(3) zerofill;

將學生表年齡欄位用0在欄位中進行填充

小數型別

對於小數的表示,MySQL分為兩種方式:浮點數和定點數。浮點數包括float(單精度)和double(雙精度),而定點數則只有decimal一種表示。定點數在MySQL內部以字串形式存放,比浮點數更精確,適合用來表示貨幣等精度高的資料。

浮點數和定點數都可以用型別名稱後加“(M,D)”的方式來進行表示,“(MD)”表示該值一共顯示M位數字(整數位+小數位),其中D位位於小數點後面,M和D又稱為精度和標度。例如,定義為float(7,4)的一個列可以顯示為-999.9999。MySQL儲存值時進行四捨五入,因此如果在float(7,4)列內插入999.00009,近似結果是999.0001.值得注意的是,浮點數後面跟“(M.D)”的用法是非標準用法,如果要用於資料庫的遷移,則最好不要這麼使用。float和 double在不指定精度時,預設會按照實際的精度(由實際的硬體和作業系統決定)來顯示,而decimal在不指定精度時,預設的整數位為10,預設的小數位為0。在decimal型別中,若超過指定的位數,會按照decimal定義的長度進行截斷。

日期時間型別

如果要用來表示年月日,通常用DATE來表示。

如果要用來表示年月日時分秒,通常用DATETIME表示。

如果只用來表示時分秒,通常用TIME來表示。

如果需要經常插入或者更新日期為當前系統時間,則通常使用TIMESTAMP來表示。

TIMESTAMP值返回後顯示為“YYYY-MM-DD HH:MM:SS”格式的字串,顯示寬度固定為19個字元。如果想要獲得數字值,應在TIMESTAMP列新增“+0”,給第一個TIMESTAMP型別欄位輸入null時,系統預設顯示預設值CURRENT_TIMESTAMP(系統日期)。,第二個TIMESTAMP型別則預設為0。

如果只是表示年份,可以用YEAR來表示,它比 DATE佔用更少的空間。YEAR有2位或4位格式的年。預設是4位格式。在4位格式中,允許的值是1901~2155和0000。在2位格式中,允許的值是70~69,表示從1970~2069年。MySQL與 YYYY格式顯示YEAR值。

TIMESTAMP的插入和查詢都受當地時區的影響,更能反映出實際的日期。而DATETIME 則只能反映出插入時當地的時區,其他時區的人檢視資料必然會有誤差的。

字串型別

CHAR和VARCHAR很類似,都用來儲存MySQL中較短的字串。二者的主要區別在於儲存方式的不同:CHAR列的長度固定為建立表時宣告的長度,長度可以為從0~255的任何值;而VARCHAR列中的值為可變長字串,長度可以指定為0~255或者65535之間的值。在檢索的時候,CHAR列刪除了尾部的空格,而VARCHAR則保留這些空格。

BINARY 和 VARBINARY類似於CHAR和 VARCHAR.不同的是它們包含二進位制字串而不包含非二進位制字串。

ENUM中文名稱叫列舉型別,它的值範圍需要在建立表時透過列舉方式顯式指定,對1~255個成員的列舉需要1個位元組儲存;對於255~65535個成員,需要2個位元組儲存。最多允許有65535個成員。列舉型別是忽略大小寫的。插入不在ENUM 指定範圍內的值時,並沒有返回警告,而是插入了enum的第一個值, 另外,ENUM型別只允許從值集合中選取單個值,而不能一次取多個值。

SET 和 ENUM型別非常類似,也是一個字串物件,裡面可以包含0~64個成員。根據成員的不同,儲存上也有所不同。SET型別可以從允許值集合中選擇任意1個或多個元素進行組合,所以對於輸入的值只要是在允許值的組合範圍內,都可以正確地注入到SET型別的列中。對於超出允許值範圍的值將不允許注入到上面例子中設定的SET型別列中而對於重複成員的集合將只取一次。

7
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 文字聚類分析(二)-python