【数据库】mysql常用的数据类型

数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。
有一些数据是要存储为数字的,数字当中有些是要存储为整数、小数、日期型等...
MySQL支持多种类型,大致可以分为四类:数值型、浮点型、日期/时间和字符串(字符)类型。

一、Text 类型(字符类型):
char(size):保存固定长度的字符串(可包含字母、数字以及特殊字符)
varchar(size):保存可变长度的字符串(可包含字母、数字以及特殊字符)
text:存放最大长度为 65,535 个字符的字符串。

1.1 字符与字节的区别
一个字符由于所使用的字符集的不同,会并存储在一个或多个字节中,所以一个字符占用多少个字节取决于所使用的字符集。
注意:char与varchar后面接的数据大小为存储的字符数,而不是字节数
在MySQL中,char、varchar和text类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度,但text不可以。
它们的存储方式和数据的检索方式也都不一样。
数据的检索效率是:char > varchar > text

1.2 存数据时的区别
char:char定义的是固定长度,长度范围为0-255,存储定长数据很方便,CHAR字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据不需要记得用什么trim之类的函数去过滤空格。
varchar:varchar是变长长度,长度范围为0-65535,但存储效率没有CHAR高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。
text:存储可变长度的非Unicode数据,最大长度为2^31-1个字符。text列不能有默认值,存储或检索过程中,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入。

1.3 取数据时的区别
数据库取char的数据时,会把后面的空格全部丢弃掉,也就是说,在char中的尾部存入空格时,最后取出来都会被丢弃;当然指定PAD_CHAR_TO_FULL_LENGTH时,在取数据时让尾部的空格保留。
而数据库在取varchar数据时,尾部空格会保留。

可以用上表来表示,当定义char时,不管你存入多少字符,都会占用到你定义的字符数,而用varchar时,则和你输入的字符数有关,会多一到两个字节来记录字节长度,当数据位占用的字节数小于255时,用1个字节来记录长度,数据位占用字节数大于255时,用2个字节来记录长度,还有一位来记录是否为nul值。

1.4 关于存储空间:
在使用UTF8字符集的时候,MySQL手册上是这样描述的:
基本拉丁字母、数字和标点符号使用一个字节;
大多数的欧洲和中东手写字母适合两个字节序列:扩展的拉丁字母(包括发音符号、长音符号、重音符号、低音符号和其它音符)、西里尔字母、希腊语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和其它语言;
韩语、中文和日本象形文字使用三个字节序列。
mysql每一行的最大字节数为65535,当你使用utf8,一个字符有可能占用三个字节的时候,varchar如果定义允许空的话能定义的最大长度为(65535-1-2)/3=21844.
Mysql在对比char,varchar,text类型的数据时,是不会把尾部的空格考虑在内的,这对所有字符集都适用,但在这里是除了like比较符的。

1.5 结论:
1、经常变化的字段用varchar;
2、知道固定长度的用char;
3、超过255字节的只能用varchar或者text;
4、能用varchar的地方不用text;
5、能够用数字类型的字段尽量选择数字类型而不用字符串类型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了;

二、Number 类型(数字类型):
tinyint(3):-128 到127常规。0到255无符号*。在括号中规定最大位数。
smallint(3):-32768到32767常规。0到65535无符号*。在括号中规定最大位数。
mediumint(3):-8388608到8388607普通。0to16777215无符号*。在括号中规定最大位数。
int(3):-2147483648到2147483647常规。0到4294967295无符号*。在括号中规定最大位数。
bigint(10):-9223372036854775808到9223372036854775807 常规。0到18446744073709551615无符号*。在括号中规定最大位数。
float(size,d)):带有浮动小数点的小数字。在括号中规定最大位数。在d参数中规定小数点右侧的最大位数。
double(size,d):带有浮动小数点的大数字。在括号中规定最大位数。在d参数中规定小数点右侧的最大位数。
decimal(size,d):作为字符串存储的double类型,允许固定的小数点。

三、Date 类型(日期类型):
date():日期格式:YYYY-MM-DD;注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'
datetime():日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS;注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'
timestamp():时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS;注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
time():时间格式:HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59'
year():2位或4位格式的年。注释:4位格式所允许的值:1901到2155;2位格式所允许的值:70到69,表示从1970到2069。

4、BLOB (binary large object),用来存储二进制大对象的字段类型。
BLOB往往是一个大文件,典型的BLOB是一张图片、一个声音或一个视频文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。
MySQL中,BLOB是个类型系列,共包括四种BLOB类型:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大尺寸不同。

字段类型 最大长度(字节)    存储需求
TinyBlob 255    值的长度加上用于记录长度的1个字节(8位)
Blob 65K        值的长度加上用于记录长度的2个字节(16位)
MediumBlob 16M  值的长度加上用于记录长度的3个字节(24位)
LongBlob 4G     值的长度加上用于记录长度的4个字节(32位)

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

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

相关文章

numpy、cv2等操作图片基本操作

相关包 matplotlibPILcv2numpy 各种操作 读取图片 1 matplotlib.pylab import pylab as plt import numpy as np img plt.imread(examples.png) print(type(img), img.dtype, np.min(img), np.max(img)) [out] (<type numpy.ndarray>, dtype(float32), 0.0, 1.0) …

【Python】base64模块对图片进行base64编码和解码

图片的base64编码就是可以将一副图片数据编码成一串字符串&#xff0c;使用该字符串代替图像地址。 这样做有什么意义呢&#xff1f;我们知道&#xff0c;我们所看到的网页上的每一个图片&#xff0c;都是需要消耗一个 http 请求下载而来的。 没错&#xff0c;不管如何&#xf…

Mysql错误2003 -Can't connect toMySQL server on 'localhost'(10061)解决办法

错误图片 昨天晚上还在用mysql来存储东西,而今天早上发现mysql数据库根本打不开,吓了我一大跳,本来就想重装mysql服务,但是我的数据库都没了,相当于大楼盖起来了,地基一下出现了裂缝,后来经过研究解决办法 如下 我发现mysql的服务一直无法启动如图 显示Cant connect toMySQL s…

【Python实战】使用python计算多种还款方式的还款计划

随着人们经济活动的增加&#xff0c;用钱的地方越来越多&#xff0c;不管是像买房这样的大额支出还是个人消费型支出&#xff0c;越来越多的人选择贷款来解决眼前的经济危机。 而申请贷款就涉及到选择不同的还款方式&#xff0c;所需要偿还的欠款综合也大有不同&#xff0c;那么…

python write报错a byte-like object is required.not str

办法一&#xff1a;根本原因是Python版本问题python2.x中要求用‘wb’&#xff0c;python3.x中要求用w 用open&#xff08;filename&#xff0c;‘w’&#xff09;方式 办法二&#xff1a;encode(ascii)

【Python】浮点数计算时的不准确性以及如何进行精确计算

浮点数一个普遍的问题就是在计算机的世界中&#xff0c;浮点数并不能准确地表示十进制。并且&#xff0c;即便是最简单的数学运算&#xff0c;也会带来不可控制的后果。因为&#xff0c;在计算机的世界中只认识0与1 因为在计算机里面&#xff0c;小数是不精确的&#xff0c;例如…

echarts自定义showlading()样式和文本

1、首先引入echarts.js 2、在页面定义自己的echarts变量 var myChart echarts.init(document.getElementById(main)); 3、自定义showLoading()样式 myChart.showLoading(default, {text:统计中&#xff0c;请稍候...,maskColor: #404a59,textColor: #fff,}); text:文本内…

【视频】视频基本参数介绍

视频&#xff08;Video&#xff09;泛指将一系列静态影像以电信号的方式加以捕捉、纪录、处理、储存、传送与重现的各种技术。 连续的图像变化每秒超过24帧&#xff08;frame&#xff09;画面以上时&#xff0c;根据视觉暂留原理&#xff0c;人眼无法辨别单幅的静态画面&#x…

测试人员做到这几点,线上80%的BUG将落入你手,企业将避免重大风险

BUG事故给敲了很大的警钟&#xff0c;也给公司带来重大损失&#xff0c;作为测试人员&#xff0c;我们如何提现发现线上BUG并及时解决&#xff0c;避免落入用户手中&#xff0c;给企业带来无法挽回的损失。 案例1&#xff1a; 1月20日凌晨&#xff0c;拼多多App因技术漏洞&am…

Django与jQuery通信;Django前后端传值

window.onloadfunction(){var user_info{{user_info|default_if_none:0}};if(user_info0){alert("您好没有登录&#xff01;");window.location.href"/login"; //跳转到登录界面} } 参考自&#xff1a;https://blog.csdn.net/PlusChang/article/details/7…

【Python】pysnooper模块对代码进行调试

一般情况下&#xff0c;在编写Python代码时&#xff0c;如果想弄清楚为什么Python代码没有按照预期执行的原因&#xff0c;比如你想知道哪些是正在运行&#xff0c;哪些没有运行&#xff0c;以及局部变量的值是什么... 通常我们会使用包含断点和观察模式等功能成熟的调试器&…

解决$ is not define

今天写js的时候&#xff0c;发现怎么也没有效果。然后我前端调试的时候报这样的错 $ is not define 这个错误我以前也出现过。所以就这个错误的解决&#xff0c;我来总结一下。 1.首先&#xff0c;"$"这个符号是在jquery中定义的。所以你要看一下&#xff0c;你有没…

模拟导入系统通讯录5000+手机号 校验大量数据处理

模拟导入系统通讯录5000手机号 校验大量数据处理 之前再测试一个导入手机通讯录系统时&#xff0c;随机抽了几个人的手机进行了测试&#xff0c;都导入显示正常 当公司BD进行项目试用时&#xff0c;导入通讯录一直处于下图加载中 1、于是进行抓包查看日志进行定位&#xff0c…

【股票】股票交易的手续费介绍以及计算

股票交易手续费是进行股票交易时所支付的手续费。委托买卖的手续费分“阶段式”和“跟价式”。(1)阶段式。根据股票价格和交易股数收取手续费。(2)跟价式。根据股票的交易金额收取手续费&#xff0c;目前世界上多采用跟价式。 我国目前主要是证券公司收取佣金和国家收取的印花税…

python3下使用cv2.imwrite存储带有中文路径图片或者绝对路径图片

由于imwrite前使用编码在python3中已经不适用&#xff0c;可用imencode代替&#xff0c;以下代码是从视频中获取第2帧保存在中文文件夹下的实例&#xff1a; 1 2 3 4 5 cap cv2.VideoCapture("***.mp4") cap.set(cv2.CAP_PROP_POS_FRAMES, 2) ret, framecap.read…

浅析python类继承(一)

面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力&#xff1a;它可以使用现有类的所有功能&#xff0c;并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”&#xff0c;被继承的类称为“基类”、“父…

【Python】常用的数据类型介绍以及它们之间相互转化

在学习一门语言的过程中&#xff0c;首先肯定就是要先接触到它所拥有的数据类型&#xff0c;Python拥有多种主要的数据类型&#xff0c;下面介绍一下下面9种数据类型&#xff0c;以及一些数据类型之间的转化。 目录 1、字符串 2、布尔类型 3、整数 4、浮点数 5、数字 6、列表 7…

django select option拼接时value中空格后的内容被截断

$new $("<option value"List[i] ">"List[i]"</option>" ); $("#project").append( $new ); 此时若value中的字符串有空格&#xff0c;则会被空格截断 解决方法&#xff1a; $new $("<option value"List…

Monkey随机性能压测初探(一)

Monkey介绍 Monkey程序由Android系统自带&#xff0c;是Android SDK提供的一个命令行工具&#xff0c; 可运行Android模拟器和实体设备上。Monkey会发送伪随机的用户事件流&#xff0c;通过Monkey程序模拟用户触摸屏幕、滑动、 按键等操作来对程序进行压力测试&#xff0c;检测…

【Java】使用前准备工作配置环境变量

我们要使用java前&#xff0c;必须先安装JDK并且配置相关的环境变量&#xff0c;如果我们未配置环境变量&#xff0c;那么我们在cmd命令中&#xff0c;输入javac&#xff0c;会提示“javac”不是内部或外部命令&#xff0c;这里主要介绍如何配置jdk的环境变量。 JDK官网下载&a…