《MySQL》数据类型

文章目录

  • 一,数值类型
    • int类型
    • bit类型
    • 小数类型
      • float 和 decimal
  • 二,字符串类型
    • char和varchar
    • 日期和时间类型
    • enum和set

一,数值类型

MySQL数据库里面的数据类型
在这里插入图片描述

int类型

int类型是一个大类

类型大小
tinyint1字节 (-27 ~ 27-1)
smallint2字节 (-215 ~ 215-1)
mediumint3字节 (-223 ~ 223-1)
int4字节 (-231 ~ 231-1)
bigint8字节 (-263 ~ 263-1)

默认创建都是有符号的类型

为什么一个int就会有这么多类型?

  1. 类型多,可以应对各种不同的应用场景
  2. 节省资源,数据库里的内存资源十分宝贵

越界情况

  • MySQL里面的数据内容若是越界,则会直接报错,不会像语言一样进行隐式转换、整型截断什么的
    在这里插入图片描述
    如图,直接报错,这是为了保证数据库里插入的数据一定是正确的

bit类型

默认创建bit类型的大小为1比特位
在这里插入图片描述

注意事项:

  1. bit类型里面的数据以ASCII码对应的字符存储
  2. bit类型可指定的最大长度为64位,过大或者越界都是直接报错

在这里插入图片描述

小数类型

float 和 decimal

# {}表示里面内容是可选项,不填则有默认
float{(m,d)} {unsigned}  # m表示总长度(包括小数位数),d表示小数位数,unsigned表示无符号类型
decimal{(m,d)} {unsigned}  # m表示总长度(包括小数位数),d表示小数位数,unsigned表示无符号类型

注意事项:

  1. 范围:有长度看长度位数。:float(4,2) 的范围是 -99.99 ~ 99.99;float(4,2) unsigned 的范围是0~99.99
  2. 精度:四舍五入。:以float(4,2)为例,插入的数据为 98.995,则会成为99.00;若98.994,则会成为98.99;但插入的数据为99.999,则会报错,因为超出范围

decimal和float用法类似,不多赘述。

区别:

  1. float 占4个字节,decimal 占8个字节
  2. decimal 比 float精度更高
  • float 浮点数一定存在精度是损失
    在这里插入图片描述

二,字符串类型

char和varchar

char(n) 定长字符串类型,n表示单位字符数量,最大值为255

  1. 定长:mysql会给char类型直接分配固定大小的内存。char(2),就表示会开辟2个单位字符的大小来存储字符。
  2. 单位字符:比如:“ab”,“中国”,这类的单位字符就为2,但实际存储大小会由于编码格式不同而不同,以UTF-8编码,"ab"占2个字节,"中国"占6个字节。

varchar(n) 变长字符串类型,n表示字符长度,最大值为65535字节

  • 这里的 n 表示字符长度,因为是变长,所以是动态申请内存来存储数据。值得注意的是,varchar存储数据时,会分配1~3个字节来记录数据的大小,所以实际可用的最大空间应该是65532字节
    在这里插入图片描述

使用场景:

  • 如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
  • 如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
  • 定长的磁盘空间比较浪费,但是效率高。
  • 变长的磁盘空间比较节省,但是效率低。
  • 定长的意义是,直接开辟好对应的空间
  • 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少

日期和时间类型

名称大小格式特点
date3字节‘yyyy-mm-dd’固定时间,需要手动更改
datetime8字节‘yyyy-mmm-dd hh:mm:ss’固定时间,需要手动更改
timestamp4字节‘yyyy-mmm-dd hh:mm:ss’时间戳,每次插入或更新数据,时间也会自动更新

在这里插入图片描述

enum和set

enum 枚举

# 语法
enum('选项1','选项2','选项3',...)

以上插入数据时,选项单选一个

set 集合

# 语法
set('选项1','选项2','选项3',...)

以上插入数据时,选项最多可以选满,是多选选项

在这里插入图片描述

  • enum的数字下标
    插入或者查询数据时,可以填写内容,也可以填写数字,如上例子:1表示‘男’,2表示‘女’。(数字从1开始
  • set的数字位图
    同上,但是不同的是,这个数字是按位图操作(即二进制1的位置),如:1表示语文,2表示数学,3表示语文和数学,以此类推。

建议:不用用数字,因为不便于阅读

函数 find_in_set
查找一个元素,成功返回下标

# 语法
find_in_set(sub, str_list)

在这里插入图片描述

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

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

相关文章

JS 实现CSV文件转换SQL文件小工具

一. 需求 最近在项目中遇到一个问题,客户提供的数据是CSV格式的, 需要将CSV文件中的数据转换为SQL语句文件。 😅由于本人不会Excel的vba编程,因此决定使用JS来实现。 二. 实现思路 提供一个文件上传框,支持多文件上…

并发编程_jmm部分

1. JMM 理解 前提:并发编程有3大问题,可见性、有序性、原子性。 导致可见性的原因是缓存,有序性的原因是 编译器优化。解决方法就是直接禁用缓存和编译器优化,导致程序性能堪忧。 因此合理的方案就是按需禁用缓存和编译器优化。 …

ATFX国际:大非农数据来袭,美国劳动力市场需求或空前旺盛

ATFX国际:昨日晚间公布的ADP数据震惊市场,新增就业人口高达49.7万人,而预期值仅为22.8万人,前值也只有26.7万人。公布值约为预期值和前值的总和。 ▲ATFX图 ADP数据是非农就业报告的前瞻指标,前者表现亮眼&#xff0c…

【算法集训之线性表篇】Day 01

文章目录 题目知识点补充思路分析代码实现运行结果 题目 01.从顺序表中删除具有最小值元素(假设唯一)并返回被删元素的值。空出位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。 知识点补充 顺序表的特点是逻辑…

Handshake failed due to invalid Upgrade header: null 解决方案以及连接60s,信息不交互,连接断开

Handshake failed due to invalid Upgrade header: null 解决方案以及连接60s,信息不交互,连接断开 1. 问题背景:因为后端用了nginx代理,所以websocket连接的过程中报错:Handshake failed due to invalid Upgrade hea…

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication

通过跨集群复制(Cross Cluster Replication - CCR),你可以跨集群将索引复制并实现: 在数据中心中断时继续处理搜索请求防止搜索量影响索引吞吐量通过在距用户较近的地理位置处理搜索请求来减少搜索延迟 跨集群复制采用主动 - 被…

HTML5+CSS3+JS小实例:背景动态变化的登录界面2.0

实例:背景动态变化的登录界面2.0 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" con…

Chapter 4: Functions | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介FunctionsFunction callsBuilt-in functionsType conversion functionsMath functionsRandom numbersAdding new functionsDefinitions and usesFlow of executionParameters and argumentsFruitful functions and void functionsWhy fun…

【广州华锐互动】VR地铁安全应急疏散模拟演练系统

VR地铁安全应急疏散模拟演练系统是一种利用虚拟现实技术模拟铁路安全事故的应用程序。该系统具有以下功能和内容&#xff1a; 多种场景和情境&#xff1a;用户可以选择不同的场景和情境进行模拟&#xff0c;例如列车脱轨、火灾、爆炸等。 操作控制器或手势识别技术&#xff1…

TypeScript 中【类型断言】得使用方法

类型断言的概念 有些时候开发者比TS本身更清楚当前的类型是什么&#xff0c;可以使用断言&#xff08;as&#xff09;让类型更加精确和具体。 类型断言&#xff08;Type Assertion&#xff09;表示可以用来手动指定一个值的类型。 类型断言语法&#xff1a; 值 as 类型 或 <…

2.3 Web应用 -- 2. HTTP 连接

2.3 Web应用 -- 2. HTTP 连接 HTTP连接的两种类型非持久性连接响应时间分析与建模持久性HTTP HTTP连接的两种类型 非持久性连接(Nonpersistent HTTP) 每个TCP连接最多允许传输一个对象HTTP 1.0版本使用非持久性连接 持久性连接(Persistent HTTP) 每个TCP连接允许传输多个对象H…

Dubbo hystrix 熔断降级 详细示例 多服务 公共api

目录 介绍 demo-api pom 目录 代码api provider 服务提供者 目录 pom 服务实现代码 启动代码 配置 日志 consumer 消费者 目录 pom 调用service接口 调用serviceImpl类 ctr 配置 页面调用熔断效果 相关文章 介绍 因为网上和官网拷贝的文档发现有很多版本…