MySQL基础数据类型

数值类型

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','抽烟,喝酒,喝酒,喝酒')
posted @ 2019-07-09 19:39  叫我大表哥  阅读(336)  评论(0编辑  收藏  举报