当前位置:网站首页>Mysql中的数据类型和运算符
Mysql中的数据类型和运算符
2022-08-01 03:41:00 【1 + 1=王】
文章目录
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-1 | 0 ~ 232-1 |
| SMALLINT | -215 ~ 215-1 | 0 ~ 216-1 |
| TINYINT | -128 ~ 127 | 0 ~ 255 |
| MEDIUMINT | -223 ~ 223-1 | 0 ~ 224-1 |
| BIGINT | -263 ~ 263-1 | 0 ~ 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和二进制形式文本数据等。
字符串数据
- 定长字符串CHAR(M):固定长度的字符串。在定义的时候需要定义字符串长度为M(0~255),保存时,在右侧填充空格已达到指定长度。
- 变长字符串VARCHAR(M),长度可变的字符串。M(0~65535)表示最大长度,实际占用为字符串的实际长度加1。
文本类型数据
文本类型可以保存非二进制字符串。当保存或查询文本类型的值时,不删除尾部空格。
| 类型 | 长度 |
|---|---|
| TINYTEXT | 255 |
| TEXT | 255 |
| MEDIUMTEXT | 16777215 |
| LONGTEXT | 4GB |
枚举类型数据
枚举字符串(ENUM)是一个字符串对象,语法格式如下:<字段名> ENUM('值 1', '值2', ..., '值n')
ENUM的特点如下:
- 取值时,在指定的枚举列表中获取,一次只能获取一个。
- 如果创建的成员中有空格,尾部的空格将被自动删除。
- ENUM值的内部用整数表示(索引编号),最多可以有65535个元素。
- ENUM值按照索引顺序排列,空字符串排在非空字符串前面,NULL值排在其他所有枚举值之前。
- ENUM存在默认值。声明为NULL时,默认值为NULL;声明为NOT NULL时,默认值为允许的值列表的第一个元素。
SET类型数据
SET是一个字符串对象,语法格式如下:<字段名> SET('值 1', '值2', ..., '值n')
SET的特点如下:
- SET内部用整数表示(索引编号),最多可以有64个元素;
- SET成员中有空格,尾部的空格将被自动删除。
- SET的值可以从定义的元素值中选择多个联合。
二进制形式的文本数据
二进制数据类型用于存储图像、有格式的文本(Word、Excel等)、音频等数据。
| 数据类型 | 说明 | 长度 |
|---|---|---|
| BIT(M) | 位字段类型 | M |
| BINARY(M) | 固定长度的二进制字符串 | M |
| VARBINARY(M) | 可变长度的二进制字符串 | M+1 |
| TINYBLOB(M) | 非常小的BLOB | 28-1 |
| BLOB(M) | 小的BLOB | 216-1 |
| MEDIUMBLOB(M) | 中等大小的BLOB | 224-1 |
| LONGBLOB(M) | 非常大的BLOB | 231-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 |
边栏推荐
- JS new fun(); 类与实例 JS基于对象语言 只能通过书写构造函数充当类
- 移动端页面秒开优化总结
- Simple and easy to use task queue - beanstalkd
- pdb drug comprehensive database
- A way to deal with infinite debugger
- 787. 归并排序
- button remove black frame
- [FPGA tutorial case 43] Image case 3 - image sobel edge extraction through verilog, auxiliary verification through MATLAB
- August 22 Promotion Ambassador Extra Reward Rules
- ICML2022 | Deep Dive into Permutation-Sensitive Graph Neural Networks
猜你喜欢

The bigger and bigger the project is, I split it like this

Compiled on unbutu with wiringPi library and run on Raspberry Pi

软件测试面试(三)

Difference Between Compiled and Interpreted Languages

对无限debugger的一种处理方式

如何下载Keil包

HIRO: Hierarchical Reinforcement Learning 】 【 Data - Efficient Hierarchical Reinforcement Learning

Software Testing Weekly (Issue 82): In fact, all those who are entangled in making choices already have the answer in their hearts, and consultation is just to get the choice that they prefer.

HCIP (14)

初出茅庐的小李第112篇博客项目笔记之机智云智能浇花器实战(1)-基础Demo实现
随机推荐
2. # 代码注释
[SemiDrive source code analysis] series article link summary (full)
最新 955 不加班的公司名单
Invalid classes inferred from unique values of `y`. Expected: [0 1 2], got [1 2 3]
Game Theory (Depu) and Sun Tzu's Art of War (42/100)
Dart named parameter syntax
MySQL3
一个往年的朋友
[Message Notification] How about using the official account template message?
A way to deal with infinite debugger
HCIP(14)
一个service层需要调用另两个service层获取数据,并组装成最后的数据,数据都是list,缓存如何设计?
TypeScript简化运行之ts-node
Software Testing Interview (3)
How to download the Keil package
<JDBC> 批量插入 的四种实现方式:你真的get到了吗?
带你体验一次类型编程实践
One service layer needs to call the other two service layers to obtain data and assemble it into the final data. The data is all lists. How to design the cache?
初出茅庐的小李第112篇博客项目笔记之机智云智能浇花器实战(1)-基础Demo实现
【愚公系列】2022年07月 .NET架构班 085-微服务专题 Abp vNext微服务网关