常見的數據類型介紹mysql
能夠大體分爲三類: 1.數值型: 整型 小數: 定點數 浮點數 2.字符型: 較短的文本:char、varchar 較長的文本:text、blob(較長的二進制數據)好比 圖片二進制 3.日期型:
分類:
tinyint、smallint、mediumint、int/integer、bigint
1 2 3 4 8sql
特色:
① 若是不設置無符號仍是有符號,默認是有符號,若是想設置無符號,須要添加 unsigned 關鍵字
② 若是插入的數值超出了整型的範圍,會報 out of range異常,而且插入臨界值
③ 若是不設置長度,會有默認的長度,好比int 默認長度11,無符號的是10
④ 長度表明了顯示的最大寬度,若是不夠會用0在左邊填充,但必須搭配zerofill使用!可是加上zerofill後,unsigned就無心義了,默認就是無符號了。code
DROP TABLE IF EXISTS tab_int; CREATE TABLE tab_int( t1 INT(7) ZEROFILL, t2 INT(7) ZEROFILL ); DESC tab_int; INSERT INTO tab_int VALUES(-123456); INSERT INTO tab_int VALUES(-123456,-123456); INSERT INTO tab_int VALUES(2147483648,4294967296); INSERT INTO tab_int VALUES(123,123); SELECT * FROM tab_int;
分類:圖片
1.浮點型
float(M,D)
double(M,D)
2.定點型
dec(M,D)
decimal(M,D)ci
特色:class
① M:整數部位+小數部位
D:小數部位
若是超過範圍,則插入臨界值效率
② M和D均可以省略
若是是decimal,則M默認爲10,D默認爲0,
若是是float和double,則會根據插入的數值的精度來決定精度date
③ 定點型的精確度較高,若是要求插入數值的精度較高如貨幣運算等則考慮使用進階
DROP TABLE tab_float; CREATE TABLE tab_float( f1 FLOAT, f2 DOUBLE, f3 DECIMAL ); SELECT * FROM tab_float; DESC tab_float; INSERT INTO tab_float VALUES(123.4523,123.4523,123.4523); INSERT INTO tab_float VALUES(123.456,123.456,123.456); INSERT INTO tab_float VALUES(123.4,123.4,123.4); INSERT INTO tab_float VALUES(1523.4,1523.4,1523.4);
原則:所選擇的類型越簡單越好,能保存數值的類型越小越好數據類型
分類:
較短的文本:
char
varchar
其餘:
binary和varbinary 用於保存較短的二進制
enum 用於保存枚舉
set 用於保存集合
較長的文本:
text
blob (較大的二進制)
特色:
寫法 M的意思 特色 空間的耗費 效率
char char(M) 最大的字符數,能夠省略,默認爲1 固定長度的字符 比較耗費 高
varchar varchar(M) 最大的字符數,不能夠省略 可變長度的字符 比較節省 低
#1.enum類型 CREATE TABLE tab_char( c1 ENUM('a','b','c') ); INSERT INTO tab_char VALUES('a'); INSERT INTO tab_char VALUES('b'); INSERT INTO tab_char VALUES('c'); INSERT INTO tab_char VALUES('m'); #插入失敗 - 空行 INSERT INTO tab_char VALUES('A'); #能夠插入成功 SELECT * FROM tab_char; ################################### #2.set類型 CREATE TABLE tab_set( s1 SET('a','b','c','d') ); INSERT INTO tab_set VALUES('a'); INSERT INTO tab_set VALUES('A,B'); INSERT INTO tab_set VALUES('a,c,d'); SELECT * FROM tab_set;
分類:
date 只保存日期
time 只保存時間
year 只保存年
datetime 保存日期+時間(使用較多)
timestamp 保存日期+時間 (時間範圍截止到2038年,受插入當地時區影響,mysql版本和sql_mode的影響很大)
特色:
字節 範圍 時區等的影響
datetime 8 1000——9999 不受
timestamp 4 1970-2038 受
CREATE TABLE tab_date( t1 DATETIME, t2 TIMESTAMP ); INSERT INTO tab_date VALUES(NOW(),NOW()); SELECT * FROM tab_date; SHOW VARIABLES LIKE 'time_zone'; SET time_zone='+9:00';