數值類型
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());
set和enum類型
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','抽菸,喝酒,喝酒,喝酒')