• mysql数据常见类型


    整数类型(默认是自带符号的)

    create table t2(id int unsigned)无符号类型;
    create table t3(id int(括号内是屏幕的显示位数) zerofill);

    浮点型

    定点数类型 dec等同于decimal
    浮点类型 float double
    float (m,d)[unsigned][zerofill] m是数字总数,d是小数总数,m最大是255,d最大是30
    double (m,d)[unsigned][zerofill] m是数字总数,d是小数总数,m最大是255,d最大是30
    decimal(m,d)[unsigned][zerofill] m是数字总数(符号不算),d是小数总数,m最大是65,d最大是30

    日期类型

    create table t1(id int,name char(20),birth_year year,birthday date,class_time time,reg_time datetime);
    1 | tang | 2022 | 2022-06-30 | 11:16:35 | 2022-06-30 11:16:35

    datetime与timestamp的区别
    datetime是1001-9999年 timestamp是1970-2038年
    datetime存储时间与时区无关,而timestamp与时区有关
    datetime使用8字节,timestamp则是4个字节
    datetime默认值是null,timestamp不是,默认是当前时间

    字符类型

    char 定长
    varchar 变长
    select char_length(name) from t1; # 查询字符数(char 默认会将末尾的0删除)
    如果想要char不删除多余的0,需要在mysql命令行进行配置
    SET sql_mode = ‘PAD_CHAR_TO_FULL_LENGTH’;
    那么在查询方面还是存储方面的话,能用char就不用varchar,一些存进去就不常用的数据可以用varchar
    varchar无论是查询方面还是存储方面都比不上char,仅仅只是在存储大小方面比char要更节省罢了
    eg:
    char类型的存储
    char(5) 可以看到因为固定长度的关系所以说看的很清晰
    ** |**|||***|
    varchar类型的存储
    varchar(5) 可以看到varchar存储的时候因为没固定长度的说法所以看着很乱,它自己搞了一个头部用来存放字符的大小,所以说查询的时候就很麻烦,要先查看这个字节数,再查你需要的数据
    (字节数)(数据)(字节数)(数据)(字节数)(数据)

    枚举类型与集合类型

    enum 单选
    set 多选
    mysql> create table student(id int,name char,age int,sex enum(‘male’,‘female’,‘other’),hobby set(‘football’,‘basketball’,‘swim’));
    Query OK, 0 rows affected (0.03 sec)

    mysql> desc student;
    ±------±------------------------------------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±------±------------------------------------±-----±----±--------±------+
    | id | int(11) | YES | | NULL | |
    | name | char(1) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    | sex | enum(‘male’,‘female’,‘other’) | YES | | NULL | |
    | hobby | set(‘football’,‘basketball’,‘swim’) | YES | | NULL | |
    ±------±------------------------------------±-----±----±--------±------+
    5 rows in set (0.01 sec)

    mysql> insert into student values(1,‘‘,23,’‘,’***’);
    Query OK, 1 row affected, 3 warnings (0.01 sec)

    mysql> select * from student; 可以看到输入没有的数据,枚举和集合这块都是空值,不会报错
    ±-----±-----±-----±-----±------+
    | id | name | age | sex | hobby |
    ±-----±-----±-----±-----±------+
    | 1 | * | 23 | | |
    ±-----±-----±-----±-----±------+
    1 row in set (0.00 sec)

    mysql> insert into student values(2,‘*’,23,‘male’,‘football’);
    Query OK, 1 row affected (0.01 sec)

    mysql> select * from student;
    ±-----±-----±-----±-----±---------+
    | id | name | age | sex | hobby |
    ±-----±-----±-----±-----±---------+
    | 1 | * | 23 | | |
    | 2 | * | 23 | male | football |
    ±-----±-----±-----±-----±---------+
    2 rows in set (0.00 sec)

  • 相关阅读:
    NodeMCU ESP8266构建Web Server网页端控制设备
    GBASE 8A v953报错集锦38--orato8a 指定 parallel 参数全表导出时前几分钟无数 据写入
    看我简单教会你如何按关键字搜索淘宝商品
    【IC设计】边沿检测电路(上升沿、下降沿、双沿,附带源代码和仿真波形)
    8.并发编程之Automic&Unsafe魔法类详解
    react native中如何使用webView调用腾讯地图选点组件
    免费无版权可商用资源|自媒体创业者、设计师、电商商家必备
    安卓常见设计模式13------过滤器模式(Kotlin版)
    ISP图像处理Pipeline
    SSM甜品店系统计算机毕业论文java毕业设计选题源代码
  • 原文地址:https://blog.csdn.net/LOVE_jianshen/article/details/126828139