MYSQL資料庫表字段型別(一)

2021-10-09 04:22:48 字數 4478 閱讀 2697

整數型別

浮點數型別和定點數型別

日期與時間型別

鏈結

字串型別

二進位制字串型別

數值型別主要用來儲存數字,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...