• 四、MYSQL数据类型


    目录

    数值数据类型

    整数类型

     定点类型

     浮点类型

    添加数据类型选项

     示例:使用auto_increment自动增长

    字符串字符类型

    ENUM枚举类型


    数值数据类型

    整数类型

    对于整数数据类型,M表示最大显示宽度。最大显示宽度为 255。显示宽度与类型可以存储的值的范围无关

    对于浮点和定点数据类型, M是可以存储的总位数

    • BIT[(M)]

      位值类型。M表示每个值的位数,从 1 到 64。如果 M省略,则默认为 1。

    • TINYINT[(M)] [UNSIGNED] [ZEROFILL]

      一个非常小的整数。有符号范围 -128127。无符号范围是0to 255

    • BOOLBOOLEAN

      这些类型是 的同义词 TINYINT(1)。零值被认为是错误的。非零值被认为是真的:

    示例:0表示错误,非0表示正确 

    1. mysql> SELECT IF(0, 'true', 'false');
    2. +------------------------+
    3. | IF(0, 'true', 'false') |
    4. +------------------------+
    5. | false |
    6. +------------------------+
    7. mysql> SELECT IF(1, 'true', 'false');
    8. +------------------------+
    9. | IF(1, 'true', 'false') |
    10. +------------------------+
    11. | true |
    12. +------------------------+
    13. mysql> SELECT IF(2, 'true', 'false');
    14. +------------------------+
    15. | IF(2, 'true', 'false') |
    16. +------------------------+
    17. | true |
    18. +------------------------+

     定点类型

    DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

    一个压缩的“精确”定点数。 M是总位数(精度),D是小数点后的位数(小数位数)。小数点和(对于负数) -符号不计入 M。如果 D为 0,则值没有小数点或小数部分。最大位数 ( M) 为 DECIMAL65。支持的最大小数位数 ( D) 为 30。如果D省略,则默认为 0。如果M被省略,默认值为 10。

     浮点类型

    FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

    一个小的(单精度)浮点数。允许的值为-3.402823466E+38 to -1.175494351E-38、 01.175494351E-38 to 3.402823466E+38。这些是基于 IEEE 标准的理论限制。根据您的硬件或操作系统,实际范围可能会稍小一些。

    M是总位数,D是小数点后的位数。如果省略M 和D,则将值存储在硬件允许的范围内。单精度浮点数精确到大约 7 位小数。

    添加数据类型选项

    zerofill:

            填充0,影响数字的显示方式,如果一个数字的宽度小于所允许的最大宽度,这个值前面会用0填充,如果声明了zerofill,该列会自动设为unsigned

            

    auto_increment:

            自动增长,适用于整数类型,一个表中只有一个列是可以自动增长的。 

     示例:使用auto_increment自动增长

    1. root@wangsh 21:05 mysql>create table table2(id int auto_increment not null primary key,naeme varchar(20));
    2. Query OK, 0 rows affected (0.01 sec)
    3. root@wangsh 21:08 mysql>desc table2;
    4. +-------+-------------+------+-----+---------+----------------+
    5. | Field | Type | Null | Key | Default | Extra |
    6. +-------+-------------+------+-----+---------+----------------+
    7. | id | int(11) | NO | PRI | NULL | auto_increment |
    8. | name | varchar(20) | YES | | NULL | |
    9. +-------+-------------+------+-----+---------+----------------+
    10. 2 rows in set (0.00 sec)
    11. root@wangsh 21:08 mysql>insert into table2(name) values('cali');
    12. Query OK, 1 row affected (0.00 sec)
    13. root@wangsh 21:08 mysql>select * from table2
    14. -> ;
    15. +----+------+
    16. | id | name |
    17. +----+------+
    18. | 1 | cali |
    19. +----+------+
    20. 1 row in set (0.00 sec)
    21. root@wangsh 21:08 mysql>insert into table2(name) values('jack');
    22. Query OK, 1 row affected (0.01 sec)
    23. root@wangsh 21:08 mysql>select * from table2;
    24. +----+------+
    25. | id | name |
    26. +----+------+
    27. | 1 | cali |
    28. | 2 | jack |
    29. +----+------+
    30. 2 rows in set (0.00 sec)
    31. root@wangsh 21:08 mysql>insert into table2(id,name) values(9,'tom');
    32. Query OK, 1 row affected (0.00 sec)
    33. root@wangsh 21:11 mysql>select * from table2;
    34. +----+------+
    35. | id | name |
    36. +----+------+
    37. | 1 | cali |
    38. | 2 | jack |
    39. | 9 | tom |
    40. +----+------+
    41. 3 rows in set (0.00 sec)
    42. root@wangsh 21:12 mysql>insert into table2(name) values('rose');
    43. Query OK, 1 row affected (0.00 sec)
    44. root@wangsh 21:12 mysql>select * from table2;
    45. +----+------+
    46. | id | name |
    47. +----+------+
    48. | 1 | cali |
    49. | 2 | jack |
    50. | 9 | tom |
    51. | 10 | rose |
    52. +----+------+
    53. 4 rows in set (0.00 sec)

    #################################################################################################

    字符串字符类型

    char和varchar的区别

    ENUM枚举类型

    枚举值必须是带引号的字符串文字

    示例:

    1. root@wangsh 09:30 mysql>create table shirts(name varchar(40), size enum('x-small', 'small', 'medium', 'large', 'x-large'));
    2. Query OK, 0 rows affected (0.00 sec)
    3. root@wangsh 09:31 mysql>desc shirts;
    4. +-------+----------------------------------------------------+------+-----+---------+-------+
    5. | Field | Type | Null | Key | Default | Extra |
    6. +-------+----------------------------------------------------+------+-----+---------+-------+
    7. | name | varchar(40) | YES | | NULL | |
    8. | size | enum('x-small','small','medium','large','x-large') | YES | | NULL | |
    9. +-------+----------------------------------------------------+------+-----+---------+-------+
    10. 2 rows in set (0.00 sec)
    11. root@wangsh 09:31 mysql>INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),
    12. -> ('polo shirt','small');
    13. Query OK, 3 rows affected (0.00 sec)
    14. Records: 3 Duplicates: 0 Warnings: 0
    15. root@wangsh 09:32 mysql>select name, size from shirts;
    16. +-------------+--------+
    17. | name | size |
    18. +-------------+--------+
    19. | dress shirt | large |
    20. | t-shirt | medium |
    21. | polo shirt | small |
    22. +-------------+--------+
    23. 3 rows in set (0.00 sec)

    如果我们插入的是枚举值之外的字符串,会报错

    1. root@wangsh 09:33 mysql>INSERT INTO shirts (name, size) VALUES ('lining','xxxxlarge');
    2. ERROR 1265 (01000): Data truncated for column 'size' at row 1

    ######################################################## 

  • 相关阅读:
    全搞定!阿里巴巴首推“Java进阶必备宝典”,理论+实战,面面俱到!
    Go语言实现AI五子棋智能算法
    c++ builder 6.0 使用TADOQuery ,TADOCommand,TADOConnection
    英文论文(sci)解读复现【NO.21】一种基于空间坐标的轻量级目标检测器无人机航空图像的自注意
    隔山打牛:金融大崩溃
    中海庭罗凯:Prometheus监控Argo Workflow云原生工作流的方法
    mybaits入门
    java集合之List接口实现类常用方法详解
    备战数学建模39-粒子群算法pso进阶应用番外篇2(攻坚战3)
    rabbitmq 日志清理 rabbitmq.conf rabbitmq 日志问题
  • 原文地址:https://blog.csdn.net/qq_48391148/article/details/126067789