MySQL 資料型別

2021-08-28 00:11:11 字數 3611 閱讀 7642

目錄

資料型別

- 整數型別:tinyint、smallint、mediumint、nt、bigint

- tinyint

- int

- bigint

- 整型儲存範圍

- 浮點型別:float、double

- float

- double

- decimal(定點數型別)

- 字串型別:char、varchar

- char

- varchar

- char vs varchar

- 位型別:bit

-bit

- 日期型別:date、time、datetime、timestamp、year

- datetime & timetamp

- 列舉 and 集合

嚴格模式

小數型,資料型別用於儲存一些範圍的整數數值範圍。

範圍:

注:mysql沒有布林值,使用tinyint(1)構造

整數,資料型別用於儲存一些範圍的整數數值範圍。

範圍:

大整數,資料型別用於儲存一些範圍的整數數值範圍。

範圍:

注:資料型別指定的寬度,例如 int(5),5指的是查詢結果的顯示寬度,與儲存範圍無關。預設的顯示寬度為最大值+1。另:int的儲存寬度是4個bytes,即32個bit,即2**32

無符號最大值為:4294967296-1

有符號最大值:2147483648-1

有符號和無符號的最大數字需要的顯示寬度均為10,而針對有符號的最小值則需要11位才能顯示完全,所以int型別預設的顯示寬度為11是非常合理的

即:整形型別,其實沒有必要指定顯示寬度,使用預設的即可

float[(m,d)] [unsigned] [zerofill]
單精度浮點數(非準確小數值),m是數字總個數,d是小數點後個數。m最大值為255,d最大值為30。

範圍:

double[(m,d)] [unsigned] [zerofill]
雙精度浮點數(非精確小數值),m是數字總個數,d是小數點後個數。m最大值為255,d最大值為30

範圍:

dec同decimal

decimal[(m[,d])] [unsigned] [zerofill]
精確的小數值,m是數字總個數(負號不算),d是小數點後個數。m最大值為65,d最大值為30、

精確度:

char(n)

用來固定長度的字串,n為字元長度範圍 0~255(乙個中文是乙個字元,是utf8編碼的三個位元組),超出範圍報錯

儲存:缺省會往右填充空格滿足指定長度。

如:指定長度為10,存》10個字元則報錯,存<10個字元則用空格填充直到湊夠10個字元儲存

檢索:在檢索(查詢)時,查出的結果會自動刪除尾部空格。除非我們開啟pad_char_to_full_length sql模式(set sql_mode = 'pad_char_to_full_length';)

varchar(n)

用來儲存變長字元型別,n為字元長度範圍 0~65535(如果大於21845會提示用其他型別),超出範圍報錯

儲存: 檢索: 尾部有空格會儲存下來,在檢索(查詢)時,也會正常顯示包含空格在內的內容

總結:innodb引擎:建議使用varchar型別。

bit(m)

存放二進位制數,m範圍 1~64,預設為1位

注意:

year

yyyy(1901/2155)

date

yyyy-mm-dd(1000-01-01/9999-12-31)

time

hh:mm:ss('-838:59:59'/'838:59:59')

datetime

yyyy-mm-dd hh:mm:ss(1000-01-01 00:00:00/9999-12-31 23:59:59 y)

timestamp

yyyymmdd hhmmss(1970-01-01 00:00:00/2037 年某時)

在實際應用的很多場景中,mysql的這兩種日期型別都能夠滿足我們的需要,儲存精度都為秒,但在某些情況下,會展現出他們各自的優劣。下面就來總結一下兩種日期型別的區別。

1.datetime的日期範圍是1001——2023年,timestamp的時間範圍是1970——2023年。

2.datetime儲存時間與時區無關,timestamp儲存時間與時區有關,顯示的值也依賴於時區。在mysql伺服器,作業系統以及客戶端連線都有時區的設定。

3.datetime使用8位元組的儲存空間,timestamp的儲存空間為4位元組。因此,timestamp比datetime的空間利用率更高。

4.datetime的預設值為null;timestamp的字段預設不為空(not null),預設值為當前時間(current_timestamp),如果不做特殊處理,並且update語句中沒有指定該列的更新值,則預設更新為當前時間。即,timestamp只要動了對應行資料,會自動更新修改時間。

列舉(enum):欄位的值只能在給定範圍中選乙個(單選)

*** enum('male','female');
集合(set):欄位的值只能在給定範圍中選擇(可多選)

hobby set('play','music','read','study') :
如果插入的數字不在相應型別的範圍內,依舊可以插入。

嚴格模式:如果插入數字不在相應範圍內,則報錯。

設定方式:

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...