int:
create table i1(id1 int,id2 tinyint,id3 int unsigned);
create table i2(id1 int(2),id2 int(11)); 對int類型的長度進行的約束無效 給字段添加一個unsigned表示無符號 float: create table f1(f float(5,2),d double(5,2),d2 decimal(5,2)); create table f2(f float,d double,d2 decimal); create table f3(d double,d2 decimal(65,30)); float精確到小數點後5位 double能多精確一些位數,但仍然存在不精確的狀況 decimal默認是整數,可是經過設置,最多能夠表示到小數點後30位
char:能表示的長度小,浪費存儲空間,讀寫速度快(定長字符串);
char(5) 'abc' 'abc ' 'abcde' 在顯示的時候會去掉全部空格顯示,對用戶的視覺形成欺騙 varchar: 能表示的長度大,節省存儲空間,讀寫效率慢(變長字符串) varchar(5) 'ab'-->'ab2' 'abc'-->'abc3' 'abcde'-->'abcde5' 越是長度固定char節省空間,越是長度不固定varchar節省空間
datatime:
now()表示當前時間
year now(),2019 date now(),20191010 '2019-01-01' time now(),121212 '12:12:12' datetime now(),20191010121212,'2019-01-01 12:12:12' timestamp 只能表示到2028年 一幫不用他表示時間
建立表: create table time1(y year,d date,t time); create table time2(dt datetime,ts timestamp); create table time2(dt datetime default current_timestamp,ts timestamp); 人爲設置datetime類型的默認值是當前時間 向表中添加數據: insert into time1 values(now(),now(),now());
enum:枚舉,單選,且自動剔除不存在的選項
enum('male','female') set:集合,多選,自動剔除不存在的選項,自動去重 set('洗腳','洗頭','抽菸','喝酒','燙頭') # create table es(name char(10),sex enum('male','female'),hobby set('洗腳','洗頭','抽菸','喝酒','燙頭')); # insert into es values('太白','male','燙頭,抽菸,洗腳,按摩'); # insert into es values('alex','人妖','燙頭'); # insert into es values('寶元','male','抽菸,喝酒,喝酒,喝酒')