MySQL資料型別

2022-08-26 11:03:14 字數 4335 閱讀 5576

一. 資料型別介紹

表內存放的資料要有不同的型別,每種資料型別都要自己的寬度,而且寬度是可以選擇的.

二. mysql常用資料型別 :

1. 數字

①. 整型 : tinyint  int  bigint

②. 小數 : 

float : 在位數比較短的情況下不精準

double : 在位數比較長的情況下不精準

decimal : 任何為數都精準  //內部是以字串形式去儲存, 推薦使用

2. 字串

①. char : 簡單粗暴, 浪費空間, 訪問速度快

②. varchar : 精準, 節省空間, 訪問速度慢

③. sql優化 : 建立表時, 定長的型別往前放, 變長的型別往後放

④. 資料》255個字元時, 就把檔案的路徑放到資料庫中.

3. 時間型別

①. datetime

4. 列舉型別和集合型別

①. enum  列舉, 多個選項選擇乙個

②. set  集合, 多選

三. 數值型別

※ . 緊跟數值型別後面的數字是顯示寬度, 而不是儲存寬度. 預設的顯示寬度是在最大值的基礎上 + 1 .

※ . 無符號引數 : unsigned

※ .  不足規定顯示寬度是使用0補位 : zerofill

1. tinyint [ n ] [ undigned ] [ zerofill ]

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

②. 有符號取值範圍 :    即帶負號, 允許有負數

-128 ~ 127

③. 無符號取值範圍 :    即不帶負號,不允許有負數

0 ~ 255

2. int

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

②. 有符號取值範圍 :    即帶負號, 允許有負數

-2147483648 ~ 2147483647

③. 無符號取值範圍 :    即不帶負號,不允許有負數

0 ~ 4294967295

3. bigint

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

②. 有符號取值範圍 :    即帶負號, 允許有負數

-9223372036854775808 ~ 9223372036854775807

③. 無符號取值範圍 :    即不帶負號,不允許有負數

0 ~ 18446744073709551615

4. float [ (m, d) ] [ unsigned ] [ zerofill ]

①. 單精度浮點數(非準確小數值),m的全長,最大值為255,d是小數點後的位數,最大值為30.

②. 有符號取值範圍 :    即帶負號, 允許有負數

-3.402823466e+38 ~ 1.175494351e-38,

1.175494351e-38 ~ 3.402823466e+38

③. 無符號取值範圍 :    即不帶負號,不允許有負數

1.175494351e-38 ~ 3.402823466e+38

④. 精準度隨著小數字數的增加而越來越不準確.

5. double [ (m, d) ] [ unsigned ] [ zerofill ]

①. 雙精度浮點數(非準確小數值),m的全長,最大值為255,d是小數點後的位數,最大值為30.

②. 有符號取值範圍 :    即帶負號, 允許有負數

-1.7976931348623157e+308 ~ 2.2250738585072014,

2.2250738585072014e-308 ~ 1.7976931348623157e+308

③. 無符號取值範圍 :    即不帶負號,不允許有負數

2.2250738585072014e-308 ~ 1.7976931348623157e+308

④. 精準度隨著小數字數的增加而越來越不準確. 但是精度比float要高.

6. decimal [ m, d ] [ undigned ] [ zerofill ]

①. 準確的小數值, m為整數部分的總個數(負號不算),最大值為65.d是小數點後的位數,最大值為30.

②. 無論小數有多少位, 精度始終準確.

四. 日期型別

1. date   年月日的形式

取值範圍 : yyyy-mm-dd (1000-01-01 ~ 9999-12-31)

2. time  時分秒的形式

取值範圍 : hh:mm:ss ("-838:59:59" ~ "-838:59:59")

3. datetime  年月日 時分秒的形式

取值範圍 : yyyy-mm-dd hh:mm:ss (1000-01-01 00:00:00 ~ 9999-12-13 23:59:59)

4. year  年形式

取值範圍 : yyyy (1901~ 2155)

5. timestamp  年月日時分秒形式

取值範圍 : yyyymmdd hhmmss (1970-01-01 00:00:00~2037)

五. 字元型別

※ . char和varchar型別後括號內的引數是指字元的長度

1. char型別 : 定長,簡單粗暴,浪費空間,訪問速度塊

字元長度範圍 : 0 ~ 255 (乙個中文是乙個字元,是utf8編碼的3個位元組)

儲存char型別的值時,如果插入的值字元數小於指定字元數,會在插入字元右側填充空格滿足長度.

查詢表時,查出的結果會自動刪除尾部的空格,如果不想將空格刪除需要對mysql設定模式 : set sql_mode = " pad_char_to_full_length ";  

查詢mysql的預設查詢模式命令 : select @@sql_mode;

2. varchar型別 : 變長,精準,節省空間,訪問速度慢

字元長度範圍 : 0 ~ 65535(如果大於21845會提示用其他型別. mysql行最大限制為65535位元組,字元編碼為utf8);

varchar型別的儲存資料為真實的資料,不會使用空格填充. 如果儲存的資料中含有空格,空格也會被儲存在表內

varchar型別會在真實資料前加1~2位元組的字首,該字首用來表示真實資料的位元組數,(1~2位元組最大表示65535個位元組,正好滿足mysql對一行的最大位元組數)

如果真實的資料<255位元組則需要1位元組的字首(1位元組 = 8bit  2**8最大表時數字為255)

如果真實的資料》255位元組則需要2位元組的字首(2位元組 = 16bit  2**16最大表示數字為65535)

3. 查詢某一資料的位元組或字元數

位元組數 : length()

字元數 : char_length()

六. 列舉和集合型別

乙個欄位的值只能在給定的範圍內選擇

enum 單選 在給定的乙個範圍內選擇乙個值, 如 : 性別等

如果單選字段值插入了多個或不是給定範圍內的值,會忽略

set 多選 在給定的範圍內選擇多個, 如 : 愛好等

如果set字段值插入了超出範圍的的值,會報錯.

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