MySQL(数据类型)

༺ 个人主页 · 纪念229 ༻

🏠我的博客主页🏠

༒专栏目录:《数据结构》༒

༒专栏目录:《算法》༒

༒专栏目录:《MySQL数据库》༒

༒其它有趣的计算机知识༒

༺世上本没有路,走的人多了自然就有了༻


这篇文章讲述的是MySQL的一些数据类型 ,了解这些数据类型对我们在数据插入时有所帮助。

文章目录

  • 1.本节⽬标
  • 2.常⽤数据类型分类
  • [3. 数据值类型](#3. 数据值类型)
    • [3.1 类型列表](#3.1 类型列表)
    • [3.2 数据类型取值范围](#3.2 数据类型取值范围)
  • [4. 字符串类型](#4. 字符串类型)
    • [4.1 类型列表](#4.1 类型列表)
    • [4.2 关于排序](#4.2 关于排序)
    • [4.3 CHAR与VARCHAR的区别](#4.3 CHAR与VARCHAR的区别)
    • [4.4 如何选择CHAR与VARCHAR](#4.4 如何选择CHAR与VARCHAR)
    • [4.5 VARCHAR与TEXT的区别](#4.5 VARCHAR与TEXT的区别)
  • [5. ⽇期类型](#5. ⽇期类型)
    • [5.1 类型列表](#5.1 类型列表)
    • [5.2 其他](#5.2 其他)

1.本节⽬标

• 掌握数据类型分类

• 掌握常⽤数据类型

2.常⽤数据类型分类

在⾯向对象软件开发的过程中,通常会先进⾏需求分析从⽽得到类和属性,类是⾯向对象中的概念,对应到数据库中的概念就是实体,类中的属性对应实体中的属性。实体通常以表的形式存在,每个实体对应⼀张表,表中的每条记录(数据⾏)就是实体的⼀个实例,每条记录⼜包含若⼲字段(或称为列),每个字段代表实体的⼀个属性。

如果要定义实体的属性,就要为属性命名并指定合适的数据类型。与其他编程语⾔类似,SQL中规定了⽤于描述属性的数据类型。常⽤的数据类型有以下⼏类:

• 数据值类型

• 字符串类型

• ⼆进制类型

• ⽇期类型

3. 数据值类型

3.1 类型列表

3.2 数据类型取值范围

4. 字符串类型

4.1 类型列表

4.2 关于排序

• 字符串类型的列以字符为单位,并且可以单独指定字符集和排序规则,⽐如字符集是 utf8mb4 ,排序规则是 utf8_0900_ai_ci

• ⼆进制的列以字节为单位,可以指定_bin结尾的排序规则,⽐如排序规则是 utf8mb4_bin ,这时以⽐较和排序基于数字字符代码值

4.3 CHAR与VARCHAR的区别

• CHAR 固定⻓度的字符串, M 表⽰以字符为单位的列⻓度,取值范围 0 ~ 255 ,省略则⻓度为1 ,在存储时总是⽤空格向右填充到指定的⻓度,获取列的值时会从尾部删除空格。允许定义CHAR(0),此时列的值只能为NULL或空字符串,主要的⽬的是为了旧系兼容,⽐如类中必须有这个属性,但不使⽤这个属性的值,也就是说值并没有意义,但列⼜不能没有。

• VARCHAR 可变⻓度字符串。 M 表⽰以字符为单位的最⼤列⻓度,取值范围 0 ~ 65,535 (在所有列中共享),有效⻓度取决于实际字符数和使⽤的字符集,并且⽤额外的⼀或两个字节记录实际使⽤的字节数,当实际字节数不超过 255 个字节⽤⼀个字节记录⻓度,超过 255 个字节时,使⽤两个字节记录⻓度,获取列的值时不会从尾部删除空格,插⼊数据时会删除超出⻓度的空格。

• 通过下表来说明CHAR和VARCHAR存储字符串的区别,字符集以latin1为例:

4.4 如何选择CHAR与VARCHAR

• 如果数据确定⻓度都⼀样,就使⽤定⻓ CHAR 类型,⽐如:⾝份证,md5,学号,邮编。

• 如果数据⻓度有变化,就使⽤变⻓ VARCHAR , ⽐如:名字,地址,但要规划好⻓度,保证最⻓的字符串能存的进去。

• 定⻓ CHAR 类型⽐较浪费磁盘空间,但是效率⾼。

• 变⻓ VARCHAR 类型⽐较节省磁盘空间,但是效率低。

• 定⻓ CHAR 类型会直接开辟好对应的存储空间。

• 变⻓ VARCHAR 类型在不超过定义⻓度范围的情况下⽤多少开辟多少存储空间。

4.5 VARCHAR与TEXT的区别

• 容量⼤⼩: VARCHAR 最⼤⽀持 65535 个字节; TEXT 最⼤⽀持 65535 个字节,在指定TEXT⻓度时,当超过 65535 时⾃动转换为 MEDIUMTEXT 类型,当超过 16,777,215 时⾃动转换为LONGTEXT 类型

• 存储位置: VARCHAR 类型的列实际内容⼩于768个字节时存在当前⾏,⼤于768时存在溢出⻚,当前⾏保存溢出⻚的地址; TEXT 类型的列整体保存在溢出⻚,当前⾏只保存溢出⻚地址

• 查询性能:对于频繁查询的 VARCHAR 列可以创建索引,提升查询性能; TEXT 类型的列⽆法直接创建普通索引,但可以使⽤ FULLTEXT 索引,由于索引的⽀持和存储位置的不同, VARCHAR列的性能⾼于 TEXT 类型的列

• 适⽤场景:如果存储的数据⻓度较⼩且需要创建索引进⾏检索,可以选VARCHAR 类型,⽐如姓名,⽤⼾,邮箱等;如果存储的数据⻓度较⼤且不需要频繁以该列为条件进⾏检索可以选择 TEXT类型,⽐如⽂章内容等。

5. ⽇期类型

5.1 类型列表

5.2 其他

• fsp 为可选设置,⽤来指定⼩数秒精度,范围从0到6,值为0表⽰没有⼩数部分,如果省略,默认精度为0

• CURRENT_DATE 和 CURRENT_DATE() 是 CURDATE() 的同义词⽤于获取当前⽇期

• CURRENT_TIME 和 CURRENT_TIME(fsp) 是 CURTIME() 的同义词⽤于获取当前时间

• CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP(fsp) 是 NOW() 的同义词⽤于获取当前⽇期和时间


这篇文章看到这里就结束了,希望对你有所帮助,感谢观看!

相关推荐
2601_967659896 分钟前
2026信创深化落地期档案管理系统选型推荐:恒智科技综合档案管理系统
数据库·人工智能·科技
程序员-Benothing12 分钟前
数据库的脏读、不可重复读和幻读:从面试标准答案到源码级原理
数据库·面试·职场和发展
wangchunyu11414 分钟前
Elasticsearch 入门与实战:Spring Boot 3 + ES 8 从零搭建商品搜索服务
大数据·数据库·spring boot·elasticsearch
给AI剪纸的打工人16 分钟前
OpenCode怎么接第三方API?自定义Provider与Responses配置实战
linux·数据库·人工智能
裕晟资质规划27 分钟前
西安政务信息化项目涉密系统集成资质准入解析:甲级/乙级承接边界、等保差异与合规承接路径
大数据·运维·数据库·人工智能·安全·政务
yandong63438 分钟前
redis添加到win服务
数据库·redis·缓存
我叫小米粒40 分钟前
可维护的智能体协作空间:字段建模、提示约束、测试集和上线检查
数据库·aigc·agent·智能体交付
数智启示录1 小时前
Flink CDC 机制精讲(四):一条 SQLServer CDC 事件如何保持顺序 【面试宝典】
数据库·面试·sqlserver·flink
张文君1 小时前
ubuntu26.04从ext4到raid1+lvm启动-最终版-有这个方法系统损坏还焦虑个啥
数据库
今天AI了吗1 小时前
AI工作流的自动化趋势:从手动实验到自主Agent的研究范式转变
运维·数据库·人工智能·sql·机器学习·自动化·github