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

     🔥个人主页:寻星探路

🎬作者简介: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://www.pswp.cn/news/921712.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921712.shtml

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

相关文章

AI API Tester体验:API测试工具如何高效生成接口测试用例、覆盖异常场景?

前阵子帮后端测试支付接口时,我算是彻底明白 “API 测试能磨掉半条命”—— 明明接口文档里写了十几种参数组合,手动写测试用例时要么漏了 “签名过期” 的场景,要么忘了校验 “金额超过限额” 的返回值,测到半夜还被开发吐槽 “你…

音频驱动数字人人脸模型

1.LatentSync: Taming Audio-Conditioned Latent Diffusion Models for Lip Sync with SyncNet Supervision 字节 2024 文章地址:https://arxiv.org/pdf/2412.09262 代码地址:https://github.com/bytedance/LatentSync 训练推理都有 2.wan2.2-s2v …

CentOS部署ELK Stack完整指南

文章目录🚀 ELK Stack 部署详解(CentOS 7/8)📦 一、环境准备1. 关闭防火墙(或开放端口)2. 关闭 SELinux3. 安装基础依赖4. 验证 Java🔽 二、下载并安装 ELK 组件1. 导入 Elastic GPG 密钥2. 创建…

Spring Boot 拦截器(Interceptor)与过滤器(Filter)有什么区别?

在 Spring Boot 项目中,我们经常会遇到需要在请求处理前后执行一些通用逻辑的场景,比如记录日志、权限校验、全局异常处理等。此时,我们通常会面临两种选择:过滤器(Filter) 和 拦截器(Intercept…

【技术教程】如何将文档编辑器集成至基于Java的Web应用程序

在如今的企业协作场景中,“文档” 早已不是简单的文字载体!从项目需求文档的多人实时修改,到财务报表的在线批注,再到合同草案的版本追溯,用户越来越需要在 Web 应用内直接完成 “编辑 - 协作 - 存储” 全流程。 但很…

多模态大模型Keye-VL-1.5发布!视频理解能力更强!

近日,快手正式发布了多模态大语言模型Keye-VL-1.5-8B。 与之前的版本相比,Keye-VL-1.5的综合性能实现显著提升,尤其在基础视觉理解能力方面,包括视觉元素识别、推理能力以及对时序信息的理—表现尤为突出。Keye-VL-1.5在同等规模…

洗完头后根据个人需求选择合适的自然风干 | 电吹风 (在保护发质的同时,也能兼顾到生活的便利和舒适。)

文章目录 引言 I 选合适的方式让头发变干 时间充裕,不需要做造型,选择自然风干 使用电吹风,比较推荐的做法 II 自然风干 天冷可能刺激头皮 III 电吹风吹干 容易造型 影响头皮健康 损伤发质 科普 头皮的微观结构 头发丝 引言 吹风吹干:容易造型,但损伤发质、影响头皮健康 …

GPS汽车限速器有哪些功能?主要运用在哪里?

GPS 汽车限速器是一种结合全球卫星定位(GPS)技术、车速采集技术与车辆控制 / 预警逻辑的设备,核心目标是通过技术手段限制车辆行驶速度,减少超速引发的交通事故,并辅助车辆管理。其功能与应用场景高度匹配不同用户的 “…

Python从入门到精通_01_python基础

1 源代码格式在python文件的第一行,输入以下语句,可以将python文件的编码格式设置为utf-8#-*- coding:utf-8 -*-2 输入输出input():输入,无论输入的是什么类型数据,最后都是字符串类型print(*args, sep , end\n, fileNone, flushF…

使用CI/CD部署项目(前端Nextjs)

写在前面:在github上使用CI/CD部署Nextjs项目,具体配置可以按照自己的实际的修改 这是我的项目配置,仅供参考 后端项目可以参考:使用CI/CD部署后端项目 正文开始 项目名(PROJECT_NAME)- CI/CD 部署指南…

Java全栈工程师面试实录:从基础到实战的全面解析

Java全栈工程师面试实录:从基础到实战的全面解析 面试官:李明(资深技术负责人) 应聘者:张宇(28岁,硕士学历,5年开发经验) 第一轮:Java语言与JVM基础 李明&…

C#中解析XML时遇到注释节点报错

在C#中解析XML时遇到注释节点报错的问题&#xff0c;这是因为XML注释节点&#xff08;<!-- -->&#xff09;是特殊的节点类型。当遍历XML节点时&#xff0c;注释节点也会被包含在内&#xff0c;但它们不能像普通元素节点那样处理。 解决方案 方法1&#xff1a;跳过注释节…

9.3深度循环神经网络

目前为止&#xff0c;只讨论了具有一个单向隐藏层的循环神经网络&#xff0c;其中隐变量和观测值域具体的函数形式的交互方式是相当随意的。只要交互类型建模具有足够的灵活性&#xff0c;不是一个单问题。然而&#xff0c;对一个单层来说&#xff0c;可能具有相当的挑战性。之…

CSS in JS 的演进:Styled Components, Emotion 等的深度对比与技术选型指引

CSS in JS 的演进&#xff1a;Styled Components, Emotion 等的深度对比与技术选型指引在现代前端开发中&#xff0c;组件化思维已成为主流&#xff0c;而如何科学、高效地管理组件的样式&#xff0c;也随之成为了一个重要议题。CSS in JS&#xff08;JS中的CSS&#xff09;应运…

【正则表达式】 正则表达式的分组和引用

🌈 个人主页:(时光煮雨) 🔥 高质量专栏:vulnhub靶机渗透测试 👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~) 🌵目录🌵 前言 🍱一、基本语法 🍘二、分组类型 🍙2.1.…

Grafana 导入仪表盘失败:从日志排查到解决 max\_allowed\_packet 问题

问题背景 近期在为项目搭建一套基于 Prometheus 和 Grafana 的可观测性体系。在完成基础部署后&#xff0c;我准备导入一个功能相对复杂的官方仪表盘模板&#xff0c;以便快速监控各项指标。然而&#xff0c;当上传仪表盘的 JSON 文件并点击保存时&#xff0c;Grafana 界面却反…

java对接物联网设备(一)——使用okhttp网络工具框架对接标准API接口

当前无论是在互联网领域&#xff0c;还是物联网项目下&#xff0c;亦或者各类应用类软件&#xff0c;基于http标准接口的对接是目前市面上最常见也是最简单的数据交互方式之一&#xff0c;甚至可以说是最流行的&#xff0c;因为它不依赖的各种插件或者服务。 开发者或者提供服…

版本管理系统与平台(权威资料核对、深入解析、行业选型与国产平台补充)

本文是一篇基于公开权威资料&#xff08;官方文档、产品页、厂商技术文章与技术社区讨论&#xff09;重新检索、核对后撰写的详尽博文。内容覆盖&#xff1a;版本控制基础、主流 VCS 工具深度比较、常见托管/协作平台&#xff08;含中国本土平台&#xff1a;Gitee / GitCode / …

计算机毕设选题:基于Python+Django的B站数据分析系统的设计与实现【源码+文档+调试】

精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、项目介绍二…

Easy ES技术详解

从Java代码示例到高级特性 框架介绍 Easy-Es 是一款以 “简化 Elasticsearch 操作的 ORM 框架” 为核心定位的开源工具&#xff0c;旨在通过低代码设计降低 Elasticsearch 的使用门槛。作为国内 Top1 Elasticsearch 搜索引擎框架&#xff0c;其最显著的优势在于大幅缩减代码量…