漆黑的夜空,總能讓人產生無數的遐想,不知屏幕前的你,這周過得怎麼樣?玩耍也好,"修煉"也好,總之時間在不斷從咱們各處穿梭而過,sql
但你既然都點進來了,那在這短短的5分鐘內我就來帶你領來溫習一下Mysql數據類型吧!測試
#常見的數據類型 數值型: 整型 小數: 定點數 浮點型 字符型: 較短的文本:char,varchr 較長的文本:text,blob(較長的二進制數據)
一.整型spa
分類: tinyint,smallint,mediumint,int/integer,bigint 1 2 3 4 8 特色: ①若是不設置無符號仍是有符號,默認是有符號,若是想設置無符號,
須要添加UNSIGNED關鍵字。 ②若是插入的數值超出了整數的範圍,會報out if range異常,而且插入臨界值 ③若是不設置無符號和有符號,有符號的Int長度默認11,無符號Int的默認長度10 ④長度表明了顯示的最大寬度,若是不夠用會用0在左邊填充, 但必須搭配ZEROFILL使用。
#案例:1.如何設置有符號和無符號 #有符號的 CREATE TABLE tab_int( t1 INT ); DESC tab_int; 插入一條數據 INSERT INTO tab_int VALUES(-123456); /* Affected rows: 1 Found rows: 0 Warnings: 0 Duration for
1 query: 0.016 sec. */ /* 受影響的行:1 找到的行:0 警告:0 1 查詢的持續時間:0.016 秒*/ 刪除表 DROP TABLE IF EXISTS tab_int; #從新建立表 建立t2爲無符號的數據類型 CREATE TABLE tab_int( t1 INT, t2 INT UNSIGNED ); DESC tab_int;
#插入一條數據
#插入一條數據 INSERT INTO tab_int VALUES(-123456,0); SELECT * FROM tab_int;
#長度設置,長度是不表明數據範圍,只是表明佔術數據的寬度。數據範圍由類型決定。 設置了寬度,若是不夠會用0去填充。 刪除表,再次建立 DROP TABLE IF EXISTS tab_int; CREATE TABLE tab_int( t1 INT(7), t2 INT(7) UNSIGNED ); DESC tab_int;
插入數據,查看數據 INSERT INTO tab_int VALUES(123,123); SELECT * FROM tab_int;
爲何沒0填充? 刪除表,再次建立,給字段後添加ZEROFILL關鍵字,
添加ZEROGILL後變爲無符號數據類型。 DROP TABLE IF EXISTS tab_int; CREATE TABLE tab_int( t1 INT(7) ZEROFILL, t2 INT(7) UNSIGNED );
插入數據,查看數據 INSERT INTO tab_int VALUES(123,123); SELECT * FROM tab_int;
二.小數3d
備註:±正負號:按住Alt再用小鍵盤輸入0177 分類 1.浮點型 float(M,D) double(M,D) 2.定點型 dec(M,D) decimal(M,D) 定點型 特色 ① M:整數部位+小數部位 D: 小數部位 若是超過範圍,則插入臨界值 ② M和D均可以省略 若是是decimal,則M默認爲是10,D默認爲0(若是超過會報錯) 若是是float和double,則會根據插入的數值精度來決定精度 ③ 定點型的精確度較高,若是要求插入數值的精度較高如 貨幣運算等則考慮使用 備註:通常用float就行,節省空間
建表數據類型選擇的原則:
所選擇的類型越簡單越好,能保存數據類型越小越好。
#測試M與D CREATE TABLE tab_float( f1 FLOAT(5,2), f2 DOUBLE(5,2), f3 DECIMAL(5,2) ); DESC tab_float;
插入數據,正常執行 INSERT INTO tab_float VALUES(123.45,123.45,123.45); SELECT * FROM tab_float;
再次插入數據 INSERT INTO tab_float VALUES(123.456,123.456,123.456);
查詢數據 SELECT * FROM tab_float;
四捨五入了 再次插入數據 INSERT INTO tab_float VALUES(123.4,123.4,123.4); SELECT * FROM tab_float;
再次插入,測試 INSERT INTO tab_float VALUES(1523.4,1523.4,1523.4); 超出範圍報錯,沒法插入
先刪除,再次建立tab_float表,省略後(M,D),正常執行 DROP TABLE tab_float; CREATE TABLE tab_float( f1 FLOAT, f2 DOUBLE, f3 DECIMAL ); SELECT * FROM tab_float;
再次插入數據,f3報錯 INSERT INTO tab_float VALUES(123.4523,123.4523,123.4523); DESC tab_float;
char和varchar類型
說明:用來保存MySql中較短的字符串
分類
較短的文本:
cahr varchar
特色:
備註: 固定的用char如性別只有男或女 姓名用varchar 不一樣民族的姓名長度不同 char(M)能夠省略M,默認爲1 varchar不能夠省略 較長的文本: text blob(較大的二進制) 位類型
Binary和varbinary類型(較短的二進制)
說明:類是與char與varchar,不一樣的是它們包含了二進制字符串不包
含非二進制字符串。
Enum類型(一娜姆)
說明:又稱爲枚舉類型哦,要求插入的值必須屬於列表中指定的值之一。
其餘:
binary和varbinary用於保存較短的二進制
enum用於保存枚舉
set用於保存集合
建表 CREATE TABLE tab_char( c1 ENUM('E','S','W','N') ); #東—East,西—West,南—South,北—North 插入數據 INSERT INTO tab_char VALUES('w'); INSERT INTO tab_char VALUES('W'); INSERT INTO tab_char VALUES('N');
Affected rows: 3 Found rows: 0 Warnings: 0 Duration for 3 queries:
0.015 sec.
受影響的行:3 找到的行:0 警告:3 個查詢的 0 持續時間:0.015 秒。
性別(男女)與季節(春夏秋冬)也能夠考慮使用枚舉類型。 Set類型 說明:和Enum類型相似,裏面能夠保存0~64個成員。 和Enum類型最大的區別是: SET類型能夠選取多個成員, 而Enum只能選一個,根據成員個數不一樣,存儲所佔的字節也不一樣。
#建表測試 CREATE TABLE tab_set( s1 SET('c','x','q','d') ); DESC tab_set;
#插入數據,初夏秋冬 INSERT INTO tab_set VALUES('c'); INSERT INTO tab_set VALUES('c,x'); INSERT INTO tab_set VALUES('c,q,d'); SELECT * FROM tab_set; #插入成功,不區分大小寫,大寫插入,小寫入庫
1.Timestamp支持的時間範圍較小, 取值範圍:1970010108001--2038年的某個時間 Datetime的取值範圍:1000-1-1--9999-12-31
2.timestamp和實際時區有關,更能反映實際的日期, 而datetime則只能反映出插入時的當地時區。 3.timestamp的屬性收Mysql版本和SQLMode的影響很大。 建表 CREATE TABLE tab_date( t1 DATETIME, t2 TIMESTAMP ); 插入數據 DESC tab_date;
INSERT INTO tab_date VALUES(NOW(),NOW());
SELECT * FROM tab_date;
查看時區 SHOW VARIABLES LIKE 'time_zone'; 本地時區 SET time_zone='+8:00';
修改時區,改成東9區 SET time_zone='+9:00';
再次查詢 SELECT * FROM tab_date;
小結: 分類: date只保存日期 time只保存時間 year只保存年 datetime保存日期+時間 timestamp保存日期+時間 特色: 字節 範圍 時區等影響 datetime 8 1000-9999 不受 timestamp 4 1970-2038 受
既然都看到這裏了,但願你能有所收穫。要不也動動你的小手手也練習一下???code