数值类型
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','抽烟,喝酒,喝酒,喝酒')