整數型別
浮點數型別和定點數型別
日期與時間型別
鏈結
字串型別
二進位制字串型別
數值型別主要用來儲存數字,mysql提供了多種數值資料型別,不同的資料型別提供了不同的取值範圍,可以儲存的值範圍越大,其所需要的儲存空間也會越大。
型別名稱
說明儲存需求
tinyint
很小的整數
1位元組smallint
小的整數
2位元組mediumint
中等大小的整數
3位元組int(integer)
普通大小的整數
4位元組bigint
大整數8位元組
這裡補充乙個基礎知識,tinyint需要一位元組8(bits)來儲存,那麼它的無符號數的最大值為28 -1=255,有符號數的最大值為27 -1=127。資料型別無符號數最大為255(而無符號數只能表示非負數即》=0),有符號數第一位(圖上為7的位置)0和1分別表示正負,所以最大為127,最小為-127。其他型別的整數的取值範圍計算方法相同,如果插入的數值不在其範圍之中mysql就會報錯。
有符號無符號
tinyint
-128-127
0-255
smallint
-32767-32767
0-65535
mediumint
-8388608-8388607
0-16777215
int(integer)
-2147483648-2147483647
0-4294967295
bigint
-922337203685477508-922337203685477508
0-18446744073709551615
mysql中使用浮點數和定點數來表示小數。浮點數型別有兩種:單精度浮點型別(float)和雙精度浮點型別(double)
型別名稱
說明儲存需求
float
單精度浮點數
4位元組double
雙精度浮點數
8位元組decimal(m,d),dec
壓縮的「嚴格」定點數
m+2位元組
deciamal型別不同於float和double,decimal實際以串存放的,可能的最大取值範圍與double一樣,但是其有效的取值範圍由m和d的值決定。如果改變m和固定d,則其取值範圍將隨m的變大而變大。
型別名稱
日期格式
日期範圍
儲存需求
year
yyyy
1901-2155
1位元組time
hh:mm:ss
-839:59:59~838:59:59
3位元組date
yyyy-mm-dd
1000-01-01~9999-12-3
3位元組datetime
yyyy-mm-dd hh:mm:ss
1000-01-01 00:00:00~9999-12-31 23:59:59
8位元組timestamp
yyyy-mm-dd hh:mm:ss
1970-01-01 00:00:01 utc~ 2038-01-19 03:14:07 utc
4位元組year
year型別是乙個單位元組型別,用於表示年,在儲存時只需要1位元組。可以使用各種指定year值,如下所示:
可以使用4位字串(數字字串如』2012』)或4位數字格式表示。插入』2010』或插入2010,插入到資料庫的值均為2010。
以2位字串格式表示的year,範圍位』00』到『99』。『00-69』和『70-99』範圍的值分別被轉換為2000-2069和1970-1999範圍的year值。『0』與『00』作用相同。插入超過取值範圍的值將被轉換為2000。
以2位數字表示的year,範圍為1-99.1-69和70-99範圍的值分別轉換位2001-2069和1970-1999範圍的year值。注意:在這裡0值將被轉換位0000,而不是2000。
time
time型別用在只需要時間資訊的值,在儲存時需要3位元組,格式位』hh:mm:ss』。其中,hh表示小時,mm表示分鐘,ss表示秒。time型別的取值範圍位-838:59:59~838:59:59,小時部分會如此大的原因是time型別不僅只表示一天的時間,還可能時某個事件過去的時間或兩個事件之間的時間間隔。
'd hh:mm:ss』格式的字串。可以使用下面任何一種"非嚴格的"語法:『hh:mm:ss』,『hh:mm』,『d hh:mm』,『d hh』或『ss』。這裡的d表示日,可以取0-34之間的值。在插入資料庫時,d被轉換位小時儲存,格式位』d*24+hh』。
'hhmmss』格式的,沒有間隔符的字串或者hhmmss格式的數值,假定時有意義的時間。例如:『101112』被理解位』10:11:12』,但』109712』是不合法的(它有乙個沒有意義的分鐘部分),儲存時將變為00:00:00。
如果沒有冒號,mysql解釋值時,假定最右邊的兩位表示秒。(mysql解釋time值為過去的時間而不是當天的時間。)例如,讀者可能認為』1112』和1112表示11:12:00(11點12分),但mysql將它們解釋為00:11:12(11分12秒)。同樣』12』和12被解釋為00:00:12。相反,time值中如果使用冒號則肯定被看作當天的時間,也就是說,'11:12』表示11:12:00,而不是00:11:12。date
date型別用在僅需要日期值時,沒有時間部分,在儲存時需要3位元組。日期格式為』yyyy-mm-dd』。其中,yyyy表示年,mm表示月,dd表示日。在給date型別的字段賦值時,可以使用字串型別或數字型別的資料插入,只要符合date的日期格式即可。
以』yyyy-mm-dd』或者』yyyymmdd』字串格式表示的日期,取值範圍為』1000-01-01』-『9999-12-3』。例如,輸入』2012-12-31』或者』20121231』,插入資料庫的日期都為2012-12-31。
以』yy-mm-dd』或者』yymmdd』表示的日期,在這裡yy表示兩位的年值。包含兩位年值的日期會令人模糊,因為不知道世紀。mysql使用以下規則解釋兩位年值:『00-69』範圍的年值轉換為』2000-2069』;『70-99』範圍的年值轉換為』1970-1999』。例如,輸入『12-12-31』,插入資料庫的日期為2012-12-31;輸入』981231』,插入資料的日期為1998-12-31。
以yy-mm-dd或者yymmdd數字格式表示的日期,與前面相似,00-69範圍的年值轉換為2000-2069,70-99範圍的年值轉換為1970-1999。例如,輸入12-12-31插入資料庫的日期為2012-12-31;輸入981231,插入資料的日期為1998-12-31。
使用current_date或者now(),插入當前系統日期。
datetime
datetime型別用於需要同時包含日期和時間資訊的值,在儲存時需要8位元組。日期格式為』yyyy-mm-dd hh:mm:ss』。其中,yyyy表示年,mm表示年,dd表示日,hh表示小時,mm表示分鐘,ss表示秒。在給datetime型別的字段賦值時,可以使用字串型別或者數字型別的資料插入,只要符合datetime的日期格式即可。
以』yyyy-mm-dd hh:mm:ss』或者』yyyymmddhhmmss』字串表示的值,取值範圍為』1000-01-01 00:00:00』~『9999-12-3 23:59:59』。輸入』2012-12-31 05:05:05』或者』20121231050505』,插入資料庫的datetime值都為2012-12-31 05:05:05。
以』yy-mm-dd hh:mm:ss』或者』yymmddhhmmss』字串格式表示的日期,在這裡yy表示兩位的年值。與前面相同。'00-69』和』70-99』範圍的年值和上面轉換方式相同。
以yyyymmddhhmmss或者yymmddhhmmss數字格式表示的日期和時間。例如,輸入20121231050505,插入資料庫的datetime為2012-12-31 05:05:05;輸入981231050505,插入資料的datetime為1998-12-31 05:05:05。
timestamp
timestamp的顯示格式與datetime相同,顯示寬度固定在19個字元,日期格式為yyyy-mm-dd hh:mm:ss,在儲存時需要4位元組。timestamp列的取值範圍小於datetime的取值範圍,為』1970-01-01 00:00:01』utc- '2038-01-19 03:14:07』utc。其中,utc~ '2038-01-19 03:14:07』utc。其中,utc為世界標準時間,因此在插入資料時,要保證在合法的取值範圍內。
timestamp和datatime除了儲存位元組和支援的範圍不同外,還有乙個最大的區別就是:datetime在儲存日期資料時,按實際輸入的格式儲存,即輸入什麼就儲存什麼,與時區無關;而timestamp值的儲存時以utc(世界標準時間)格式儲存的,儲存時對當前時區進行轉換,檢索時在在轉換回當前時區。查詢時,不同時區顯示的值是不同的。
MYSQL資料庫表字段型別(二)
文字字串型別 鏈結 整數型別,浮點數型別和定點型別 二進位制字串型別 字串型別用來儲存字串資料,除了可以在儲存字串資料之外,還可以儲存其他資料,比如和聲音的二進位制資料。mysql還支援兩類字元型資料 文字字串型別。文字字串二進位制字串 表一型別名稱 說明儲存需求 char m 固定長度非二進位制字...
MYSQL資料庫表字段型別(三)
二進位制字串型別 鏈結整數型別,浮點數型別和定點型別 文字字串型別 mysql的二進位制資料型別有bit,binary,mediumblob和longblob。本節將講解各類二進位制字串型別的特點和使用方法。表一列出了mysql中的二進位制資料型別。表一型別名稱 說明儲存需求 bit m 位欄位型別...
修改Oracle資料庫表字段型別
修改user表的name欄位型別從varchar2改為clob 1.新增乙個備份字段 alert table user add name back clob 2.複製name的值到備份欄位name back update user set name back name 3.刪除原來的字段user a...