decimal是什么类型_SQLMysql数据类型

一 前言

每个数据库的数据类型从来都不是一个简单的数据结构,特别是使用不同的数据库,不同的引擎,其支持的数据类型也不一样,选择那种数据类型作为字段类型对数据库的性能也是天差地别,故对数据类型有个全面的认知,在数据库表设计的时候选择合适的数据类型就尤其重要;本篇是基于mysql的InnoDB的数据类型知识,要学就学主流知识;

学习本篇的基础是知识追寻者发过的SQL系列文章(公众号读者直接在专栏里面找即可)

《SQL-你真的了解什么SQL么?》

《SQL-小白最佳入门sql查询一》

《SQL-小白最佳入门sql查询二》

《SQL- 多年开发人员都不懂的插入与更新删除操作注意点》

《SQL-SQL事物操作》

公众号:知识追寻者

知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

二 基础数据类型

2.1 字符串类型

  • char(n)  类型 , 定长字符串,即储存的每个值占用的空间都一样;适用于储存长度都一样的字段,比如 电话号码,身份证号,密码等;mysql 在 储存char类型字段时,会自动删除末尾保留的空格;如果是SQL SERVER 其后面就会保留空白字符;其最多储存 0 - 255 个字符,即8位;
  • varchar(n) 类型, 变长字符串, 比如varchar(n)表示可以储存n个字节;当字符串长度小于等于255个字节时,其会使用 n 个字节储存数据,额外一个字节记录n值,比如varchar(200), 其实际为 varchar(201);如果字符串长度大于255个字节,其会用2个字节记录n值,比如 varchar(500) , 其实际为varchar(502);其最多储存 0-65535 字节,即64位;由于其是可变长度,故在更新的时候,性能开销比较大;
  • TEXT 长文本类型,存储大数据,其有一定的字符集和排序规则,故如果设置位text类型,性能会降低很多,占用的磁盘空间较大;其长度为0-65535 字节;其衍生的数据类型还有TINYTEXT (0-255字节), MEDIUMTEXT (0-16 777 215 字节),LONGTEXT 0-4 294 967 295字节);
  • blog类型 , 储存没有规则的二进制字符串,其存储 (0-65 535) 个字节;其衍生的类型有 TINYBLOB  (0-255字节), MEDIUMBLOB(0-16 777 215 字节), LONGBLOB(0-4 294 967 295字节);

实际开发中 一般会选择 char , varchar 类型进行储存数据,text少用,blog慎用,坑比较大;并且指定不同的数据类型长度也直接影响到数据库的性能,每次跟磁盘进行一次I/O的能力也不一样;

2.2 整型

  • tinyint     1字节   8 位
  • smallint    2字节   16位
  • mediumint   3字节    24 位
  • int         4字节 32位
  • bigint      8字节 64 位

其储存大小为 -2^(N-1)至 2^(N-1)-1 ,其中 N 为位数, 如果是无符号整型,则从0开似乎,没有负数,但其实际储存情况和有符号整型性能差不多,在实际开发中应该根据不同的业务需求,选择合适的类型;

常用tinyint(1)表示布尔型,1 为真,0为假;

2.3 浮点型

  • float(单精度)     4字节
  • double(双精度)    8字节
  • decimal, 其能指定储存精度,decimal(M,D) , 其中M代表总位数,D代表小数位,M-D 代表整数位;比如金钱相关的计算就推荐使用decimal , 否则造成精度丢失问题,去面试的时候如果问道使用浮点型就回家等通知吧!

2.4 日期时间类型

  • date , 日期 通常就是 YYYY-MM-DD 格式, 当然也可以格式化为其它格式,所有的格式化形式都不在本篇讨论范围内;
  • time, 时间 格式 hh:mm:ss ;
  • year 年份 YYYY;不建议使用YY
  • datetime , 日期时间格式 , 其日期范围 为 1001 至 9999 年,精度为秒;占用8位;
  • timestamp, 挺多人称其为时间戳,其实其是与Unix时间戳相同而已,从 1970 1 月 1日 午夜来表示秒数,最多储存至2038 年。其依赖于时区,占用4位;

在日常开发中推荐使用 timestamp 进行储存时间,性能相比于datetime 较好;它们的标准格式都为 YY-MM-DD hh:mm:ss

2.5 枚举与SET类型

  • enum(val1, val2, val3...), 用于储存固定值,比如性别男女, 四级 春夏秋冬;其内部使用整型排序,显示时使用字符串,故在排序的时候可能会发生一些奇怪的现象,可以用field进行指定排序; 储存大小为16位;

示例

create table test_enum ( `gender` enum('男', '女') );

INSERT INTO `zszxz`.`test_enum`(`gender`) VALUES ('男');
  • set(val1, val2, val3...), 集合, 类似于数组,相比于枚举只能存储单个值,其能储存多个值;储存大小为64位;

示例

create table test_set ( `gender` set('男', '女') );

INSERT INTO `zszxz`.`test_set`(`gender`) VALUES ('男,女');

2.6 其它

其它数据类型比如 ,bit , 储存位, 坑也很大;不建议使用;在众多数据类型中优先选择整型,其性能相比于字符串的排序规则等会快很多;字段的修饰符 通常有 NULL , NOT NULL , CONMENT 等, 如果是非空字段尽量默认为NOT NULL , 其能带来一定性能提升,并且在使用索引的时候相对简单;尽量不要使用外键,每次外键都会带来额外的性能开销;

ae86b05334d88b7bd8dd27c867303cfa.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505036.shtml

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

相关文章

python 栈和队列_python 栈和队列的基本实现

python中的列表结构可以用来实现栈和队列。 【栈】: 栈是一种数据结构,具有先入后出的特点,并且栈的所有操作只能在某一端进行,能进行操作的一端的第一个元素称为栈顶,另一端的第一个元素称为栈底 栈的五种基本方法&am…

e480win7显卡驱动_e480安装了windows7显卡驱动装不上

展开全部一、显卡驱动程序启用驱动程序签名功能启用驱动程序签名功能是成功安装显卡驱动的第e68a84e8a2ad3231313335323631343130323136353331333433663031一步,因为只有启动了驱动程序签名,才能阻止系统的自动安装驱动程序功能,才可以抢在系…

android oat如何提取dex文件字节码,Android: 使用oatdump反编译oat文件

网上经常看到有通过apktool将apk中的dex反编译成smali格式的文件,以便分析功能实现与破—解,确没怎么看到oat文件反通过oatdump反编译的,所以就写了一篇这样的文档。声明一下oat文件也是可以反编译的。本来想着通过oatdump处理之后&#xff0…

mybatis依赖_Spring Boot2 系列教程(二十一)整合 MyBatis

前面两篇文章和读者聊了 Spring Boot 中最简单的数据持久化方案 JdbcTemplate,JdbcTemplate 虽然简单,但是用的并不多,因为它没有 MyBatis 方便,在 SpringSpringMVC 中整合 MyBatis 步骤还是有点复杂的,要配置多个 Bea…

android获取图片格式,Android得到图片的真实格式——从本地文件或者网络文件流...

ImageFormatFeatures支持从InputStream或者File解析四种格式:jpg 、 png 、 webp 、 gif从文件本身解析格式,而不是从扩展名获取FormatHelper.getFormat(InputStream inputStream)FormatHelper.getFormat(File file)UsageStep 1Step 2解析格式String For…

python中setup函数的用法_python学习之setUp函数和tearDown函数

1,setUp():就是在一个类中最先被调用的函数,每次执行一个函数都要先执行这个函数,有几个函数就被调用几次,与放的位置无关,随便放到哪里都会先执行这个函数 2,tearDown():就是在一个类中最后被调用的函数,每个函数执行之后都会执行一次,与放的位置无关,随便放到哪里…

pagehelper的使用_SpringBoot项目中,如何更规范的使用PageHelper分页?

SpringBoot项目中&#xff0c;如何更规范的使用PageHelper分页&#xff0c;拉勾IT课小编为大家分解一. 开发准备1. 开发工具• IntelliJ IDEA 2020.2.32. 开发环境• Red Hat Open JDK 8u256• Apache Maven 3.6.33. 开发依赖SpringBoot<dependency><groupId>org.s…

2-路插入排序c语言算法,浅谈2路插入排序算法及其简单实现

2路插入排序算法是在直接插入排序算法的基础上增加了一个辅助数组&#xff0c;其目的是减少排序过程中的移动次数&#xff0c;需要增加n个记录的辅助空间。难点可能在于对取余的考虑吧&#xff0c;可以把辅助数组看成一个环状空间&#xff0c;这样就能更好的理解辅助空间中最大…

mysql安装被打断_Mysql的安装/性能优化/安全加固

aa安装&#xff1a;增加一个登录用户和群组#groupaddmysql#useradd -r -g mysql mysql解压缩Mysql数据包#tar-zxvf mysql-5.6.13.tar.gz进入Mysql解压缩目录#cd mysql-5.6.13配置安装mysql#cmake.#make &&make install建立配置文件#cp./support-files/my-medium.cnf/et…

python自动输入账号密码_Python如何基于selenium实现自动登录博客园

这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要做的准备&#xff1a; 本文章是使用Chrome&#xff0c;所以需要Chormedriver.exe&#xff0c;…

安卓软件错误log_Android编程实现捕获程序异常退出时的错误log信息功能详解

本文实例讲述了Android编程实现捕获程序异常退出时的错误log信息功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;很多时候我们程序无缘无故的就挂掉了&#xff0c;让我们一头雾水&#xff0c;如果刚好我们在调试&#xff0c;那我们可以通过错误log来查看是什么原因…

android 模拟长按菜单键_如何采用PLC梯形图实现单键启动程序

“PLC是一种专门为在工业环境下应用而设计的数字运算操作的电子装置。它采用可以编制程序的存储器&#xff0c;用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等操作的指令&#xff0c;并能通过数字式或模拟式的输入和输出&#xff0c;控制各种类型的机械或生产…

android 日期对话框,Android日期选择器对话框DatePickerDialog使用详解

调用Android原生日期选择器对话框就是DatePickerDialog&#xff0c;具体内容如下在Android4.4系统上效果如图&#xff1a;在Android5.0以上效果如图&#xff1a;1、Activity的onCreate方法中获取当时的年&#xff0c;月&#xff0c;日Calendar ca Calendar.getInstance();mYea…

c#endread怎么打印出来_NetworkStream.EndRead(IAsyncResult) 方法 (System.Net.Sockets) | Microsoft Docs...

处理异步读取的结束。Handles the end of an asynchronous read.public:override int EndRead(IAsyncResult ^ asyncResult);public override int EndRead (IAsyncResult asyncResult);override this.EndRead : IAsyncResult -> intPublic Overrides Function EndRead (asyn…

wp自定义帖子没标签_ofollow标签的作用有重大变化

nofollow标签的历史经典的nofollow标签作用和使用方法以前的帖子写过&#xff0c;详情读者可以参考以前帖子。nofollow标签&#xff08;准确说是属性&#xff0c;不过约定俗成&#xff0c;还是叫标签吧&#xff09;是Google和Yahoo等搜索引擎2005年推出的&#xff0c;目的是告诉…

android电视视频播放器,智能电视如何播放本地视频?当贝市场分享几款播放器...

原标题&#xff1a;智能电视如何播放本地视频&#xff1f;当贝市场分享几款播放器对视频清晰度要求更高的用户普遍会自己下载视频&#xff0c;然后通过本地播放的方式观影&#xff0c;那么&#xff0c;下面就给大家介绍几款智能电视的本地视频播放软件&#xff0c;包你好用。当…

c 复杂的前置后置面试题_你被哪些C语言面试题坑过?

最近在《深入理解计算机系统》上看到一道题&#xff0c;分享一下&#xff1a;假设我们在对有符号值使用补码运算的32位机器人运行代码。对于有符号值使用的是算术右移&#xff0c;而对于无符号值使用的是逻辑右移。变量的声明和初始化如下&#xff1a;int x foo(); //任意值in…

python 三引号_Python 简明教程 --- 4,Python 变量与基本数据类型

微信公众号&#xff1a;码农充电站pro 个人主页&#xff1a;https://codeshellme.github.io任何一个人都会写出能够让机器理解的代码&#xff0c;只有好的程序员才能写出人类可以理解的代码。 —— Martin Fowler 1&#xff0c;什么是变量计算机的本质是处理数据&#xff0c;数…

鸿蒙系统手机9月11日,鸿蒙系统9月11日,将有望正式成为国际第三大手机操作生态系统...

原标题&#xff1a;鸿蒙系统9月11日&#xff0c;将有望正式成为国际第三大手机操作生态系统众所周知&#xff0c;当时华为鸿蒙系统还处于1.0版本的时候&#xff0c;这项技术就已经被运用到了荣耀智能屏上&#xff0c;目前该系统也已经过渡到了华为的手表上&#xff0c;经过这一…

lisp 所在图幅号计算_地图标准分幅与编号计算(二)新图幅号

新图幅号1991年制订了新的《国家基本比例尺地形图分幅和编号》(GB/T 13989-92 )的国家标准&#xff0c;并给出了不同标准比例尺地形图的编给规范及图式。新测和更新的地图&#xff0c;照此标准进行分幅和编号。我国基本比例尺的地形图包括1:5000、1:1万、1:2.5万、1:5万、1:10万…