一. 資料型別介紹
表內存放的資料要有不同的型別,每種資料型別都要自己的寬度,而且寬度是可以選擇的.
二. 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...