一、基礎(chǔ)數(shù)據(jù)類型

1. 整型(Integer)

整型數(shù)據(jù)類型用于存儲整數(shù)值,包括正數(shù)、負(fù)數(shù)和零。MySQL中有以下幾種整型數(shù)據(jù)類型:

TINYINT:占用1個字節(jié)的整數(shù),取值范圍為-128到127(有符號)或0到255(無符號)。

SMALLINT:占用2個字節(jié)的整數(shù),取值范圍為-32768到32767。

MEDIUMINT:占用3個字節(jié)的整數(shù),取值范圍為-8388608到8388607。

INT:占用4個字節(jié)的整數(shù),取值范圍為-2147483648到2147483647(有符號)或0到4294967295(無符號)。

BIGINT:占用8個字節(jié)的整數(shù),取值范圍為-9223372036854775808到9223372036854775807。

BIT:占用1位的二進(jìn)制數(shù)字,取值范圍為0或1。

2. 浮點型(Floating-point)

浮點型數(shù)據(jù)類型用于存儲實數(shù),包括小數(shù)和科學(xué)計數(shù)法表示的數(shù)。MySQL中有以下幾種浮點型數(shù)據(jù)類型:

FLOAT:占用4個字節(jié)的單精度浮點數(shù),取值范圍約為±3.4E-38到±3.4E+38。

DOUBLE:占用8個字節(jié)的雙精度浮點數(shù),取值范圍約為±1.7E-308到±1.7E+308。

DECIMAL:定點數(shù),用于存儲精確的小數(shù),如貨幣值。其最大長度為65位,小數(shù)位數(shù)最多為30位。

3. 定點型(Fixed Point)

定點型數(shù)據(jù)類型用于存儲固定大小的整數(shù)值。MySQL中沒有專門的定點型數(shù)據(jù)類型,但可以通過設(shè)置列的屬性來實現(xiàn)定點數(shù)存儲。例如,可以將一個列的數(shù)據(jù)類型設(shè)置為“SIGNED INTEGER”以實現(xiàn)定點數(shù)存儲。

二、日期和時間類型

1. 日期類型(Date)

日期類型用于存儲日期值,不包含時間信息。MySQL中有以下幾種日期類型:

DATE:默認(rèn)格式為'YYYY-MM-DD'。

TIMESTAMP:時間戳,包含日期和時間信息,精確到秒。默認(rèn)時區(qū)為系統(tǒng)時區(qū)。

DATETIME:日期和時間組合,包含日期和時間信息,精確到微秒。默認(rèn)時區(qū)為系統(tǒng)時區(qū)。

TIME:時間,只包含時間信息,不包含日期信息。精確到秒。默認(rèn)時區(qū)為系統(tǒng)時區(qū)。

YEAR:年份,只包含年份信息,不包含月份和日期信息。默認(rèn)時區(qū)為系統(tǒng)時區(qū)。

2. 時間類型(Time)

時間類型用于存儲時間值,不包含日期信息。MySQL中有以下幾種時間類型:

TIME:時間,只包含時間信息,不包含日期信息。精確到秒。默認(rèn)時區(qū)為系統(tǒng)時區(qū)。

DATETIME(TIME):日期和時間組合,包含時間信息,精確到微秒。默認(rèn)時區(qū)為系統(tǒng)時區(qū)。

VARCHAR(N):可變長度字符串,可以存儲時間值,但需要額外指定長度和小數(shù)點位置。例如,'HH:mm:ss'表示小時、分鐘和秒。

三、字符串類型(String)

字符串類型用于存儲文本數(shù)據(jù)。MySQL中有以下幾種字符串類型:

CHAR:定長字符串,固定長度的字符序列。例如,'CHAR(10)'表示最大長度為10的字符序列。如果需要存儲可變長度的字符串,可以使用TEXT或VARCHAR類型。

VARCHAR:可變長度字符串,根據(jù)實際數(shù)據(jù)的最大長度動態(tài)分配內(nèi)存空間。例如,'VARCHAR(255)'表示最大長度為255的字符序列。如果需要存儲可變長度的二進(jìn)制數(shù)據(jù),可以使用BLOB或BINARY類型。

TINYTEXT:可變長度字符串,最大長度為255個字符。通常用于存儲較短的文本數(shù)據(jù),如HTML代碼片段。

TEXT:可變長度字符串,最大長度為65535個字符。通常用于存儲較長的文本數(shù)據(jù),如XML文檔或JSON對象。

TINYBLOB、BLOB、TINYTEXT、TEXT、BINARY、VARBINARY等:分別表示不同大小的二進(jìn)制數(shù)據(jù)和字符串類型的可變長度序列化數(shù)據(jù)。這些類型通常用于存儲圖片、音頻、視頻等二進(jìn)制數(shù)據(jù)。

ENUM:枚舉類型,只能存儲預(yù)定義的值列表中的一個值。例如,'ENUM('apple','banana','orange')'表示只能存儲'apple'、'banana'或'orange'這三個值之一。