MySQL 数据库中的数据类型
整数类型
标准 SQL 中支持 INTEGER 和 SMALLINT 这两种类型,MySQL 数据库除了支持这两种类型以外,还扩展支持了 TINYINT、MEDIUMINT 和 BIGINT
| 整数类型 | 字节数 | 无符号数的取值范围 | 有符号数的取值范围 |
|---|---|---|---|
| TINYINT | 1 | (0,255) | (-128,127) |
| SMALLINT | 2 | (0,65535) | (-32768,32767) |
| MEDIUMINT | 3 | (0,16777215) | (-8388608,8388607) |
| INT | 4 | (0,4294967295) | (-2147483648,2147483647) |
| INTEGER | 4 | (0,4294967295) | (-2147483648,2147483647) |
| BIGINT | 8 | (0,18446744073709551615) | (-9223372036854775808,9223372036854775807) |
浮点数类型和定点数类型
数据表中用浮点数类型和定点数类型来表示小数,浮点数类型包括单精度浮点数(FLOAT)和双精度浮点数(DOUBLE),定点数类型就是 DECIMAL
| 类型 | 字节数 | 负数的取值范围 | 非负数的取值范围 |
|---|---|---|---|
| FLOAT | 4 | (-3.402823466E+38,-1.175494351E-38) | 0,(1.175494351E-38,3.402 823466E+38) |
| DOUBLE | 4 | (-1.7976931348623157E+308,-2.2250738585072014E-308) | 0,(2.2250738585072014E-308,1.7976931348623157 E+308) |
| DECIMAL(M,D) | M+2 | 取决于 M 和 D | 取决于 M 和 D |
FLOAT 和 DOUBLE 类型存储数据时存储的是近似值,DECIMAL 存储的是字符串,因此提供了更高的精度。在金融系统中,表示货币金额的时候会优先考虑 DECIMAL 类型;在一般的价格体系,比如购物平台的商品标价,一般用 FLOAT 类型即可
日期和时间类型
每种日期与时间类型都有一个有效范围如果插入的值超过这个范围,系统就会报错,并将零值插入到数据库
| 类型 | 字节数 | 取值范围 | 零值 |
|---|---|---|---|
| YEAR | 1 | 1901 ~ 2155 | 0000 |
| DATE | 4 | 1000-01-01 ~ 9999-12-31 | 0000:00:00 |
| TIME | 3 | -838:59:59 ~ 838:59:59 | 00-00-00 |
| DATETIME | 8 | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 0000-00-00 00:00:00 |
| TIMESTAMP | 4 | 19700101080001 ~ 2038011911407 | 00000000000000 |
字符串类型
1. CHAR 和 VARCHAR 类型
CHAR 类型和 VARCHAR 类型都在创建表时指定了最大长度,CHAR 类型的长度是固定的,其长度可以是 0 ~ 255 的任意值。而 VARCHAR 类型的长度是可变的,其最大值可以取 0 ~ 65535 之间的任意值,VARCHAR 类型实际占用的空间为字符串的实际长度加一,这样可以有效节约系统的空间
2. TEXT 类型
TEXT 类型是一种特殊的字符串类型,各种 TEXT 类型的区别在于允许的长度和存储空间不同
| 类型 | 允许的长度 | 存储空间 |
|---|---|---|
| TINYTEXT | 0-255 | 值的长度+2个字节 |
| TEXT | 0-65535 | 值的长度+2个字节 |
| MEDIUMTEXT | 0-16772150 | 值的长度+3个字节 |
| LONGTEXT | 0-4294967295 | 值的长度+4个字节 |
3. ENUM 类型
ENUM 类型又称枚举类型,在创建表时,ENUM 类型的取值范围以列表的形式指定
属性名 ENUM('值1', '值2', ..., '值n')
- 属性名:指字段的名称
- 值n:表示列表中的第 n 个值
ENUM 类型的值只能取列表中的某一个元素,取值列表最多能有 65535 个值。列表中的每个值独有一个顺序排列的编号,MySQL 存入的是这个编号,而不是列表中的值
如果 ENUM 类型加上了 NOT NULL 属性,其默认值为取值列表的第一个元素。如果不加 NOT NULL 属性,ENUM 类型将允许插入 NULL,而且 NULL 为默认值
4. SET 类型
在创建表时,SET 类型的取值范围就以列表的形式指定了
属性名 SET('值1', '值2', ..., '值n')
参数和 ENUM 一致,SET 类型的值可以取列表中的一个或多个元素,取多个元素时,不同元素之间用逗号隔开,SET 类型的值最多只能是由 64 个元素构成的组合
二进制类型
二进制型是存储二进制数据的数据类型
| 类型 | 取值范围 |
|---|---|
| BINARY(M) | 字节数为M,允许长度为0~M的定长二进制字符串 |
| VARBINARY (M) | 允许长度为0~M的变长二进制字符串,字节数为值的长度加1 |
| BIT(M) | M位二进制数据,M最大值为64 |
| TINYBLOB | 可变长二进制数据,最多255个字节 |
| BLOB | 可变长二进制数据,最多(2^16-1)个字节 |
| MEDIUMBLOB | 可变长二进制数据,最多(2^24-1)个字节 |
| LONGBLOB | 可变长二进制数据,最多(2^32-1)个字节 |
1. BINARY 和 VARBINARY 类型
BINARY 类型的长度是固定的,不足最长长度的空间有 '\0' 补全
VARBINARY 类型的长度是可变的,在最大范围内使用多少就分配多少
2. BIT 类型
例如,BIT(4) 就是指定数据类型为 BIT 类型,长度为 4,若存储的数据是 0 ~ 15,因为变成二进制后的 15 的值为 1111,则其长度为 4。如果插入的值为 16,其二进制数为 10000,长度为 5 超过最大长度,则插入失败
3. BLOB 类型
BLOB 用来保存数据量很大的二进制数据,如图片等。BLOB 类型与 TEXT 类型类似,不同在于 BLOB 类型用于存储二进制数据,根据其二进制编码进行比较和排序,而 TEXT 类型是以文本模式进行比较和排序的
JSON 类型
在 MySQL 中,JSON 值是以字符串形式写入的,MySQL 会对字符串进行解析,如果不符合 JSON 格式,那么写入将失败
| 名称 | 描述 |
|---|---|
| json_array() | 创建json数组 |
| json_array_append() | 数组尾部追加元素 |
| json_array_insert() | 在数组的指定位置插入元素 |
| json_extract() / -> / ->> | 根据条件提取文档中的数据 |
| json_contains(target,candidate[,path]) | 查询文档中是否包含指定的元素 |
| json_contains_path() | 查询文档中是否包含指定的路径 |
| json_depth() | json文档的深度(元素最大嵌套层数) |
| json_insert() | 向json文档插入值 |
| json_keys() | 提取json中的键值为json数组 |
| json_length() | json文档的长度(元素的个数) |
| json_merge() / json_merge_preserve() | 将两个文档合并,保留重复键值 |
| json_merge_patch() | 将两个文档合并,替换重复键值 |
| json_object() | 创建json对象 |
| json_pretty() | 美化json格式 |
| json_quote() / json_unquote() | 加上/去掉json文档两边的双引号 |
| json_remove() | 删除文档中指定位置的元素 |
| json_replace() | 替换文档中指定位置的元素 |
| json_search() | 返回所有符合条件的路径集合 |
| json_set() | 给文档中指定位置的元素设置新值 |
| json_storage_free() | json文档更新操作后的剩余空间 |
| json_storage_size() | json文档占用的存储空间 |
| json_table() | 将json文档转换为表格 |
| json_type() | json文档类型(数组/对象/标量) |
| json_valid() | json格式是否合法 |
Spatial 数据类型
Spatial 数据即空间数据,又称几何数据,表示物体的位置、形态、大小分布等各方面信息
MySQL 包含的空间数据类型有几何体(GEOMETRY)、点(POINT)、线(LINESTRING)和多边形(POLYGON),其中几何体可以存储任何类型的几何数据,而其他三种只能存储对应类型的几何数据
MySQL 数据库中的数据类型的更多相关文章
- MYSQL数据库中,常见的数据类型有哪些?它们与java中的数据类型如何对应
A.常规 映射 integer 或者 int int 或者 java.lang.Integer INTEGER 4 字节 long long Long BIGINT 8 字节 short short ...
- MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述
MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...
- C#实现MySQL数据库中的blob数据存储
在MySQL数据库中,有一种blob数据类型,用来存储文件.C#编程语言操作MySQL数据库需要使用MySQL官方组件MySQL.Data.dll. Mysql.Data.dll(6.9.6)组件下载 ...
- node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中
步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...
- 如何从mysql数据库中取到随机的记录
如何从mysql数据库中取到随机的记录 一.总结 一句话总结:用随机函数newID(),select top N * from table_name order by newid() ----N是一个 ...
- MySQL数据库中delimiter的作用概述
以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告 ...
- PHP往mysql数据库中写入中文失败
该类问题解决办法就是 在建立数据库连接之后,将该连接的编码方式改为中文. 代码如下: $linkID=@mysql_connect("localhost","root&q ...
- 从Mysql数据库中导入导出表结构
1.从Mysql数据库中导入sql表 很简单,只需要一个命令即可搞定:[root@localhost ~]# mysql -uroot -piweb_xxx_mysql iweb < modif ...
- 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录
从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO ,NAME ) DEFAULT ...
- 在mysql数据库中制作千万级测试表
在mysql数据库中制作千万级测试表 前言: 最近准备深入的学一下mysql,包括各种引擎的特性.性能优化.分表分库等.为了方便测试性能.分表等工作,就需要先建立一张比较大的数据表.我这里准备先建一张 ...
随机推荐
- JS 树形结构 根据子节点找到所有上级
需求:是根据子菜单找到所有他上级菜单 进行面包屑的回显 要求子节点里包含父级id 代码如下: parentTree(arr, id) { //arr 所有的树数据 id 某个子节点的id ...
- 低代码平台解密:探秘MQTT协议的应用之道
前言 低代码平台作为当今快速发展的技术之一,为开发人员提供了更高效.更简便的工具和方法,以快速构建和部署应用程序.而MQTT协议作为物联网领域的重要通信协议,在低代码平台上的应用也日益受到关注,今天小 ...
- uni-app小程序项目发布流程
uni-app小程序项目发布流程开发工具:HbuilderX编辑器.微信小程序开发工具1.小程序开发工具就可以点击发行版本了 2.登录开发者平台配置域名白名单 在开发者设置里完成服务器域名配置(域名白 ...
- 解决Vscode中代码格式化时老换行
问题: 小颖用vscode的格式化代码后发现代码老是换行,有时看起来就很难受,比如下面的: 问度娘后终于弄好啦,记录下,省的以后换电脑了重装了vscode又不会了,主要是百度给的解决方法好几个,但有的 ...
- 外包杯学习进度(一) | 【Android】【Javaweb】Android与JavaWeb服务器交互教程——搭建环境
前言 我们老师留了一个题目,这里就不写了,第一需要攻破的问题就是如何将app中的数据域javaweb进行传递,并可以回弹消息等问题.所以就开始了解一下这方面的信息. 资料积累 参考胡大炮的妖孽人生的博 ...
- Azure - 机器学习企业级服务概述与介绍
Azure 机器学习 - 为端到端机器学习生命周期使用企业级 AI 服务. 关注TechLead,分享AI全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复旦 ...
- C++ Qt开发:Slider滑块条组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍Slider滑 ...
- 1 HTTP是什么,HTTP不是什么?
HTTP是什么? HTTP 全程超文本传输协议(HyperText Transfer Protocol). 包含三部分:超文本.传输.协议. 1. 协议 HTTP是一个用在计算机世界里的协议.它使用计 ...
- 解决OpenCV编译时./bin: error while loading shared libraries: libopencv_highgui.so.3.2: cannot open的问题
1.问题 安装好了opencv后,用其去检测是否可以使用时,出现了如下的问题: 2.解决 参考这篇博文点击 的配置环境即可解决
- 支付宝沙箱支付-zfbsxzf
title: 支付宝沙箱支付 date: 2022-03-03 13:55:15.281 updated: 2022-03-10 16:00:42.331 url: https://www.yby6. ...