分類:TINYINT SMALLINT MEDIUMINT INT BIGINThtml
做用:存儲年齡,等級,id,各類號碼等mysql
tinyint 1字節(-128)sql
int 4字節(通常來說不用設置,由於基本夠用)數據庫
bigint 8字節安全
類型存儲範圍:參考圖片<http://www.cnblogs.com/linhaifeng/articles/7233411.htmlsession
類型後面的寬度不能改變字段存儲的大小限制!!!!!測試
強調:對於整型來講,數據類型後的寬度並非存儲限制,而是顯示限制,因此在建立表時,若是字段採用的是整型類型,徹底無需指定顯示寬度, 默認的顯示寬度,足夠顯示完整當初存放的數據code
嚴格模式補充
咱們剛剛在上面設置了char,tinyint,存儲數據時超過它們的最大存儲長度,發現數據也能正常存儲進去,只是mysql幫咱們自動截取了最大長度。但在實際狀況下,咱們應該儘可能減小數據庫的操做,緩解數據庫的壓力,讓它僅僅只管理數據便可,這樣的狀況下就須要設置安全模式htm
show variables like "%mode%"; # 查看數據庫配置中變量名包含mode的配置參數 # 修改安全模式 set session # 只在當前操做界面有效 set global # 全局有效 set global sql_mode ='STRICT_TRANS_TABLES' # 修改完以後退出當前客戶端從新登錄便可
字段限制特色(5,3)前一位表示全部的位數,後一位表示小數個數blog
# 存儲限制 float(255,30) double(255,30) decimal(255,30) # 精確度驗證 create table t9(x float(255,30)); create table t10(x double(255,30)); create table t11(x decimal(65,30)); insert into t9 values(1.111111111111111111111111111111); insert into t10 values(1.111111111111111111111111111111); insert into t11 values(1.111111111111111111111111111111);
最終結果相對數字t9, t10會郵精度缺失, 由此說明decimal的精度會高於double和float,而double的精度會高於float!!!
字符串類型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。該節描述了這些類型如何工做以及如何在查詢中使用這些類型。
create table t10(name char(4)) # 超出四個字符報錯,不夠四個字符空格補全 create table t11(name varchar(4)) # 超出四個字符報錯,不夠四個有幾個就存幾個 # 驗證存儲限制 insert into t12 values('hello'); insert into t13 values('hello'); # 驗證存儲長度 insert into t12 values('a'); #'a ' insert into t13 values('a'); #'a' select * from t12 select * from t13 # 沒法查看真正的結果 select char_length(name) from t12 select char_length(name) from t13 # 仍然沒法查看到真正的結果 """首先應該確定的是在硬盤上存的絕對是真正的數據,但顯示的時候mysql會自動將末尾的空格取掉""" # 若是不想讓mysql幫你作自動去除末尾空格的操做,須要再添加一個模式 set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH"; # 退出客戶端從新登錄 select char_length(x) from t12; #4 select char_length(y) from t13; #1 # 針對char類型,mysql在存儲時會將數據用空格補全存放到硬盤中。可是會在讀出結果的時候自動取掉末尾的空格 """ char與varchar的使用區別 """ name char(5) # 缺點:浪費空間 # 優勢:存取速度都快 egon alex lxx jxx txx name varchar(5) # 缺點:存取速度慢 # 優勢:節省空間 1bytes+egon 1bytes+alex 1bytes+lxx 1bytes+jxx 1bytes+txx
分類
測試
create table student( id int, name char(16), born_year year, birth date, study_time time, reg_time datetime ); insert into student values(1,'egon','2019','2019-05-09','11:11:00','2019-11-11 11:11:11');
分類
測試
create table user( id int, name char(16), gender enum('male','female','others') ); insert into user values(1,'jason','xxx'); # 報錯 insert into user values(2,'egon','female'); # 正確! create table teacher( id int, name char(16), gender enum('male','female','others'), hobby set('read','sleep','sanna','dbj') ); insert into teacher values(1,'egon','male','read,sleep,dbj'); # 集合也能夠只存一個