03.数据类型

数据类型

  • 数据长什么样
  • 数据需要多少空间来存放
  • 系统内置数据类型
  • 用户定义数据类型

选择正确的数据类型对于获得高性能至关重要

三大原则:

  • 更小的通常更好,尽量使用可正确存储数据的最小数据类型
  • 简单就好,简单数据类型的操作通常需要更少的CPU周期
  • 尽量避免NULL,包含为NULL的列,对MySQL更难优化

1. 整数型

  • tinyint(m) 1个字节 范围(-128~127)
  • smallint(m) 2个字节 范围(-32768~32767)
  • mediumint(m) 3个字节 范围(-8388608~8388607)
  • int(m) 4个字节 范围(-2147483648~2147483647)
  • bigint(m) 8个字节 范围(±9.22*10的18次方)

上述数据类型,如果加修饰符unsigned后,则最大值翻倍

如:tinyint unsigned的取值范围为(0~255)

int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,规定了MySQL的一些交互工具(例如MySQL命令行客户端)用来显示字符的个数。对于存储和计算来说,Int(1)和Int(20)是相同的

BOOL,BOOLEAN:布尔型,是TINYINT(1)的同义词。

zero值被视为假,非zero值视为真

2. 浮点型(float和double)

浮点型为近似值,不精确,分为单精度和双精度

float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位,

注意: 小数点不占用总个数

double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位,

注意: 小数点不占用总个数

示例:
设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位

3. 定点数

在数据库中存放的是精确值,存为十进制

格式 decimal(m,d) 表示最多 m 位数字,其中 d个小数,小数点不算在长度内

比如: DECIMAL(6,2)总共能存6位数字,末尾2位是小数,字段最大值 9999.99(小数点不算在长度内)

参数m<65 是总个数,d<30目 d<m 是小数位

MySQL5.0和更高版本将数字打包保存到一个二进制字符串中(每4个字节存9个数字)。

例如: decimal(18,9)小数点两边将各存储9个数字,一共使用9个字节:其中,小数点前的9个数字用4个字节,小数点后的9个数字用4个字节,小数点本身占1个字节

浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。foat使用4个字节存储。double占用8个字节

因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时才使用decimal,例如存储财务数据。但在数据量比较大的时候,可以考虑使用bigint代替decimal

4. 字符串(char,varchar,text)

  • char(n) 固定长度,最多255个字符,注意不是字节
  • varchar(n) 可变长度,最多65535个字符
  • tinytext 可变长度,最多255个字符
  • text 可变长度,最多65535个字符
  • mediumtext 可变长度,最多2的24次方-1个字符
  • longtext 可变长度,最多2的32次方-1个字符
  • BINARY(M) 固定长度,可存二进制或字符,长度为0-M字节
  • VARBINARY(M) 可变长度,可存二进制或字符,允许长度为0-M字节
  • 内建类型:ENUM枚举,SET集合

char和varchar的比较:

  • char(n)若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉,所以char类型存储的字符串末尾不能有空格,varchar不限于此
  • char(n)固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n < n > 255),所以varchar(4),存入3个字符将占用4个字节
  • char类型的字符串检索速度要比varchar类型的快

varchar 和text:

  • varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n < n > 255),text是实际字符数+2个字节。
  • text类型不能有默认值
  • varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text

5. 二进制数据BLOB

  • BLOB和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob以二进制方式存储不分大小写
  • BLOB存储的数据只能整体读出
  • TEXT可以指定字符集,BLOB不用指定字符集

6. 日期时间类型

  • date 日期 ‘2008-12-2’
  • time 时间 ‘12:25:36’
  • datetime 日期时间 ‘2008-12-2 22:06:44’
  • timestamp 自动存储记录修改时间
  • YEAR(2),YEAR(4):年份
  • timestamp 此字段里的时间数据会随其他字段修改的时候自动刷新,这个数据类型的字段可以存放这条记录最后被修改的时间

7. 修饰符

适用所有类型的修饰符:

  • NULL 数据列可包含NULL值,默认值
  • NOT NULL 数据列不允许包含NULL值,相当于网站注册表中的*为必填选项
  • DEFAULT 默认值
  • PRIMARY KEY 主键,所有记录中此字段的值不能重复,且不能为NULL
  • UNIQUE KEY 唯一键,所有记录中此字段的值不能重复,但可以为NULL
  • CHARACTER SET name 指定一个字符集

适用数值型的修饰符:

  • AUTO_INCREMENT 自动递增,适用于整数类型,必须作用于某个 key 的字段,比如primary key
  • UNSIGNED 无符号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

达梦数据库字段类型 varchar 转 text

达梦数据库字段类型 varchar 转 text 业务场景问题浮现问题处理方式一 总结 业务场景 在初次创建达梦数据库表的时候&#xff0c;仅仅设定了基础的表字段。然而&#xff0c;在预估字段值的长度时&#xff0c;常常会出现不够准确的情况。例如&#xff0c;我创建了一张参数配置表…

MyBatis 缓存机制源码深度解析:一级缓存与二级缓存

MyBatis 缓存机制源码深度解析&#xff1a;一级缓存与二级缓存 一、一级缓存1.1 逻辑位置与核心源码解析1.2 一级缓存容器&#xff1a;PerpetualCache1.3 createCacheKey 方法与缓存命中1.4 命中与失效时机1.5 使用方式 二、二级缓存2.1 逻辑位置与核心源码解析2.2 查询流程、命…

【题解-Acwing】1097. 池塘计数

题目&#xff1a;1097. 池塘计数 题目描述 农夫约翰有一片 N∗M 的矩形土地。 最近&#xff0c;由于降雨的原因&#xff0c;部分土地被水淹没了。 现在用一个字符矩阵来表示他的土地。 每个单元格内&#xff0c;如果包含雨水&#xff0c;则用”W”表示&#xff0c;如果不含…

基于Flask框架的前后端分离项目开发流程是怎样的?

基于Flask框架的前后端分离项目开发流程可分为需求分析、架构设计、并行开发、集成测试和部署上线五个阶段。以下是详细步骤和技术要点&#xff1a; 一、需求分析与规划 1. 明确项目边界 功能范围&#xff1a;确定核心功能&#xff08;如用户认证、数据管理、支付流程&#…

板凳-------Mysql cookbook学习 (十--2)

5.12 模式匹配中的大小写问题 mysql> use cookbook Database changed mysql> select a like A, a regexp A; ------------------------------ | a like A | a regexp A | ------------------------------ | 1 | 1 | --------------------------…

编程实验篇--线性探测哈希表

线性探测哈希表性能测试实验报告 1. 实验目的 编程实现线性探测哈希表。编程测试线性探测哈希表。了解线性探测哈希表的性能特征&#xff0c;并运行程序进行验证。 2. 实验背景与理论基础 哈希表是一种高效的数据结构&#xff0c;用于实现符号表&#xff08;Symbol Table&a…

使用Python提取PDF元数据的完整指南

PDF文档中包含着丰富的元数据信息&#xff0c;这些信息对文档管理和数据分析具有重要意义。本文将详细介绍如何利用Python高效提取PDF元数据&#xff0c;并对比主流技术方案的优劣。 ## 一、PDF元数据概述 PDF元数据&#xff08;Metadata&#xff09;是包含在文档中的结构化信…

【量化】策略交易类型

通过查找相关资料&#xff0c;这里罗列了一些常见的策略交易类型&#xff0c;如下&#xff1a; &#x1f4ca; 技术分析类策略 均线交叉策略&#xff08;SMA、EMA&#xff09;动量策略&#xff08;Momentum&#xff09;相对强弱指数策略&#xff08;RSI&#xff09;随机指标策…

【Go语言基础【17】】切片:一种动态数组

文章目录 零、概述一、切片基础1、切片的结构2、切片的创建方式3、切片的操作与扩容 二、切片的拷贝与共享内存三、切片作为函数参数 Go语言的切片&#xff08;slice&#xff09;是一种动态数组&#xff0c;提供了灵活、高效的元素序列操作。它基于底层数组实现&#xff0c;通过…

MybatisPlus使用DB静态工具出现找不到实体类的报错

报错&#xff1a;Not Found TableInfoCache. 原因在于没有创建实体类对应的mapper&#xff0c;并且该mapper还必须继承baseMapper。 猜测大概的原理应该是DB会去查找实体类对应的mapper&#xff0c;然后通过mapper去查找对应的实体类。

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …

LLMs 系列科普文(15)

前面 14 篇文章&#xff0c;就是本系列科普文中想介绍的大部分技术内容。重点讲述了训练这些模型的三个主要阶段和范式&#xff1a;预训练、监督微调和强化学习。 我向你们展示了这些步骤大致对应于我们已用于教导儿童的过程。具体来说&#xff0c;我们将预训练比作通过阅读说…

深入理解汇编语言中的顺序与分支结构

本文将结合Visual Studio环境配置、顺序结构编程和分支结构实现&#xff0c;全面解析汇编语言中的核心编程概念。通过实际案例演示无符号/有符号数处理、分段函数实现和逻辑表达式短路计算等关键技术。 一、汇编环境配置回顾&#xff08;Win32MASM&#xff09; 在Visual Studi…

Selenium4+Python的web自动化测试框架

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1a;Firefo…

React 样式方案与状态方案初探

React 本身只提供了基础 UI 层开发范式&#xff0c;其他特性的支持需要借助相关社区方案实现。本文将介绍 React 应用体系中样式方案与状态方案的主流选择&#xff0c;帮助开发者根据项目需求做出合适的选择。 1. React 样式方案 1.1. 内联样式 (Inline Styles) 通过 style …

PHP中如何定义常量以及常量和变量的主要区别

在PHP编程中&#xff0c;常量和变量是存储数据的两种重要方式。常量在定义后值不能改变&#xff0c;而变量的值可以在程序执行过程中发生变化。本文将详细介绍如何在PHP中定义常量&#xff0c;并深入探讨常量和变量的主要区别。 一、PHP中定义常量 1. 使用 define 函数定义常…

奈飞工厂官网,国内Netflix影视在线看|中文网页电脑版入口

奈飞工厂是一个专注于提供免费Netflix影视资源的在线播放平台&#xff0c;致力于为国内用户提供的Netflix热门影视内容。该平台的资源与Netflix官网基本同步&#xff0c;涵盖电影、电视剧、动漫和综艺等多个领域。奈飞工厂的界面简洁流畅&#xff0c;资源分类清晰&#xff0c;方…

CMS内容管理系统的设计与实现:架构设计

一、整体架构方案 &#xff08;一&#xff09;架构方案选择&#xff08;根据项目规模&#xff09; 1. 中小型项目推荐方案&#xff08;团队<10人&#xff09; #mermaid-svg-cjzaHpptY8pYWnzo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:1…

嵌入式里的时间魔法:RTC 与 BKP 深度拆解

文章目录 RTC实时时钟与BKPUnix时间戳UTC/GMT时间戳转换时间戳转换BKP简介BKP基本结构1. 电池供电模块&#xff08;VBAT 输入&#xff09;2. 侵入检测模块&#xff08;TAMPER 输入&#xff09;3. 时钟输出模块&#xff08;RTC 输出&#xff09;4. 内部寄存器组 RTC简介RTC时钟源…

STC8H系列 驱动步进电机

STC8H 驱动步进电机 一、引言二、硬件设计三、软件设计Step_Motor2.c文件Step_ Motor2.h文件 一、引言 众所周知STC8H系列有两个PWM&#xff0c;分别为PWMA和PWMB外设模块&#xff0c;我全都用上&#xff0c;岂不是就有两个带动电机的脉冲信号&#xff1f;&#xff01;哈哈哈哈…