• mysql数据库基础:数据类型介绍


    mysql数据库基础

    1、整型

    分类

    整数类型字节范围
    Tinyint1有符号:-128~ 127,无符号:0~255
    Smallint2有符号:-32768~32767,无符号
    Mediumint3有符号:-8388608~ 8388607
    Int/integer4有符号:-2147483648 ~ 2147483647
    Bigint8有符号:-9223372036854775808 ~ 9223372036854775807,无符号:0~ 9223372036854775807*2+1

    特点

    1、如何设置无符号和有符号

    create table 表名(
    	t1 INT, # 设置有符号(默认)
    	t2 INT UNSIGNED # 设置无符号
    	# 如果添加的是负数,那么结果查询后显示为0
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、如果插入的数据超过整型的取值范围,会报out of range异常,并且插入临界值。

    3、如果不设置长度,会有默认长度

    2、小数

    2.1 分类

    浮点型

    浮点数类型字节范围
    float(M,D)4±1.75494351E^ 38~±3.402823466EE^38
    double(M,D)8很大~~~

    定点型

    定点数类型字节范围
    DEC(M,D),DECIMAL(M,D)M+2最大取值范围与double相同,给定decimal的有效取值范围由M和d决定

    2.2 特点

    (1)M和D的含义
    M:整数部分位数+小数部分位数
    D:保留的小数位数(四舍五入)
    (2)M和D都可以省略
    (3)如果时decimal定点型,则M默认为10,D默认为0
    如果是float和double类型,则会根据插入的数值的精度来决定精度
    (4)定点型的精确度较高,如果要求插入数值的精度较高,如货币运算等则考虑使用定点型。

    3、字符型

    3.1 较短的文本

    字符串类型最多字符数描述及存储需求区别
    char(M)MM为0~255之间的整数固定长度的字符,比较耗费空间,效率高点
    varchar(M)MM为0~65535之间的整数可变长度的字符,没那么耗费空间,效率低点

    3.2 较长的文本

    字符串类型描述及存储需求
    text存储长文本类型
    blob存储图片类型

    4、日期型

    4.1 分类

    日期类型字节数最小值最大值
    date4100-1-019999-12-31
    time3-838:59:59838:59:59
    year119012155
    datetime81000-01-01 00:00:009999-12-31 23:59:59
    timestamp419702038年的某个时刻

    补充:
    datetime和timestamp的区别
    (1)timestamp支持的时间范围较小,datetime的取值范围相对较大
    (2)timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区
    (3)timestamp的属性收mysql版本和sqlMode的影响很大

    5、枚举类型(Enum)

    要求插入的值必须属于列表中指定的值之一。
    例如:

    # 建表,定义一个枚举类型的数据
    create table tab_char(
    	c1 ENUM('a','b','c')
    );
    
    # 插入值
    insert into tob_char values('a'),('b'),('c');
    # 如果插入列表意外的值,则会报错
    insert into tob_char values('m'); # 报错
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    6、set(类型)

    set用来保存集合
    和Enum类型类似,里面可以保存0~64个成员。
    和Enum类型最大的区别是:set类型一次可以选取多个成员,而Enum只能选一个。根据成员个数不同,存储所占的字节也不同
    在这里插入图片描述

    • 例如
    create table tab_set(
    	s1 SET('a','b','c','d')
    )
    
    insert into tab_set values('a');
    insert into tab_set values('a,b');
    insert into tab_set values('a,b,c');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    结果
    在这里插入图片描述

  • 相关阅读:
    Web网上订购系统开题报告详解
    C++布隆过滤器和哈西切分
    美国封锁激励中国制造业数字化转型的崛起 | 百能云芯
    JAVA最全面试题汇总基础篇(四)
    uniapp抽取组件绑定事件中箭头函数含花括号无法解析
    《MATLAB智能算法30个案例》:第2章 基于遗传算法和非线性规划的函数寻优算法
    盘点 MySQL 创建内部临时表的所有场景
    通用结构化剪枝DepGraph
    08-Stream流计算
    报错Failed to allocate graph: MYRIAD device is not opened.
  • 原文地址:https://blog.csdn.net/lalala_dxf/article/details/125504765