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

mysql数据类型选择

数据类型选择

完整性约束

  • 是完整性约束是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。

  • 通常包括:实体完整性约束、参照完整性约束、域完整性约束、用户自定义完整性约束。

    • 实体完整性(Entity integrity)是指主键必须非空唯一
    • 参照完整性(Referential Integrity)也就是外键约束
    • 域完整性是保证数据库字段取值的合理性,一般包括检查(CHECK)、默认值(DEFAULT)、不为空(NOT NULL)、外键(FOREIGN KEY)等约束。

char和varchar区别

  • 最大长度:char最大长度是255字符,varchar最大长度是65535个字节。
  • char是定长的,不足的部分用隐藏空格填充,varchar是不定长的。
  • char会浪费空间,varchar会更加节省空间。
  • char查找效率会很高,varchar查找效率会更低。
  • 对于尾部空格,char插入时可省略,varchar插入时不会省略,查找时省略

set和enum类型的用法和区别

  • 都只能在固定值中选择,可以在数据库层面限制非法值。
  • set可以取多个值,enum只能取一个值

delete,drop,truncate 都有删除表的作用,区别在于:

  • delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除
  • delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚
  • 执行的速度上,drop>truncate>delete

between和in的区别

  • between是min和max范围内的,包括min和max,是数字型的

  • in是离散数据,between是连续值(1到2之间会有无数个值)

like 模糊查询,”_“代表一个字符,”%“代表多个字符

left、right、full、inner

  • left、right 简单的说就是最终结果以谁为主
  • full join全连接则是保留所有的查询记录,没有的对应位置则为空。
  • inner join,只保留所有查询都有结果的记录,其它都丢弃。

数据类型的选择:

  • 尽量使用可以正确存储数据的最小数据类型,因为更小的数据类型,占用的资源也更少,处理的速度也更快,例如:整型比字符串操作代价更低
  • 避免使用null,可以给null默认值,除非真的想要存储null值
  • 数字类型分为:整数和实数
    • 整数例如:tinyint、smallint、mediumint、int、bigint,还能使用unsigned,来禁止负数
    • 实数是指带有小数部分的数字,例如float、double、decimal
  • 字符类型:Varchar和char
    • 最大长度:char最大长度是255字符,varchar最大长度是65535个字节。
    • char是定长的,不足的部分用隐藏空格填充,varchar是不定长的。
    • char会浪费空间,varchar会更加节省空间。
    • char查找效率会很高,varchar查找效率会更低。
    • 对于尾部空格,char插入时可省略,varchar插入时不会省略,查找时省略
    • char适合长度等长的字符串,varchar适合最大长度比平均长度大很多的
  • BLOB和TEXT类型
    • 两者都是为了存储很大的数据而设计的字符串数据类型,区别是分别采用二进制和字符方式存储
    • TEXT: tinytext、smalltext、text、mediumtext、longtext,BLOB类似
    • 每个BLOB或者TEXT都会被当作一个独立的对象处理,值太大时,innodb还会再外部存储,行内只存地址
    • memory引擎不支持这两种类型,如果查询使用了BLOB或者TEXT列,并且需要使用隐式临时表,临时表会是MYISAM引擎的,这样会导致严重的性能开销,最好的办法就是尽量少用这两种类型
  • 枚举类型
    • 尽量少使用数字作为枚举常量,很容易混乱
    • 枚举其实就是 “数字-字符串”,可以有效的节省空间,但是每次查找也需要额外的转换,不过这个开销比较小
    • 枚举字段是按照内部存储的整数来排序的,而不是根据字符串排序,可以显式的使用FIELD()来指定排序
    • 枚举最不好的地方是字符串列表是固定的,添加或者删除都需要使用ALTER TABLE操作,如果是可能会改变的字符串不建议使用枚举
  • 日期类型
    • date和datetime、timestamp 的区别

      • date保存精度到天,格式为:YYYY-MM-DD,如2016-11-07
      • datetime和timestamp精度保存到秒,格式为:YYYY-MM-DD HH:MM:SS
      • timestamp会跟随设置的时区变化而变化,而datetime保存的是绝对值不会变化。因此,如果应用场景有跨时区要求的要特别注意这点。
      • 占用存储空间不同 timestamp储存占用4个字节,datetime储存占用8个字节。
      • timestamp可表示范围:1970-01-01 00:00:00~2038-01-09 03:14:07,datetime支持的范围更宽1000-01-01 00:00:00 ~ 9999-12-31 23:59:59。
      • timestamp更轻量,索引相对datetime更快。
  • ip
    • ip实际是32位无符号整数,不是字符串,用小数点分成四段只是为了方便阅读,mysql提供了专门转换ip的函数

mysql不要设计过多的列和过多的关联,也不要过渡使用枚举,避免使用null

用varchar(5)和varchar(200)来存储“hello”的空间开销是一样的,但是更长的列会消耗更多的内存,mysql通常会分配固定大小的内存块来保存内部指,所以最好的策略是按需分配

相关文章:

mysql数据类型选择

数据类型选择 完整性约束 是完整性约束是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。 通常包括:实体完整性约束、参照完整性约束、域完整性约束、用户自定义完整性约束。 实体完整性(Entity integrity)是指主键必须非空…...

【Java】Spring Boot 配置文件

文章目录SpringBoot 配置文件1. 配置文件的作用2. 配置文件的格式3. properties配置文件说明3.1 properties基本语法3.2 读取配置文件3.3 properties缺点分析4. yml配置文件说明4.1 yml基本语法4.2 yml使用进阶4.2.1 yml配置不同的数据类型及null4.2.1 yml配置的读取4.2.2 配置…...

AtCoder Beginner Contest 290 G. Edge Elimination(思维题 枚举+贪心)

题目 T(T<100)组样例&#xff0c;每次给出一棵深度为d的k叉树&#xff0c; 其中&#xff0c;第i层深的节点个数为 保证k叉树的所有节点个数tot不超过1e18&#xff0c; 求在k叉树上构建一棵大小恰为x的连通块&#xff0c;所需要断开的最少的树边的条数(x<tot<1e18)…...

数据挖掘概述

目录1、数据挖掘概述2、数据挖掘常用库3、模型介绍3.1 分类3.2 聚类3.3 回归3.4 关联3.5 模型集成4、模型评估ROC 曲线5、模型应用1、数据挖掘概述 数据挖掘&#xff1a;寻找数据中隐含的知识并用于产生商业价值 数据挖掘产生原因&#xff1a;海量数据、维度众多、问题复杂 数…...

linux kernel iio 架构

linux kernel iio 架构讲解Linux IIO&#xff08;Industrial I/O&#xff09;架构是Linux内核提供的一种用于支持各种类型传感器和数据采集设备的子系统&#xff0c;包括温度、压力、湿度、加速度、光度等多种传感器。IIO架构的核心是一个通用的IIO子系统&#xff0c;它提供了一…...

Socket通信详解

Socket通信详解 文章目录Socket通信详解Socket流程介绍函数介绍编程实例Socket流程介绍 socket通信类似于电话通信&#xff0c;其服务器基本流程就是 Created with Raphal 2.3.0安装电话socket()分配电话号码bind()连接电话线listen()拿起话筒accept()函数介绍 socket() 其中…...

多分类、正则化问题

多分类问题 利用逻辑回归解决多分类问题&#xff0c;假如有一个训练集&#xff0c;有 3 个类别&#xff0c;分别为三角形 &#x1d466; 1&#xff0c;方框&#x1d466; 2&#xff0c;圆圈 &#x1d466; 3。我们下面要做的就是使用一个训练集&#xff0c;将其分成 3 个二…...

史上最全面的软件测试面试题总结(接口、自动化、性能全都有)

目录 思维发散 Linux 测试概念和模型 测试计划与工具 测试用例设计 Web项目 Python基础 算法 逻辑 接口测试 性能测试 总结感谢每一个认真阅读我文章的人&#xff01;&#xff01;&#xff01; 重点&#xff1a;配套学习资料和视频教学 思维发散 一个球&#xff…...

速来~与 Werner Vogels 博士一起探索敏捷性与创新速度一起提升的秘方

Amazon Web Services 的现代应用程序创新一直是 Amazon 公司坚持追求的核心目标。约20年前&#xff0c;我们经历了一次彻底的转型&#xff0c;旨在建立起“发明、发布、再发明、再发布、重新开始、洗牌、再重复”的快速迭代流程。正是此番探索&#xff0c;彻底改变了我们构建应…...

Apache Hadoop、HDFS介绍

目录Hadoop介绍Hadoop集群HDFS分布式文件系统基础文件系统与分布式文件系统HDFS简介HDFS shell命令行HDFS工作流程与机制HDFS集群角色与职责HDFS写数据流程&#xff08;上传文件&#xff09;HDFS读数据流程&#xff08;下载文件&#xff09;Hadoop介绍 用Java语言实现开源 允许…...

python“r e 模块“常见函数详解

正则表达式&#xff1a;英文Regular Expression,是计算机科学的一个重要概念&#xff0c;她使用一种数学算法来解决计算机程序中的文本检索&#xff0c;匹配等问题&#xff0c;正则表达式语言是一种专门用于字符串处理的语言。在很多语言中都提供了对它的支持&#xff0c;re模块…...

【数据结构】二叉树的四种遍历方式——必做题

写在前面学完上一篇文章的二叉树的遍历之后&#xff0c;来尝试下面的习题吧开始做题144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09;94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09;145. 二叉树的后序遍历 - 力扣&#xff08;LeetCode&#xff09…...

Nginx使用“逻辑与”配置origin限制,修复CORS跨域漏洞

目录1.漏洞报告2.漏洞复现3.Nginx 修复3.1 添加请求头3.2 配置origin限制2.3 调整origin限制1.漏洞报告 漏洞名称&#xff1a; CORS 跨域漏洞等级&#xff1a; 中危漏洞证明&#xff1a; Origin从任何域名都可成功访问&#xff0c;未做任何限制。漏洞危害&#xff1a; 因为同源…...

Laravel框架02:路由与控制器

Laravel框架02&#xff1a;路由与控制器一、路由配置文件二、路由参数三、路由别名四、路由群组五、控制器概述六、控制器路由七、接收用户输入一、路由配置文件 以web网页路由文件为例&#xff1a; 默认根路由 路由定义格式Route::请求方式(请求的URL, 匿名函数或控制响应的方…...

【POJ 2418】Hardwood Species 题解(映射)

描述 阔叶树是一种植物群&#xff0c;具有宽阔的叶子&#xff0c;结出果实或坚果&#xff0c;通常在冬天休眠。 美国的温带气候造就了数百种阔叶树种的森林&#xff0c;这些树种具有某些生物特征。例如&#xff0c;虽然橡树、枫树和樱桃都是硬木树&#xff0c;但它们是不同的物…...

React组件之间的通信方式总结(下)

一、写一个时钟 用 react 写一个每秒都可以更新一次的时钟 import React from react import ReactDOM from react-domfunction tick() {let ele <h1>{ new Date().toLocaleTimeString() }</h1>// Objects are not valid as a React child (found: Sun Aug 04 20…...

【RabbitMQ笔记07】消息队列RabbitMQ七种模式之Publisher Confirms发布确认模式

这篇文章&#xff0c;主要接收消息队列RabbitMQ七种模式之Publisher Confirms发布确认模式。 目录 一、消息队列 1.1、发布确认模式 1.2、案例代码 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;编写生产者【消息确认--单条确认】 &#xff08;3&#xf…...

【华为OD机试模拟题】用 C++ 实现 - IPv4 地址转换成整数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明IPv4 地址转换成整数题目输入输出示例一输入输出说明示例一输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,...

闭包与高阶函数

文中内容均来自于曾探《JavaScript设计模式与开发实践》的学习笔记。闭包作用域变量的作用域&#xff0c;就是指变量的有效范围。局部变量、全局变量。变量的搜索是从内到外而非从外到内的。变量的生命周期对于全局变量莱索&#xff0c;全局变量的生命周期是永久的&#xff0c;…...

人工智能轨道交通行业周刊-第35期(2023.2.20-2.26)

本期关键词&#xff1a;重庆智慧轨道、智能运维主机、标准轨距、地方铁路公报、景深、机器视觉应用 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通Rai…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...