MySQL資料型別

2021-08-05 20:01:22 字數 4385 閱讀 3103

mysql

資料庫提供了多種資料型別。其中包括整數、浮點數、定點數、日期和時間、字串和二進位制資料型別。不同的資料型別有

不用的特點,使用範圍不同。

整數型別是資料庫中最基本的資料型別。標準sql中支援integer和smallint這兩類資料型別。mysql資料庫除了這兩類,還擴充套件支援

tinyint,mediumint和bigint。如圖所示:

例如:tinyint的位元組數為1,1個位元組是8位,那麼,tinyint無符號數的最大是11111111,即2^8-1,最小為0;

有符號數的最大為01111111,即2^7-1,最小為10000000,即2^-8,同理,也可以算出其他的來~

mysql中使用浮點數和定點數型別來表示小數。浮點數型別包括單精度浮點數(float型)和雙精度浮點數(double型)。

定點數型別就是decimal型。如圖所示:

資料型別(m,d),例如,float(6,2)的含義為資料型別為float型,資料長度為6,小數點後保留2位,說明1234.56是符合要求的。

如果插入值的精度高於實際定義的精度,系統會自動進行四捨五入處理,使值的精度達到要求,不同的是,定點數在四捨五入會有警告。

在mysql中,定點數以字串形式儲存,因此,其精度比浮點數要高。而且,浮點數會出現誤差,這是浮點數一直存在的缺陷。如果要對資料的精度要求

比較高,還是選擇定點數比較安全。

日期與時間型別是為了方便在資料庫中儲存日期和時間而設計的。mysql中有多種表達時間與日期的資料型別。其中,year表達年份,

date型別表達日期,time表達時間,datetime和timestamp表示日期和時間。

year型別使用乙個位元組來表示年份。mysql中以yyyy的形式顯示year型別的值。給year型別的字段賦值的表示方法如下:

1.使用4位字串或數字表示,其範圍是從1901到2155,輸入格式為『yyyy』或yyyy,例如,輸入『2008』或者2008,可以直接儲存為2008,如果超過了範圍,就會插入0000

2.使用2位字串表示。『00』到『69』轉換為2000到2069,『70』到『99』轉換為1970到1999,『0』和『00』的效果是一樣的

time型別使用3個位元組來表示時間,mysql中以hh:mm:ss的形式顯示time型別的值。其中,hh表示時,mm表示分,取值範圍為0-59,ss表示秒,範圍為0-59

time型別的範圍可以從『-838:59:59』到『838:59:59』。

1.『d hh:mm:ss』格式的字串表示。其中d表示天數,取值範圍是0-34.儲存時,小時的值等於(d*24+hh),當然,

輸入時可以不嚴格按照這個格式,也可以是『hh:mm:ss』、『mm:ss』、『d hh:mm』、『d hh』或者『ss』等形式。

2.『hhmmss』格式的字串或者hhmmss格式的數字表示

3.使用current_time或者now()輸入當前系統的時間

date型別使用4個位元組來表示日期。mysql中以yyyy-mm-dd的形式顯示date型別的值,其中,分別表示年,月,日。

date型別的範圍可以從『1000-01-01』到『9999-12-31』。給date型別的字段賦值的表示方法如下:

1.『yyyy-mm-dd』或者『yyyymmdd』格式的字串表示,這種方式可以表達的範圍是『1000-01-01』到『9999-12-31』。

mysql中還支援一些不嚴格的語法格式,任何標點都可以用來做間隔符。如輸入『2001.3.8』將轉換為2001-03-08.

2.『yy-mm-dd』或者『yymmdd』格式的字串表示。其中『yy』的取值為『00』到『69』轉換為2000到2069,『70』到『99』的轉換為1970到1999,與year型別相似

3.yyyymmdd或yymmdd格式的數字表示。其中yy的取值『00』到『69』轉換為2000到2069,『70』到『99』轉換為1970到1999

datetime型別使用8個位元組來表示日期和時間。mysql中以『yyyy-mm-dd hh-mm-ss』的形式顯示datetime型別的值。從其形式可以看出這個

型別可以直接用date型別和time型別組合而成。給datetime型別的字段賦值的表示方法如下:

1.『yyyy-mm-dd hh-mm-ss』或者『yyyymmddhhmmss』格式的字串表示。這種方式可以表達的範圍是『1000-01-01 00:00:00』到『9999-12-31 23:59:59』。

mysql中還支援一些不嚴格的語法格式,任何標點都可以從來做間隔符。情況與date型別相同。而且,時間部分也可以用任意分隔符隔開,這與time型別不同,time型別只能用「;」隔開。例如,輸入『2008@08@08 08*08*08』,同意轉換為2008-08-08 08:08:08

2.『yy-mm-dd hh-mm-ss』或者yymmddhhmmss格式的字串表示。其中『yy』的取值從『00』到『69』轉換為2000到2069,『70』到『99』轉換為1970到1999,與year型別和date型別相同。

3.yyyymmddhhmmss或者yymmddhhmmss格式的數字表示。例如輸入20080808080808,datetime型別轉換為2008-08-08 08:08:08

如果輸入為0,那個轉換為0000-00-00 00-00-00.

4.使用now()來輸入當前系統日期和時間

下面介紹timestamp型別的幾種與datetime型別不同的形式,內容如下:

1.使用current_timestamp來輸入系統當前日期和時間。

2.輸入null時,系統會輸入系統當前日期和時間。

3.無任何輸入時,系統會輸入系統當前日期和時間。

timestamp型別還有乙個很大的特殊點,就是時間是根據時區來顯示的。但是它的型別範圍太小,其最大時間為2038-01-19 11:14:07

字串型別是在資料庫中儲存字串的資料型別。字串型別包括char,varchar,blob,text,enum和set。

char和varchar型別都是在建立表時指定了最大長度,其基本形式如下:字串型別(m),例如,char(4)就是指定資料型別為char型別,其最大長度為4.

char型別的長度是固定的,在建立表時就指定了,其長度可以是0-255的任意值。例如,char(100)就是指定char型別的長度為100.

varchar型別的長度是可變的,在建立表時指定了最大長度,定義時,其最大值可以取0-65535之間的任意值,指定最大值以後,其長度可以在0到最大長度之間。

例如,varchar(100)的最大長度是100,但是,不是每條記錄都要占用100個位置,而是在這個最大值範圍內,使用多少分配多少

varchar型別實際占用的空間為字串的實際長度加1,這樣,可以有效的節約系統的空間。

text型別是一種特殊的字串型別。text只能儲存字元資料,如文字等,text型別包括tinytext、text、mediumtext和longtext。

下面從四中text型別允許的長度的長度和儲存空間進行對比,如圖所示:

從圖可以看出,各種text型別的區別在於允許的長度和儲存空間不同。因此在這幾種text型別中,根據需求選取既能滿足需要又最節約空間的型別即可。

enum型別又陳偉列舉型別,在建立表時,enum型別的取值範圍就以列表的形式指定了。其基本形式如下:

屬性名 enum(『值1』,『值2』,。。。。。)

其中,屬性名引數指字段的名稱,這些值末尾的空格將會被系統直接刪除。

enum型別的值只能取列表中的乙個元素。其取值列表中最多能有65535個值。列表中的每個值都有乙個順序排列的編號,mysql中存入的是這個編號,而不是列表中的值。

如果enum型別加上了not null屬性,其預設值為取值列表的第乙個元素,如果不加上,enum型別將允許插入null,而且null為預設值

set型別,其基本形式如下;屬性名  set(『值1』,『值2』,。。。。。),其中,屬性名引數指字段的名稱,這些值末尾的空格將會被系統直接刪除。

set型別的值可以取列表中的乙個元素或者多個元素的組合。取多個元素時,不同元素之間用逗號隔開。set型別的值最多只能是有64個元素構成的組合。列表中的每個值都有乙個順序排列的編號。mysql中存入的是這個編號,而不是列表中的值。

插入記錄時,set欄位裡的元素順序無關緊要。存入mysql資料庫後,資料庫系統會自動按照定義時的順序顯示。

二進位制型別是資料庫中儲存二進位制資料的資料型別。二進位制型別包括binary,varbunary、bit、tinyblob、blob、mediumblob和

longblob,這種型別就不詳細介紹了,不怎麼用。

mysql資料型別用法 mysql資料型別和用法

歡迎進入linux社群論壇,與200萬技術人員互動交流 進入 mysql支援多種列型別 數值型別 日期 時間型別和字串 字元 型別。本章首先對這些列型別進行了概述,然後更加詳細地描述了各種列的型別,以及列型別儲存需求的總結。概述很簡單。關於具體列型別 歡迎進入linux社群論壇,與200萬技術人員互...

mysql 資料型別 真假 MySQL 資料型別

mysql基礎 資料型別 整型型別 根據所儲存的整數數值取值範圍不同,可分為以下五類 1 tinyint佔1個位元組 2 smallint佔2個位元組 3 mediumint 佔3個位元組 4 int佔4個位元組 5 bigint佔8個位元組 根據每種型別所佔的位元組數可確定其無符號整數和有符號整數...

mysql 郵箱 資料型別 mysql 資料型別

1 整型mysql資料型別含義 有符號 tinyint m 1個位元組 範圍 128 127 smallint m 2個位元組 範圍 32768 32767 mediumint m 3個位元組 範圍 8388608 8388607 int m 4個位元組 範圍 2147483648 21474836...