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,一经查实,立即删除!

相关文章

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…

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…

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

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

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…

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

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

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

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

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;经过这一…

高德地图画带箭头的线_现代汽车把艺术展览搬到线上,邀您逛全景获奖展

Hyundai Blue Prize 2019获奖展“游戏社会&#xff1a;狼、猞猁和蚁群”(Play societies&#xff1a;wolves, lynx and ants)线上展览正式上线。《游戏社会: 狼、猞猁和蚁群》&#xff0c;以 “信息高速公路上的荒原狼”、“猞猁安全岛”和“蚁群游戏厅” 三段隐喻文本展开展览…

ssm 项目cannot resolve package_前端工程化之创建项目

前言在我们团队&#xff0c;刚开始创建项目&#xff0c;是直接使用框架的 cli 进行创建项目&#xff0c;并修改相关配置。随着项目的增多&#xff0c;沉淀了两套模板&#xff0c;平台端及移动端。后来&#xff0c;我们自己写了一个简单的 cli&#xff0c;并提供了 create 及 li…

android_secure写权限,android.permission.WRITE_SECURE_SETTINGS权限报错

在做Android的GPS这一块时&#xff0c;根据原生代码写的Widget&#xff0c;运行时总是会报错说需要android.permission.WRITE_SECURE_SETTINGS权限&#xff0c;于是便在Manifest.xml中添加该权限&#xff0c;但是保存时会报错提示该权限仅用于系统的app查看了很多资料都说需要将…

百度seo排名规则_百度关键词seo优化排名如何上首页

无涯孤客百度关键词seo优化排名快速上首页&#xff0c;是通过使用多种百度算法优化&#xff0c;让网站在搜索引擎上排名更好&#xff0c;我们做百度关键词排名的话&#xff0c;要比市面上绝大公司做的要稳定&#xff0c;也希望各位可以相信我们&#xff0c;我们可以将百度关键词…

数学难题html5小游戏答案,小学数学难题讲解及答案

第一讲速算与巧算例1 计算9&#xff0b;99&#xff0b;999&#xff0b;9999&#xff0b;99999解&#xff1a;在涉及所有数字都是9的计算中&#xff0c;常使用凑整法.例如将999化成1000—1去计算.这是小学数学中常用的一种技巧.9&#xff0b;99&#xff0b;999&#xff0b;9999&…

distinct过滤掉重复记录并且显示所有字段_MySQL的所有姿势,我都帮你准备好了...

mysql登录远程登录方式本地登陆方式mysql&#xff1a;mysql -h 主机名 -P 端口号 -u 用户名 -p密码 mysql&#xff1a;mysql -uroot -p密码数据库操作命令创建数据库、删除数据库、展示所有数据库名。查看当前数据库名、查看所有表、查看其他数据库的表。查看数据库的版本、表结…

HTML5海报生成器源码,原生js小项目 - canvas海报生成器

1.背景之前做过一个营销类移动端h5项目-海报生成器&#xff0c;上传用户本地图片合成海报并支持下载&#xff0c;这次有时间了整理整理。2.几个重点上传本地图片并支持预览处理ios照片翻转使用canvas对图片等比拉伸缩放并居中裁剪使用canvas绘制图片以及文本输出base64并支持下…

matlab length_MATLAB入门

一、操作界面1.功能区 2.当前文件夹 3.命令窗口4.工作区 5.程序编辑窗口 6.脚本文件&#xff08;1&#xff09;当前文件夹是MATLAB读取和存储文件的默认文件夹。 &#xff08;2&#xff09;当前文件夹可以修改或新建命令行窗口&#xff1a;用于输入命令&#xff08;或语句&…

docker 端口映射 udp_Docker 制作一键安装的本地无污染 DNS 域名服务

国庆休假回来&#xff0c;感觉和整个世界失联了&#xff0c;各种不通&#xff0c;不得不就自己本地的应用环境进一步的升级&#xff1a;搭建一个本地版本的无污染 DNS 域名服务。各种网络文章扫了一遍&#xff0c;推荐以下这篇文章&#xff1a;CoreDNS搭建无污染DNS指导思想基本…

快能通小学生计算机的游戏,亲子小游戏,帮助孩子更快学会交通安全知识

随着我国机动化进程加快和小汽车进入千家万户&#xff0c;如何安全乘坐机动车&#xff0c;如何在上放学途中保障儿童青少年的交通安全&#xff0c;成为儿童青少年交通安全保护的重要内容。下面小编介绍几个亲子小游戏&#xff0c;帮助孩子更快学会交通安全知识。认识交通标志游…