Mysql中的数据类型和运算符

举报
1+1=王 发表于 2022/12/16 10:40:50 2022/12/16
【摘要】 Mysql中的数据类型和运算符

Mysql的数据类型

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

数值型数据

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

整数型数据类型

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

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

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

数据类型 无符号数取值范围 有符号数取值范围
INTEGER -2^31^ ~ 2^31^-1 0 ~ 2^32^-1
SMALLINT -2^15^ ~ 2^15^-1 0 ~ 2^16^-1
TINYINT -128 ~ 127 0 ~ 255
MEDIUMINT -2^23^ ~ 2^23^-1 0 ~ 2^24^-1
BIGINT -2^63^ ~ 2^63^-1 0 ~ 2^64^-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。

文本类型数据

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

类型 长度
TINYTEXT 255
TEXT 255
MEDIUMTEXT 16777215
LONGTEXT 4GB

枚举类型数据

枚举字符串(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) 非常小的BLOB 2^8^-1
BLOB(M) 小的BLOB 2^16^-1
MEDIUMBLOB(M) 中等大小的BLOB 2^24^-1
LONGBLOB(M) 非常大的BLOB 2^31^-1

日期时间型数据

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

数据类型 取值范围 长度 格式
YEAR 1901~2155 1 YYYY-MM-DD
TIME -838:59:59~838:59:59 2 HH:MM:SS
DATE 1000-01-01~9999-12-3 3 YYYY
DATETIME 1000-01-01 00:00:00~9999-12-3 23:59:59 8 YYYY-MM-DD HH:MM:SS
TIMESTAMP 1980-01-01 00:00:01 UTC~2040-01-19 03:14:07 UTC 4

Mysql的运算符

算数运算符

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

比较运算符

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

逻辑运算符

运算符 说明 例子 结果
NOT,! SELECT NOT 1 0
AND,&& SELECT 1< AND 0 0
OR, SELECT 1 OR 0 1
XOR 异或 SELECT 1 XOR 1 0
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。