当前位置: 首页 > news >正文

数据结构造神计划第三天---数据类型

     🔥个人主页:寻星探路

🎬作者简介:Java研发方向学习者

📖个人专栏:《从青铜到王者,就差这讲数据结构!!!》、 《JAVA(SE)----如此简单!!!》、《数据库那些事!!!》

⭐️人生格言:没有人生来就会编程,但我生来倔强!!!



目录

一、常用数据类型分类

二、数据值类型

1、类型列表

2、数据类型取值范围

三、字符串类型

1、类型列表

2、关于排序

3、CHAR与VARCHAR的区别

4、如何选择CHAR与VARCHAR

5、VARCHAR与TEXT的区别

四、日期类型

1、类型列表

2、其他

五、总结


一、常用数据类型分类

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

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

• 数据值类型

• 字符串类型

• ⼆进制类型

• ⽇期类型

二、数据值类型

1、类型列表

2、数据类型取值范围

三、字符串类型

1、类型列表

2、关于排序

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

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

3、CHAR与VARCHAR的区别

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

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

mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));
Query OK, 0 rows affected (0.01 sec)mysql> INSERT INTO vc VALUES ('ab  ', 'ab  ');
Query OK, 1 row affected (0.00 sec)mysql> SELECT CONCAT('(', v, ')'), CONCAT('(', c, ')') FROM vc;
+---------------------+---------------------+
| CONCAT('(', v, ')') | CONCAT('(', c, ')') |
+---------------------+---------------------+
| (ab  )              | (ab)                |
+---------------------+---------------------+
1 row in set (0.06 sec)mysql> insert into vc values ('ab    ', 'ab  ');
Query OK, 1 row affected, 1 warning (0.01 sec)mysql> show warnings;
+-------+------+----------------------------------------+
| Level | Code | Message                                |
+-------+------+----------------------------------------+
| Note  | 1265 | Data truncated for column 'v' at row 1 |
+-------+------+----------------------------------------+
1 row in set (0.00 sec)

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

4、如何选择CHAR与VARCHAR

        如果数据确定长度都⼀样,就使用定长 CHAR 类型,比如:身份证,md5,学号,邮编。

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

        定长 CHAR 类型比较浪费磁盘空间,但是效率高。

        变长 VARCHAR 类型比较节省磁盘空间,但是效率低。

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

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

5、VARCHAR与TEXT的区别

        容量大小: VARCHAR 最大⽀持长度时,当超过 65535 个字节; TEXT 最大支持 65535 时自动转换为 65535 个字节,在指定TEXT MEDIUMTEXT 类型,当超过 16,777,215 时自动转换为 LONGTEXT 类型

        存储位置: VARCHAR 类型的列实际内容小于768个字节时存在当前行,大于768时存在溢出页, 当前行保存溢出页的地址; TEXT 类型的列整体保存在溢出页,当前行只保存溢出页地址

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

        适用场景:如果存储的数据长度较小且需要创建索引进行检索,可以选择 VARCHAR VARCHAR 类型,比如姓名,用户,邮箱等;如果存储的数据长度较大且不需要频繁以该列为条件进行检索可以选择 TEXT 类型,比如⽂章内容等。

四、日期类型

1、类型列表

2、其他

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

        CURRENT_DATE 和 CURRENT_DATE() 是 CURDATE() 的同义词用于获取当前日期

        CURRENT_TIME 和 CURRENT_TIME([fsp]) 是 CURTIME() 的同义词用于获取当前时间

        CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP([fsp]) 是 NOW() 的同义词用于获取当 前日期和时间

五、总结

        关于上面所讲到的类型中,我们最需要关心的其实只有下面的这几个:


文章转载自:

http://MiGd7NOO.wkLyk.cn
http://K8cE5oci.wkLyk.cn
http://ZPzIiO4Z.wkLyk.cn
http://WrHdIBrh.wkLyk.cn
http://LgKaO586.wkLyk.cn
http://KEdYMQmX.wkLyk.cn
http://RUV7vAea.wkLyk.cn
http://d9LW5sX5.wkLyk.cn
http://DYPZjG9K.wkLyk.cn
http://e0gcXmOi.wkLyk.cn
http://q5BF5YmX.wkLyk.cn
http://2fcDbBGb.wkLyk.cn
http://f5W3eyaF.wkLyk.cn
http://ToHlFdTo.wkLyk.cn
http://7tXH8M4D.wkLyk.cn
http://Lz0Z2b6B.wkLyk.cn
http://zcZG7YoH.wkLyk.cn
http://AFDHm4Hg.wkLyk.cn
http://MEbGUd1x.wkLyk.cn
http://l93yICJ5.wkLyk.cn
http://5nhjk9vg.wkLyk.cn
http://85pHHUtJ.wkLyk.cn
http://s43Rqx9l.wkLyk.cn
http://Stn7r2mk.wkLyk.cn
http://VJLUaT3K.wkLyk.cn
http://zuIal7F0.wkLyk.cn
http://9kh7DVl8.wkLyk.cn
http://T8OcM6XY.wkLyk.cn
http://p9wKUGme.wkLyk.cn
http://dU9Kr5rC.wkLyk.cn
http://www.dtcms.com/a/373160.html

相关文章:

  • MYSQL集群高可用架构之MHA高可用架构
  • 小麦矩阵系统:让短视频分发实现抖音快手小红书全覆盖
  • 智能高低压地埋线走向探测器如何在多条电缆中查找特定电缆?
  • 【Docker】常见操作
  • Python/JS/Go/Java同步学习(第七篇)四语言“字符串类型验证“对照表: 运维“雏田“白眼审核凭证上传崩溃(附源码/截图/参数表/避坑指南)
  • 深入解析网通核心器件:光模块、巴伦(Balun)与LTCC及其关键参数
  • 将 maven 集成到 idea 后出现 向项目创建模块时出错:null 的问题
  • 4.1Vue基本使用
  • 温补晶振(TCXO)
  • 应用层————HTTPS协议
  • 内存越界引发线程函数调用堆栈回溯异常以及INT 3软中断实战分析案例分享
  • stm32——单总线,DHT11
  • WAF(Web应用防火墙)重要域名接入方案 - 操作笔记
  • [网络入侵AI检测] 纯卷积神经网络(CNN)模型 | CNN处理数据
  • Embedding 层(tf.keras.layers.Embedding)文档翻译
  • 人工智能学习:Transformer结构(文本嵌入及其位置编码器)
  • 计算机视觉——光流法
  • VMware 如何创建链接克隆虚拟机
  • Excel处理控件Aspose.Cells教程:使用 Python 将 Pandas DataFrame 转换为 Excel
  • 【回眸】Tessy 基础操作指南
  • 更智能的零售终端设备管理:合规、安全与高效
  • TCP/IP、HTTP 和 HTTPS简介
  • UNBIASED WATERMARK:大语言模型的无偏差水印
  • Android Studio处理异常报错:Cause connect timed out
  • 基于哈塞特独立性表态的AI量化研究:美联储政策独立性的多维验证
  • 人工智能-python-深度学习-经典神经网络AlexNet
  • SpringBoot集成电科金仓数据库(上):环境搭建与基础配置
  • AR 巡检与普通巡检有哪些区别,有哪些优势|阿法龙XR云平台
  • Web与Nginx网站服务二
  • [硬件电路-166]:Multisim - SPICE与Verilog语言的区别