MySQL數據庫類型詳解總結大全-有哪些以及取值范圍


1.   MySQL數據類型

1.1. 數據類型(列類型)總覽

 

 

可見,mysql中的數據類型,總體分3大類:

數字型:

時間型:

字符型:

其中,在sql語句中,數字型數據不需要單引號引起來,而時間型和字符型數據需要用單引號引起來。

1.2. 整型

整型數據類型包括:

tinyint            :微整型

smallint          :小整型

mediumint      :中整型

int                 :整型

bigint             :大整型

這些不同大小范圍的整型信息如下表所示:

 

類型

所占空間

(字節)

帶符號

無符號

最小值

最大值

最小值

最大值

tinyint

1

-128

127

0

255

smallint

2

-32768

32767

0

65535

mediumint

3

-8388608

8388607

0

16777215

int

4

-2147483648

2147483647

0

4294967295

bigint

8

-9223372036854775808

9223372036854775807

0

18446744073709551615

 

默認整數類型是帶符號的,即可以有正負值,比如:

create  table  zhengxing1(num1  int, num2  tinyint);

此時,num1和num2中都可以存儲負數(但都不能超出范圍)

不帶符號的整數類型設置形式如下:

create  table  zhengxing2(num1  int  unsigned, num2  tinyint  unsigned);

 

1.3. 小數型

小數類型分為浮點小數和定點小數。

1.3.1.  浮點小數

浮點小數是“不精確的小數”,包括float和double。

float:

占用4字節存儲空間,可稱為“單精度浮點數”,約7位有效數字。

double:

占用8字節存儲空間,可稱為“雙精度浮點數”,約17位有效數字。

 

1.3.2.  定點小數

定點小數是“精確的小數”——它通過內部技巧,突破了“有些小數無法用二進制精確表示”的局限。

其設定方式通常是這樣的: decimal(M, D);

其中M表示該小數的總的有效位數(最大65),D表示該小數的小數點后的位數。

 

演示:

定義三個字段分別為float、double和decimal類型,並都插入數字“123456789.123456789123456789”,顯示結果。

 

數據類型選擇示例:

 

 

1.4. 日期時間型

日期時間類型包括如下幾種:

date類型:

表示日期,格式類似這樣:'0000-00-00'

 

time類型:

表示時間,格式類似這樣:'00:00:00'

 

datetime類型:

表示日期時間,格式類似這樣:'0000-00-00 00:00:00'

 

timestamp類型:

表示“時間戳”,其實就是一個整數數字,該數字是從是“時間起點”到現在為止的“秒數”。

“時間起點”是:1970-1-1 0:0:0

timestamp類型的字段,無需插入數據,而是會自動取得當前的日期時間(表示當前時刻)。

而且,此類型字段會在數據被更新時,也同樣自動取得當前的日期時間(表示修改的時刻)。

特別總結:它在insert或update某行數據的時候,能夠自動獲得當前時間。

 

year類型:

表示年份,格式為:'0000'

 

注意:

時間類型的字面值,通常使用單引號引起來

 

示例:

創建一個表,設定5個字段分別為上述類型,並插入相應的數據值后查看結果。

 

now()函數的使用:

 

更新數據,以對比datetime類型的數據和timestamp類型的數據的區別:

 

小細節:timestamp類型在一個表中只能用於一個字段!

1.5. 字符串型

字符串類型常用的包括:char, varchar, text, enum, set,分述如下:

1.5.1.  定長字符char和變長字符varchar

l  定長字符類型char:

適用於存儲的字符長度為固定長度的字符,比如中國郵政編碼,中國身份證號碼,手機號碼等。

設定形式:

字段名稱 char(字符個數)

其特點是:

1,存儲的字符長度固定,最長可設定為255個字符。

2,如果實際寫入的字符不足設定長度,內部會自動用空格填充到設定的長度。

3,相對varchar類型,其存取速度更快。

l  變長字符類型varchar:

適用於存儲字符長度經常不確定的字符,比如姓名,用戶名,標題,內容,等大多數場合的字符。

設定形式:

字段名稱 varchar(字符個數)

其特點是:

1,存儲的字符長度是寫入的實際長度,但不超過設定的長度。最長可設定為65532(字節)。

(1)      注:由於其最長的限制是字節數,因此存儲中文和英文的實際字符個數是不同的;

(2)      英文:一個字符占一個字節;

(3)      中文(gbk編碼):一個字符占2個字節;

(4)      中文(utf8編碼):一個字符占3個字節;

2,如果實際寫入的字符不足設定的長度,就按實際的長度存儲。

3,相對於char字符串,其存取速度相對更慢。

示例:

定義一個表,演示char和varchar的使用和區別:

 

 

思考題:

一個表中有一個字段為c1,其類型為char(10),另有一個字段為c2,類型為varchar,問:

c2最多可以設置多長?

答:

1,一個表中的行也有一個“最大字節長度的限制”,一行最多存儲65532字節。

2,則此時,c2最多可以設置65532-10 = 65522(長度設定)

3,如果c2中存儲的全是英文字符,就可以存儲65522個

4,如果存儲中文:

       gbk:最多65522/2 = 32761個

       utf8:最多65522/3 = 21840個

 

1.5.2.  text長文本類型

適用於存儲“較長的文本內容”,比如文章內容。最長可存儲65535個字符。

如果還需要存儲更長的文本,可以使用mediumtext(1600萬左右)或longtext(40億左右)。

設定形式:

字段名稱   text

text類型的字段不能設置默認值。

text類型雖然是字符類型,但不能設置長度!!!

text類型的數據不存在行中。

 

 

1.5.3.  enum和set類型

enum類型和set類型都是用於存儲“有給定值的可選字符”,比如類似表單中的單選,多選,下拉列表。

 

l  enum類型(單選類型/枚舉類型):

enum類型通常用於存儲表單中的“單選項”的值。

設定形式:

enum(‘選項值1’, ‘選項值2’, ‘選項值3’, ....)

這些選項值都對應了相應的“索引值”,類似索引數組的下標,但是從1開始的。

即這些選項的索引值分別為:1, 2, 3, 4, .....

enum類型最多可設定65535個選項。

示例:

create  table  tab1 (id  int,  edu(‘大學’, ‘中學’, ‘小學’, ‘其他’ )  );

insert  into  tab1 (id, edu) values (1, ‘大學’);

或:

insert  into  tab1 (id, edu) values (1, 2);           //表示中學

l  set類型(多選類型):

set類型通常用於存儲表單中的“多選項”的值。

設定形式:

set(‘選項值1’, ‘選項值2’, ‘選項值3’, ....)

這些選項值都對應了相應的“索引值”,其索引值從1開始,並“依次翻倍”。

即這些選項的索引值分別為:1, 2, 4, 8, 16, .....  (其實就是2的n次方)

enum類型最多可設定64個選項值。

示例:

create  table  tab2 (aihao(‘籃球’, ‘排球’, ‘足球’, ‘中國足球’ )  ); #對應索引值為1,2,4,8

insert  into  tab2( aihao ) values ( ‘籃球’ );

或:

insert  into  tab2 ( aihao ) values ( ‘籃球,排球’ );

或:

insert  into  tab2 ( aihao ) values ( ‘籃球,足球,排球’ );

或:

insert  into  tab2 ( aihao ) values ( 2 );      //表示排球(2)

或:

insert  into  tab2 ( aihao ) values ( 3);              //表示“籃球,排球”(1+2)

或:

insert  into  tab2 ( aihao ) values ( 7);              //表示“籃球,排球,足球”(1+2+4)

基本示例:

 

使用索引值來插入數據:

 

 

 

<?php
    echo "本文筆記轉載於word文檔,並非原創!";    
?>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM