• MySQL基本数据类型


    整型

    '''
        分类
            TINYINT SMALLINT MEDIUMINT INT BIGINT
        作用
            存储年龄,等级,id,号码等等
            图片介绍地址:https://images2017.cnblogs.com/blog/1036857/201708/1036857-20170801181433755-146301178.png
        以TINYINT作验证
            是否有符号
                默认情况下是带符号的
            超出会如何
                超出限制只存最大可接收值
            create table t9(id tinyint);
            insert into t9 values(-129),(256); 报错:ERROR 1264 (22003): Out of range value for column 'id' at row 1
        约束条件之unsigned(无符号)
            create table t10(id tinyint unsigned);
            insert into t10 values(-1),(256); 和上面报错一样
        create table t11(id int);
        insert into t11 values(-1),(256);
        int默认也是带符号的
        整型默认情况下都是带有符号的
        针对整型,括号内的宽度到底是干嘛的?(作显示,并不是指只能存多少位)
            create table t12(id int(8));
            insert into t12 values(123456789);
            insert into t12 values(1);
        特例:只有整型括号里面的数字不适表示限制位数
        id int(8)
            如果数字没有超出8位,那么默认用空格填充至8位
            如果数字超出了8位,那么有几位就存几位(但是还是要遵守最大范围)
        约束条件之zerofill
            create table t13(id int(8) unsigned zerofill);
                用0填充至8位
        总结:
            针对整型字段,括号内无需指定宽度,因为它默认的宽度已经足够显示所有的数据了
    
    '''

    浮点型

    '''
        分类
            float double decimal
        作用
            身高,体重,薪资...
        存储限制
            float(255,30) # 总共255位,小数部分占30位
            double(255,30) # 总共255位,小数部分占30位
            decimal(65,30) # 总共64位,小数部分占30位
        精确度验证
            create table t15(id float(255,30));
            create table t16(id double(255,30));
            create table t17(id decimal(65,30));
            
            insert into t15 values(1.111111111111111111111111111111);
            insert into t16 values(1.111111111111111111111111111111);
            insert into t17 values(1.111111111111111111111111111111);
            
            精确度:float<double<decimal
        要结合实际应用场景,三者都能使用
        扩展:其实在实际生产中,很多看似需要用整型或者浮点型存储的数据,内部可能都是用的字符类型存储
    '''

    字符类型

    '''
        分类
            char
                定长;char(4)数据超过四个字符直接报错,不够四个字符空格补全
            varchar
                变长;varchar(4)数据超过四个字符直接报错,不够有几个存几个
        create table t18(name char(4));
        create table t19(name varchar(4));
        insert into t18 values('a');
        insert into t19 values('a');
        介绍一个小方法char_length统计字段长度
            select char_length(name) from t18;
            select char_length(name) from t19;
            首先可以肯定的是char硬盘上存的绝对是真正的数据,带有空格;但是在显示的时候,mysql会自动将多余的空格剔除
            再次修改sql_mode,让MySQL不要做自动剔除操作
                set global sql_mode = 'strict_trans_tables,pad_char_to_full_length'; 因为是修改,所以之前的严格模式也需要带上
        char与varchar对比
            char
                缺点:浪费空间
                优点:存取都很简单,直接按照固定的字符存储数据即可
                jason egon mike
                存按照字符长度存,取也直接按照字符长度取
            varchar
                有点:节省空间
                缺点:存取较为麻烦
                1bytes+jason 1bytes+egon 1bytes+mike
                存的时候需要制作报头,取的时候也需要先读取抱头,之后才能读取真实数据
            以前基本上都是用的char,其实现在用varchar的也挺多
            后面使用哪个都行,建议使用varchar
            补充:
                进来公司之后你完全不需要考虑字段类型和字段名,因为产品给你发的邮件上已经全部指明了
    '''

    时间类型

    '''
        date
            年月日2021-8-7
        datetime
            年月日时分秒2021-8-7 10:10:10
        time
            时分秒10:10:10
        Year
            2021
        create table student(
            id int,
            name varchar(16),
            born_year year,
            birth date,
            study_time time,
            reg_time datetime
        );
        insert into student values(1,'egon','2020','1880-11-11','11:11:11','2021-11-11 11:11:11');
    '''

    枚举与集合类型

    '''
        分类
            枚举(enum):多选一
            集合(set):多选多(也可以单选)
        具体使用
            create table user(
                id int,
                name char(16),
                gender enum('male','female','others')
            );
            insert into user values(1,'jason','male');
            insert into user values(2,'egon','xxxooo'); 报错
            # 枚举字段,后期在存数据的时候只能从枚举里面选择一个存储
            create table teacher(
                id int,
                name char(16),
                gender enum('male','female','others'),
                hobby set('read','DBJ','hecha')
            );
            insert into teacher values(1,'jason','male','read,DBJ');
            insert into teacher values(2,'egon','male','read');
            insert into teacher values(3,'mike','others','生蚝'); 报错
            # 集合可以只写一个,但是不能写没有列举的
    '''
    while True: print('studying...')
  • 相关阅读:
    学过C#之后,对javascript数组容易犯的错误
    关于最优种植区评价问题
    JavaScript全局变量与局部变量
    ArcGIS API for Javascript 图层切换渐变效果实现
    Motan在服务provider端用于处理request的线程池
    转:Log4j 日志体系结构
    zookeeper的开机自启动
    maven的多模块项目搭建
    scala中json与对象的转换
    社区帖子全文搜索实战(基于ElasticSearch)
  • 原文地址:https://www.cnblogs.com/xuewei95/p/15113232.html
Copyright © 2020-2023  润新知