• 四、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

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

  • 相关阅读:
    函数,递归以及dom简单操作
    【力扣刷题】只出现一次的数字
    3_springboot_shiro_jwt_多端认证鉴权_Redis缓存管理器.md
    21天学习挑战赛-Java进阶
    ActiveMQ 反序列化漏洞(CVE-2015-5254)特征分析
    mysql 分析事务锁涉及到的几张表
    企业微信获取客户群里用户的unionid;企业微信获取客户详情
    IIoT(智能物联网)的现状、应用及安全
    [附源码]Python计算机毕业设计Django基于java的社区管理系统
    浅谈性能测试稳定性 Constant Throughput Timer(常数吞吐量定时器)
  • 原文地址:https://blog.csdn.net/qq_48391148/article/details/126067789