• Mysql中的数据类型和运算符


    Mysql的数据类型

    Mysql支持数值型、文本型和日期时间型三大数据类型。

    数值型数据

    数值型是描述定量数据的数据类型,包括整数型数据类型和浮点型数据类型。

    整数型数据类型

    整数型数据类型包括INTEGER、SMALLINT、TINYINT、MEDIUMINT和BIGINT五种长度不同的类型。

    数据类型说明字节数
    INTEGER普通大小的整数4
    SMALLINT较小的整数2
    TINYINT很小的整数1
    MEDIUMINT中等大小的整数3
    BIGINT大整数8

    根据占用字节数可以求出每一种数据类型的取值范围,例如:
    TINYINT需要1字节(即8bits),那么TINYINT无符号数的取值的最大值为28-1=255;有符号数的最大值为27-1=127。

    数据类型无符号数取值范围有符号数取值范围
    INTEGER-231 ~ 231-10 ~ 232-1
    SMALLINT-215 ~ 215-10 ~ 216-1
    TINYINT-128 ~ 1270 ~ 255
    MEDIUMINT-223 ~ 223-10 ~ 224-1
    BIGINT-263 ~ 263-10 ~ 264-1

    浮点型型数据类型

    Mysql中浮点型数据类型包括浮点型(单精度FLOAT、双精度DOUBLE)和定点型(DECIMAL)。

    此类数据可以用(M,N)来表示,其中M称为精度,表示总位数;N称为标度,表示小数的位数。

    例如:

    • FLAOT(8,3)表示是FLOAT类型,数据长度为8,小数点后保留3位。

    字符型数据

    字符型数据可以用来存储字符串、图片和声音的二进制数据。
    MYsql中的字符型数据有CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM、SET和二进制形式文本数据等。

    字符串数据

    1. 定长字符串CHAR(M):固定长度的字符串。在定义的时候需要定义字符串长度为M(0~255),保存时,在右侧填充空格已达到指定长度。
    2. 变长字符串VARCHAR(M),长度可变的字符串。M(0~65535)表示最大长度,实际占用为字符串的实际长度加1。

    文本类型数据

    文本类型可以保存非二进制字符串。当保存或查询文本类型的值时,不删除尾部空格。

    类型长度
    TINYTEXT255
    TEXT255
    MEDIUMTEXT16777215
    LONGTEXT4GB

    枚举类型数据

    枚举字符串(ENUM)是一个字符串对象,语法格式如下:
    <字段名> ENUM('值 1', '值2', ..., '值n')

    ENUM的特点如下:

    1. 取值时,在指定的枚举列表中获取,一次只能获取一个。
    2. 如果创建的成员中有空格,尾部的空格将被自动删除。
    3. ENUM值的内部用整数表示(索引编号),最多可以有65535个元素。
    4. ENUM值按照索引顺序排列,空字符串排在非空字符串前面,NULL值排在其他所有枚举值之前。
    5. ENUM存在默认值。声明为NULL时,默认值为NULL;声明为NOT NULL时,默认值为允许的值列表的第一个元素。

    SET类型数据

    SET是一个字符串对象,语法格式如下:
    <字段名> SET('值 1', '值2', ..., '值n')

    SET的特点如下:

    1. SET内部用整数表示(索引编号),最多可以有64个元素;
    2. SET成员中有空格,尾部的空格将被自动删除。
    3. SET的值可以从定义的元素值中选择多个联合。

    二进制形式的文本数据

    二进制数据类型用于存储图像、有格式的文本(Word、Excel等)、音频等数据。

    数据类型说明长度
    BIT(M)位字段类型M
    BINARY(M)固定长度的二进制字符串M
    VARBINARY(M)可变长度的二进制字符串M+1
    TINYBLOB(M)非常小的BLOB28-1
    BLOB(M)小的BLOB216-1
    MEDIUMBLOB(M)中等大小的BLOB224-1
    LONGBLOB(M)非常大的BLOB231-1

    日期时间型数据

    Mysql中的日期和时间数据包括YEAR、TIME、DATE、DATETIME和TIMESTAMP。

    数据类型取值范围长度格式
    YEAR1901~21551YYYY-MM-DD
    TIME-838:59:59~838:59:592HH:MM:SS
    DATE1000-01-01~9999-12-33YYYY
    DATETIME1000-01-01 00:00:00~9999-12-3 23:59:598YYYY-MM-DD HH:MM:SS
    TIMESTAMP1980-01-01 00:00:01 UTC~2040-01-19 03:14:07 UTC4

    Mysql的运算符

    算数运算符

    运算符说明例子结果
    +SELECT 1+12
    -SELECT 1-10
    *SELECT 2*12
    /SELECT 5/22
    %,MOD取余SELECT 5%21

    比较运算符

    运算符说明例子结果
    =等于SELECT 1=20
    <=>安全等于SELECT 1<=>20
    <>, !=不等于SELECT 2<>11
    <=小于等于SELECT 1<=21
    >=大于等于SELECT 1>=20
    >大于SELECT 1>20
    <小于SELECT 1<21
    IS NULL是否为空SELECT IS NULL1
    IS NOT NULL是否不为空SELECT ‘aaa’ IS NOT NULL1
    BETWEEN AND是否在两个值之间SELECT 2 BETWEEN 1 AND 31

    逻辑运算符

    运算符说明例子结果
    NOT,!SELECT NOT 10
    AND,&&SELECT 1< AND 00
    OR,SELECT 1 OR 01
    XOR异或SELECT 1 XOR 10
  • 相关阅读:
    xss攻击
    云原生爱好者周刊:在 Linux 系统中运行 FreeBSD 子系统 | 2022-09-05
    递推算法(c++)
    css知识学习系列(17)-每天10个知识点
    Axure RP9安装,正版授权,汉化
    分享一个由systemd管理tomcat的tomcat.service文件的编写
    07_用队列实现栈
    Code Llama: Open Foundation Models for Code
    JAVA入门——方法引用
    【Java】阿拉伯数字转汉字(完全符合中文阅读习惯)(支持所有整数类型)
  • 原文地址:https://blog.csdn.net/weixin_43598687/article/details/126069004