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)组样例,每次给出一棵深度为d的k叉树, 其中,第i层深的节点个数为 保证k叉树的所有节点个数tot不超过1e18, 求在k叉树上构建一棵大小恰为x的连通块,所需要断开的最少的树边的条数(x<tot<1e18)…...
数据挖掘概述
目录1、数据挖掘概述2、数据挖掘常用库3、模型介绍3.1 分类3.2 聚类3.3 回归3.4 关联3.5 模型集成4、模型评估ROC 曲线5、模型应用1、数据挖掘概述 数据挖掘:寻找数据中隐含的知识并用于产生商业价值 数据挖掘产生原因:海量数据、维度众多、问题复杂 数…...
linux kernel iio 架构
linux kernel iio 架构讲解Linux IIO(Industrial I/O)架构是Linux内核提供的一种用于支持各种类型传感器和数据采集设备的子系统,包括温度、压力、湿度、加速度、光度等多种传感器。IIO架构的核心是一个通用的IIO子系统,它提供了一…...
Socket通信详解
Socket通信详解 文章目录Socket通信详解Socket流程介绍函数介绍编程实例Socket流程介绍 socket通信类似于电话通信,其服务器基本流程就是 Created with Raphal 2.3.0安装电话socket()分配电话号码bind()连接电话线listen()拿起话筒accept()函数介绍 socket() 其中…...
多分类、正则化问题
多分类问题 利用逻辑回归解决多分类问题,假如有一个训练集,有 3 个类别,分别为三角形 𝑦 1,方框𝑦 2,圆圈 𝑦 3。我们下面要做的就是使用一个训练集,将其分成 3 个二…...
史上最全面的软件测试面试题总结(接口、自动化、性能全都有)
目录 思维发散 Linux 测试概念和模型 测试计划与工具 测试用例设计 Web项目 Python基础 算法 逻辑 接口测试 性能测试 总结感谢每一个认真阅读我文章的人!!! 重点:配套学习资料和视频教学 思维发散 一个球ÿ…...
速来~与 Werner Vogels 博士一起探索敏捷性与创新速度一起提升的秘方
Amazon Web Services 的现代应用程序创新一直是 Amazon 公司坚持追求的核心目标。约20年前,我们经历了一次彻底的转型,旨在建立起“发明、发布、再发明、再发布、重新开始、洗牌、再重复”的快速迭代流程。正是此番探索,彻底改变了我们构建应…...
Apache Hadoop、HDFS介绍
目录Hadoop介绍Hadoop集群HDFS分布式文件系统基础文件系统与分布式文件系统HDFS简介HDFS shell命令行HDFS工作流程与机制HDFS集群角色与职责HDFS写数据流程(上传文件)HDFS读数据流程(下载文件)Hadoop介绍 用Java语言实现开源 允许…...
python“r e 模块“常见函数详解
正则表达式:英文Regular Expression,是计算机科学的一个重要概念,她使用一种数学算法来解决计算机程序中的文本检索,匹配等问题,正则表达式语言是一种专门用于字符串处理的语言。在很多语言中都提供了对它的支持,re模块…...
【数据结构】二叉树的四种遍历方式——必做题
写在前面学完上一篇文章的二叉树的遍历之后,来尝试下面的习题吧开始做题144. 二叉树的前序遍历 - 力扣(LeetCode)94. 二叉树的中序遍历 - 力扣(LeetCode)145. 二叉树的后序遍历 - 力扣(LeetCode)…...
Nginx使用“逻辑与”配置origin限制,修复CORS跨域漏洞
目录1.漏洞报告2.漏洞复现3.Nginx 修复3.1 添加请求头3.2 配置origin限制2.3 调整origin限制1.漏洞报告 漏洞名称: CORS 跨域漏洞等级: 中危漏洞证明: Origin从任何域名都可成功访问,未做任何限制。漏洞危害: 因为同源…...
Laravel框架02:路由与控制器
Laravel框架02:路由与控制器一、路由配置文件二、路由参数三、路由别名四、路由群组五、控制器概述六、控制器路由七、接收用户输入一、路由配置文件 以web网页路由文件为例: 默认根路由 路由定义格式Route::请求方式(请求的URL, 匿名函数或控制响应的方…...
【POJ 2418】Hardwood Species 题解(映射)
描述 阔叶树是一种植物群,具有宽阔的叶子,结出果实或坚果,通常在冬天休眠。 美国的温带气候造就了数百种阔叶树种的森林,这些树种具有某些生物特征。例如,虽然橡树、枫树和樱桃都是硬木树,但它们是不同的物…...
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发布确认模式
这篇文章,主要接收消息队列RabbitMQ七种模式之Publisher Confirms发布确认模式。 目录 一、消息队列 1.1、发布确认模式 1.2、案例代码 (1)引入依赖 (2)编写生产者【消息确认--单条确认】 (3…...
【华为OD机试模拟题】用 C++ 实现 - IPv4 地址转换成整数(2023.Q1)
最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明IPv4 地址转换成整数题目输入输出示例一输入输出说明示例一输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,...
闭包与高阶函数
文中内容均来自于曾探《JavaScript设计模式与开发实践》的学习笔记。闭包作用域变量的作用域,就是指变量的有效范围。局部变量、全局变量。变量的搜索是从内到外而非从外到内的。变量的生命周期对于全局变量莱索,全局变量的生命周期是永久的,…...
人工智能轨道交通行业周刊-第35期(2023.2.20-2.26)
本期关键词:重庆智慧轨道、智能运维主机、标准轨距、地方铁路公报、景深、机器视觉应用 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通Rai…...
一键部署工具OneClickCopaw:从脚本化到容器化的自动化实践
1. 项目概述与核心价值最近在折腾一些自动化部署和配置管理的工作,发现一个挺有意思的项目,叫iwanglei1/OneClickCopaw。光看这个名字,可能有点摸不着头脑,但如果你也经常需要在不同环境里快速复制一套开发或测试环境,…...
uni-number-box深度解析:从基础属性到高级双向绑定实战
1. uni-number-box基础入门:从零开始玩转数字输入框 第一次接触uni-number-box时,我也觉得这不就是个简单的数字加减控件吗?直到在电商项目中真正用起来,才发现这个看似简单的组件藏着不少门道。uni-number-box是uni-app框架提供的…...
3步解锁联想刃7000k BIOS隐藏功能:安全提升硬件性能的完整指南
3步解锁联想刃7000k BIOS隐藏功能:安全提升硬件性能的完整指南 【免费下载链接】Lenovo-7000k-Unlock-BIOS Lenovo联想刃7000k2021-3060版解锁BIOS隐藏选项并提升为Admin权限 项目地址: https://gitcode.com/gh_mirrors/le/Lenovo-7000k-Unlock-BIOS 联想刃7…...
Claude 3.5 Sonnet重磅升级(开发者必看的3个隐藏API调用技巧)
更多请点击: https://intelliparadigm.com 第一章:Claude 3.5 Sonnet重磅升级概览 Anthropic 正式发布 Claude 3.5 Sonnet,作为当前推理模型中响应速度与智能水平的全新标杆,其在多模态理解、长上下文处理及代码生成能力上实现显…...
Flutter 自定义动画完全指南
Flutter 自定义动画完全指南 引言 动画是现代移动应用的重要组成部分,它能够提升用户体验,使界面更加生动。Flutter 提供了强大的动画系统,本文将深入探讨如何创建自定义动画效果。 动画基础回顾 动画类型 补间动画 (Tween Animation) - 最常…...
如何快速掌控Windows浏览器自由:3步掌握EdgeRemover终极系统优化工具
如何快速掌控Windows浏览器自由:3步掌握EdgeRemover终极系统优化工具 【免费下载链接】EdgeRemover A PowerShell script that correctly uninstalls or reinstalls Microsoft Edge on Windows 10 & 11. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRem…...
从源码细节看muduo为何比libevent2快70%:一次4096字节读取限制引发的性能思考
从缓冲区设计揭秘高性能网络库的优化哲学 在构建高并发服务器时,网络库的性能差异往往源于看似微小的设计决策。当两个知名网络库在相同硬件条件下出现70%的吞吐量差距时,这个数字背后隐藏的是对系统调用、内存管理和数据流控制的深刻理解差异。本文将从…...
3大核心技术解密:LeagueAkari本地自动化工具架构设计与实战指南
3大核心技术解密:LeagueAkari本地自动化工具架构设计与实战指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit LeagueAkari是一款…...
Dell G15散热终极解决方案:开源温度控制中心完全指南
Dell G15散热终极解决方案:开源温度控制中心完全指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 Dell G15笔记本用户是否经常遭遇游戏卡顿、性…...
Pangolin GUI实战:给你的C++机器人仿真程序加个带按钮和滑块的3D控制面板
Pangolin GUI实战:为C机器人仿真构建3D交互控制面板 在机器人算法开发过程中,仿真验证是不可或缺的环节。传统方式下,开发者往往需要反复修改代码参数或通过命令行调整变量,这种"编码-编译-运行"的循环效率低下…...
