MySQL数据类型
- 格式:docx
- 大小:19.31 KB
- 文档页数:8
MySQL(⼆)数据库数据类型详解 序⾔ 今天去健⾝了,感觉把⾝体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这⾥讲清楚了,以后在看到什么数据类型,咱度应该认识,下⾯就跟着我的节奏去把这个拿下吧。
---WZY⼀、数据类型 MySQL的数据类型有⼤概可以分为5种,分别是整数类型、浮点数类型和定点数类型、⽇期和时间类型、字符串类型、⼆进制类型。
现在可以来看看你对这5种类型的熟悉程度,哪个看起来懵逼了,那就说明⾃⼰哪个不熟悉,不理解。
注意:整数类型和浮点数类型可以统称为数值数据类型,这不难理解。
数值数据类型 整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT 浮点数类型:FLOAT、DOUBLE 定点⼩数:DECIMAL ⽇期/时间类型 YEAR、TIME、DATE、DATETIME、TIMESTAMP 字符串类型 CHAR、VARCHAR、TEXT、ENUM、SET等 ⼆进制类型 BIT、BINARY、VARBINARY、BLOB 1、整数类型 不管你学什么语⾔,在基础⽅⾯,都应该知道 1个字节= 8位⼆进制数。
每个类型的取值范围也就能够知道,⽐如TINYINT占⽤1个字节,也就是8位,2的8次⽅减1等于255,也就是说如果代表没符号的整数,该取值范围为0~255,如果是有符号的,最⾼位为符号号位,也就是2的7次⽅减1,也就是127,取值范围为-128~127,为什么需要减1,这个问题就需要考虑临界值的问题了。
⽽考虑临界值问题⼜有需要讨论原码补码反码的知识,这些度不是我们讨论的重点,所以在这就⾃⾏百度。
给出⼀张范围表,给⼤家做参考。
不同整数类型的取值范围 根据⾃⼰所需去选取不同的类型名称, 例如: CREATE TABLE aaa( id INT(10) PRIMARY KEY, age INT(6) ); 这个例⼦中INT(10)、INT(6) 括号中的数字表⽰的是该数据类型指定的显⽰宽度,指定能够显⽰的数值中数字的个数。
mysql数据类型——字符串char(m)和varchar(m)char(m) 定长字符串类型 ⾮ Unicode 字符varchar(m) 变长字符串类型 ⾮ Unicode 数据说明:M为最⼤可存储字节数汉⼦占两个字节,通过指定m,来限制存储的最⼤字符数长度,char(20)和varchar(20)将最多只能存储20个字符,超过的字符将会被截掉。
m必须⼩于该类型允许的最⼤字符数。
⼀ char(m)类型Char(m) 最⼤字节数255定长类型 m可取0-255 它的右边填充空格以达到指定长度,当检索到char值时,尾部的空格被删除掉 (性别密码) CHAR 类型⽤于定长字符串,并且必须在圆括号内⽤⼀个⼤⼩修饰符来定义。
这个⼤⼩修饰符的范围从 0-255。
注意:⽐指定长度⼤的值将被截短,⽽⽐指定长度⼩的值将会⽤空格作填补。
所以char类型存储的字符串末尾不能有空格,varchar不受此限制。
⼆ varchar(m)类型Varchar(m) 最⼤字节65535可变长度 m取0-65535 只保存需要字符数,另加⼀个字节来声明长度(⽤户名⽂章标题) VARCHAR 类型只使⽤存储字符串实际需要的长度(增加⼀个额外字节来存储字符串本⾝的长度)来存储值。
⽐指定长度⼤的值将被截短。
变化⼀-> MySQL 数据库的varchar类型在4.1以下的版本中的最⼤长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定)。
在 MySQL5.0以上的版本中,varchar数据类型的长度⽀持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字节, 也就是说,在4.1或以下版本中需要使⽤固定的TEXT或BLOB格式存放的数据可以使⽤可变长的varchar来存放,这样就能有效的减少数据库⽂件的⼤⼩。
变化⼆——>MySQL 数据库的varchar类型在4.1以下的版本中,nvarchar(存储的是Unicode数据类型的字符)不管是⼀个字符还是⼀个汉字,都存为2个字节,⼀般⽤作中⽂或者其他语⾔输⼊,这样不容易乱码 ; varchar: 汉字是2个字节,其他字符存为1个字节,varchar适合输⼊英⽂和数字。
MYSQL数据类型——字符串类型⼀、字符串类型在SQL中,将字符串类型分成了6类:char,varchar,text,blob,enum和set。
1.1 定长字符串定义:char,磁盘(⼆维表)在定义结构的时候,就以及确定了最终数据的存储长度。
Char(L): L代表length,可以存储的长度,单位为字符,最⼤长度值可以为255.Char(4):在UTF8环境下,需要4*3=12个字节。
1.2 变长字符串定义:varchar,在分配空间的时候,按照最⼤的空间分配,但是实际上最终⽤了多少,是根据具体的数据来确定。
Varchar(L): L表⽰字符长度,理论长度是65536个字符,但是会多出1到2个字节来确定存储的实际长度Varchar(10): 的确存了10个汉字,UTF8环境,10*3+1=31存储了3个汉字,UTF8环境,3*3+1=10(bytes)定长与变长的存储实际空间(UTF8)存储实际空间Char(4)Varchar(4)Char占⽤字节Varchar占⽤字节ABCD ABCD ABCD4*3=124*3+1=13A A A4*3=121*3+1=4ABCDE××数据超过长度数据超过长度如何选择定长或者是变长字符串呢?定长的磁盘空间⽐较浪费,但是效率⾼:如果数据基本上确定长度都⼀样,就是使⽤定长,如:⾝份证,电话号码,⼿机号码等变长的磁盘空间⽐较节省,但是效率低:如果数据不能确定长度(不同数据有变化),如姓名、地址等。
1.3 ⽂本字符串如果数据量⾮常⼤,通常说超过255个字符就会使⽤⽂本字符串⽂本字符串根据存储的格式进⾏分类:text和blobText: 存储⽂字(⼆进制数据实际上都是存储路径)Blob: 存储⼆进制数据(通常不⽤)1.4 枚举字符串枚举定义:enum,事先将所有可能出现的结果都设计好,实际上存储的数据都必须是规定好的数据中的⼀个。
枚举的使⽤⽅式定义:enum(可能出现的元素列表); //如 enum(‘男’,‘⼥’,‘不男不⼥’,‘妖’,‘保密’);使⽤:存储数据,只能存储上⾯定义好的数据(a) 创建枚举表1CREATE TABLE my_enum(gender enum('男','⼥','保密')) charset utf8;(b)加⼊数据作⽤之⼀:规范数据格式;数据只能是规定的数据的其中⼀个1insert into my_enum values('男'),('保密'); --有效数据2insert into my_enum values('male'); --错误数据(没有male元素)(b)作⽤之⼆:节省存储空间(枚举通常有⼀个别名:单选框):枚举实际存储的是数值⽽不是字符串本⾝。
mysql float 详解MySQL是一种开源的关系型数据库管理系统,广泛应用于各种应用程序中。
在MySQL中,float是一种数据类型,用于存储单精度浮点数(浮点数是一种带有小数部分的数字)。
本文将详细介绍MySQL中的float数据类型的特点、用法和注意事项。
一、float数据类型的特点float数据类型在MySQL中有以下几个特点:1. 范围:float类型可以存储的范围是-3.402823466E+38到-1.175494351E-38、0或 1.175494351E-38到3.402823466E+38,即约为10的-38次方到10的38次方之间的数值。
2. 存储空间:float类型占用4个字节的存储空间。
3. 精度:float类型的精度是单精度的,约为7位有效数字。
这意味着float类型的数值在存储和计算过程中可能存在一定的精度损失。
二、float数据类型的用法在MySQL中,可以使用float关键字声明一个字段为float类型。
例如,创建一个名为salary的表,其中包含一个名为amount的float类型字段,可以使用以下语句:CREATE TABLE salary (amount float);在插入数据时,可以直接将浮点数赋值给float类型的字段,如下所示:INSERT INTO salary (amount) VALUES (1234.56);可以通过SELECT语句查询float类型的字段的值,如下所示:SELECT amount FROM salary;三、float数据类型的注意事项在使用float数据类型时,需要注意以下几点:1. 精度损失:由于float类型的精度有限,可能会导致数值的精度损失。
因此,在对精度要求较高的场景中,建议使用double或decimal类型来替代float类型。
2. 精确比较:由于float类型存在精度损失,因此在比较两个float 类型的数值是否相等时,不宜直接使用等号(=)进行比较,而应该使用范围比较或设置一个精度误差范围进行比较。
MySql数据库的列类型(字段类型)MySQL数据库的表是一个二维表,由一个或多个数据列构成。
每个数据列都有它的特定类型,该类型决定了MySQL如何看待该列数据,我们可以把整型数值存放到字符类型的列中,MySQL则会把它看成字符串来处理。
MySQL中的列类型有三种:数值类、字符串类和日期/时间类。
从大类来看列类型和数值类型一样,都是只有三种。
但每种列类型都还可细分。
下面对各种列类型进行详细介绍。
数值类的数据列类型数值型的列类型包括整型和浮点型两大类。
TINYINT:1字节非常小的正整数,带符号:-128~127,不带符号:0~255SMALLINT:2字节小整数,带符号:-32768~32767,不带符号:0~65535MEDIUMINT:3字节中等大小的整数,带符号:-8388608~8388607,不带符号:0~16777215INT:4字节标准整数,带符号:-2147483648~2147483647,不带符号:0~4294967295BIGINT:8字节大整数,带符号:-9223372036854775808~9233372036854775807,不带符号:0~18446744073709551615FLOAT:4字节单精度浮点数,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38 DOUBLE:8字节双精度浮点数,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308DECIMAL:M+2字节以字符串形式表示的浮点数,它的取值范围可变,由M和D的值决定。
整型数据列类型MySQL有五种整型数据列类型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。
它们之间的区别是取值范围不同,存储空间也各不相同。
在整型数据列后加上UNSIGNED属性可以禁止负数,取值从0开始。
mysql数据库的number类型全文共四篇示例,供读者参考第一篇示例:MySQL数据库的Number类型是一种非常常用的数据类型,它用来存储数值型数据,包括整数和小数。
在实际的数据库设计和开发中,我们经常会用到Number类型来存储各种数字数据,比如订单金额、产品价格、数量等等。
在本文中,我们将详细介绍MySQL数据库中的Number类型,包括其各种子类型和用法。
MySQL数据库中的Number类型主要包括两种子类型,即整数型和浮点型。
整数型包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,分别用来存储不同范围的整数数据。
浮点型包括FLOAT和DOUBLE,用来存储小数数据。
下面我们将分别介绍这些Number类型的特点和用法。
1. TINYINTTINYINT类型用来存储小范围的整数数据,取值范围为-128到127。
TINYINT类型占用1个字节的存储空间,适用于存储性别、状态等只有两个取值的数据。
6. FLOATFLOAT类型用来存储单精度浮点数,即小数数据。
FLOAT类型占用4个字节的存储空间,可以存储6-7位的有效数字,适用于存储科学计算、工程测量等领域的数据。
第二篇示例:MySQL数据库中的number类型主要用于存储数值型数据,包括整型和浮点型两种。
整型数据包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,而浮点型数据包括FLOAT和DOUBLE。
在数据库表的设计中,合理地选择number类型可以提高数据库的性能和数据存储效率。
让我们来了解一下MySQL数据库中number类型的具体描述和用法。
1. TINYINT:TINYINT类型用于存储非常小的整数数据,范围在-128到127之间。
它占用1个字节的存储空间,适用于存储布尔类型数据或者只需要记录小整数的场景。
6. FLOAT:FLOAT类型用于存储单精度浮点数数据,范围在-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38之间。
mysql数据库设计原则MySQL数据库设计原则MySQL是一个开源的关系型数据库管理系统,被广泛用于各种应用程序中。
在设计MySQL数据库时,需要遵循一些原则,以确保数据库的正常运行和高效性能。
本文将介绍一些重要的MySQL数据库设计原则。
一、数据类型选择1.1 整数类型在MySQL中,整数类型有多种选择,如TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。
在选择整数类型时,需要根据实际情况来确定所需的最小和最大值范围,并选择最小的数据类型来存储数据。
这样可以节省存储空间,并提高查询速度。
1.2 字符串类型在MySQL中,字符串类型有多种选择,如CHAR、VARCHAR、TEXT和BLOB等。
在选择字符串类型时,需要考虑到所需存储的字符集、字符长度和是否需要进行全文搜索等因素,并根据实际情况来确定所需的最小和最大长度,并选择最小的数据类型来存储数据。
二、表设计2.1 表命名规范为了方便管理和维护数据库,在设计表时应该遵循一定的命名规范。
表名应该具有描述性,并且使用下划线来分隔单词。
2.2 数据库范式为了保证数据完整性和减少冗余数据,在设计表时应该遵循一定的数据库范式。
通常情况下,应该尽可能地将数据分解成更小的表,并使用外键来关联这些表。
2.3 索引设计在MySQL中,索引是提高查询速度的重要手段。
在设计表时,应该根据实际情况来选择需要创建索引的列,并使用合适的索引类型来提高查询速度。
三、安全性设计3.1 用户权限管理在MySQL中,用户权限管理是非常重要的。
应该根据实际情况为每个用户分配不同的权限,并且定期更新密码和修改访问权限。
3.2 数据库备份和恢复为了保证数据安全性,在设计数据库时应该考虑到数据备份和恢复问题。
可以使用MySQL自带的备份工具或第三方工具进行备份,以便在出现故障时能够快速恢复数据。
四、性能优化4.1 查询优化在MySQL中,查询是最常用的操作之一。
四、MySQL数据类型和运算符 数据库表由多列字段构成,每⼀个字段指定了不同的数据类型。
指定字段的数据类型之后,也就决定了向字段插⼊的数据内容。
不同的数据类型也决定了MySQL在存储它们的时候使⽤的⽅式,以及在使⽤它们的时候选择什么运算符号进⾏运算。
⼀、MySQL数据类型介绍 MySQL⽀持多种数据类型,主要有数值类型、⽇期/时间类型和字符串类型。
(1)数值数据类型:包括整数类型TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点⼩数数据类型FLOAT和DOUBLE,定点⼩数类型DECIMAL。
(2)⽇期/时间类型:包括YEAR、TIME、DATE、DATETIME和TIMESTAMP。
(3)字符串类型:包括CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET等。
字符串类型⼜分为⽂本字符串和⼆进制字符串。
1.1 整数类型 数值型数据类型主要⽤来存储数字,MySQL提供了多种数值数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越⼤,其所需的存储空间也会越⼤。
MySQL主要提供的整数类型有:TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、BIGINT。
整数类型的属性字段可以添加AUTO_INCREMENT⾃增约束条件。
下表列出了MySQL中的数值类型:MySQL中的整数型数据类型数据名称说明存储需求默认宽度值TINYINT很⼩的整数1个字节4SMALLINT⼩的整数2个字节6MEDIUMINT中等⼤⼩的整数3个字节9INT(INTEGER)普通⼤⼩的整数4个字节11BIGINT⼤整数8个字节20 根据占⽤字节数可以求出每⼀种数据类型的取值范围,例如TINYINT需要1个字节(8bits)来存储,那么TINYINT⽆符号数的最⼤值为28-1,即255;TINYINT有符号数的最⼤值为27-1,即127。
mysql中数据类型N我们要把现实世界中的各种信息转换成计算机能理解的东西,这些转换后的信息就形成了数据。
例如,某⼈的出⽣⽇期是“1987年5⽉23⽇”,他的⾝⾼是170厘⽶,等等。
数据不仅包括数字、字母、⽂字和其他特殊字符组成的⽂本形式的数据,⽽且还包括图形、图像、动画、影像、声⾳等多媒体数据。
但使⽤最多、最基本的仍然是⽂本数据。
1. mysql的数据类型在mysql中有如下⼏种数据类型:(1)数值型数值是诸如32 或153.4 这样的值。
mysql ⽀持科学表⽰法,科学表⽰法由整数或浮点数后跟“e”或“e”、⼀个符号(“+”或“-”)和⼀个整数指数来表⽰。
1.24e+12 和23.47e-1 都是合法的科学表⽰法表⽰的数。
⽽1.24e12 不是合法的,因为指数前的符号未给出。
浮点数由整数部分、⼀个⼩数点和⼩数部分组成。
整数部分和⼩数部分可以分别为空,但不能同时为空。
数值前可放⼀个负号“-”以表⽰负值。
(2)字符(串)型字符型(也叫字符串型,简称串)是诸如“hello, world!”或“⼀个馒头引起的⾎案”这样的值,或者是电话号码87398413这样的值。
既可⽤单引号也可⽤双引号将串值括起来。
初学者往往分不清数值87398143和字符串87398143的区别。
都是数字啊,怎么⼀个要⽤数值型,⼀个要⽤字符型呢?关键就在于:数值型的87398143是要参与计算的,⽐如它是⾦融中的⼀个货款总额;⽽字符型的87398143是不参与计算的,只是表⽰电话号码,这样的还有街道号码、门牌号码等等,它们都不参与计算。
(3)⽇期和时间型⽇期和时间是⼀些诸如“2006-07-12”或“12:30:43”这样的值。
mysql还⽀持⽇期/时间的组合,如“2006-07-12 12:30:43”。
(4)null值null表⽰未知值。
⽐如填写表格中通讯地址不清楚留空不填写,这就是null值。
我们⽤create table语句创建⼀个表(参看前⾯的章节),这个表中包含列的定义。
MySQL数据类型(最⼤值和最⼩值)MySQL数据类型(最⼤值和最⼩值)1、整型MySQL数据类型含义(有符号)tinyint(m)1个字节范围(-128~127)smallint(m)2个字节范围(-32768~32767)mediumint(m)3个字节范围(-8388608~8388607)int(m)4个字节范围(-2147483648~2147483647)bigint(m)8个字节范围(+-9.22*10的18次⽅)取值范围如果加了unsigned,则最⼤值翻倍,如tinyint unsigned的取值范围为(0~255)。
int(m)⾥的m是表⽰SELECT查询结果集中的显⽰宽度,不知道这个m有什么⽤。
int 占10位,存不了⼿机号(11位)2、浮点型(float和double) 浮点型在数据库中存放的是近似值MySQL数据类型含义float(m,d)单精度浮点型 8位精度(4字节) m总个数,d⼩数位double(m,d)双精度浮点型 16位精度(8字节) m总个数,d⼩数位设⼀个字段定义为float(5,3),如果插⼊⼀个数123.45678,实际数据库⾥存的是123.457,但总个数还以实际为准,即6位。
3、定点数定点类型在数据库中存放的是精确值浮点型在数据库中存放的是近似值,⽽定点类型在数据库中存放的是精确值。
decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是⼩数位。
4、字符串(char,varchar,_text)MySQL数据类型含义char(n)固定长度,最多255个字符varchar(n)可变长度,最多65535个字节tinytext可变长度,最多255个字符text可变长度,最多65535个字符mediumtext可变长度,最多2的24次⽅-1个字符longtext可变长度,最多2的32次⽅-1个字符。
mysql各数据类型的⼤⼩及长度数字型类型⼤⼩范围(有符号)范围(⽆符号)⽤途TINYINT 1 字节(-128,127)(0,255)⼩整数值SMALLINT 2 字节(-32 768,32 767)(0,65 535)⼤整数值MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)⼤整数值INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)⼤整数值BIGINT8 字节(-9 233 372 036 854 775 808,9 223 372036 854 775 807)(0,18 446 744 073 709 551 615)极⼤整数值FLOAT 4 字节(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466E+38)单精度浮点数值DOUBLE8 字节(1.797 693 134 862 315 7 E+308,2.225073 858 507 201 4 E-308),0,(2.225073 858 507 201 4 E-308,1.797 693134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度浮点数值DECIMAL 对DECIMAL(M,D),如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值⼩数值⽆符号整数⽤法:CREATE TABLE t7(id INT AUTO_INCREMENT PRIMARY KEY,url VARCHAR(40),crcurl INT UNSIGNED NOT NULL DEFAULT 0);字符类型CHAR0-255字节定长字符串VARCHAR0-255字节变长字符串TINYBLOB0-255字节不超过 255 个字符的⼆进制字符串TINYTEXT0-255字节短⽂本字符串BLOB0-65 535字节⼆进制形式的长⽂本数据TEXT0-65 535字节长⽂本数据MEDIUMBLOB0-16 777 215字节⼆进制形式的中等长度⽂本数据MEDIUMTEXT0-16 777 215字节中等长度⽂本数据LOGNGBLOB0-4 294 967 295字节⼆进制形式的极⼤⽂本数据LONGTEXT0-4 294 967 295字节极⼤⽂本数据枚举集合ENUM (最多65535个成员) 64KBSET (最多64个成员) 64KB时间类型类型⼤⼩(字节)范围格式⽤途DATE31000-01-01/9999-12-31YYYY-MM-DD⽇期值TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间YEAR11901/2155YYYY年份值DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合⽇期和时间值TIMESTAMP81970-01-01 00:00:00/2037 年某时YYYYMMDD HHMMSS混合⽇期和时间值,时间戳。
mysql 数据类型2009年07月18日星期六15:57在计算机中数据有两种特征:类型和长度。
所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类。
在SQL Server 中每个变量、参数、表达式等都有数据类型。
系统提供的数据类型分为几大类,。
其中,BIGINT、SQL_V ARIANT 和TABLE 是SQL Server 2000 中新增加的3 种数据类型。
下面分类讲述各种数据类型。
4.3.1 整数数据类型整数数据类型是最常用的数据类型之一。
1、INT (INTEGER)INT (或INTEGER)数据类型存储从-2的31次方(-2 ,147 ,483 ,648)到2的31次方-1 (2 ,147 ,483,647)之间的所有正负整数。
每个INT 类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小。
2、SMALLINTSMALLINT 数据类型存储从-2的15次方(-32,768)到2的15次方-1(32 ,767 )之间的所有正负整数。
每个SMALLINT 类型的数据占用2 个字节的存储空间,其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。
3、TINYINTTINYINT数据类型存储从0 到255 之间的所有正整数。
每个TINYINT类型的数据占用1 个字节的存储空间。
4、BIGINTBIGINT 数据类型存储从-2^63 (-9 ,223,372,036,854,775,807)到2^63-1(9,223,372,036 ,854 ,775,807)之间的所有正负整数。
每个BIGINT 类型的数据占用8个字节的存储空间。
4.3.2 浮点数据类型浮点数据类型用于存储十进制小数。
浮点数值的数据在SQL Server 中采用上舍入(Round up 或称为只入不舍)方式进行存储。
所谓上舍入是指,当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有效位上的数值加1 ,并进行必要的进位。
Mysql各数据类型以及取值范围和适⽤场合编号数据类型⼤⼩有符值域⽆符值域适⽤场合1Bit1~64 Bit0~1位标⽰2TinyInt 1 Byte-128~1270~255⼩整数值3SmallInt 2 Byte -32768~32767 0~65535中整数值4MediumInt 3 Byte -8388608~8388607 0~16777215⼤整数值5Int 4 Byte -2147483648~2147483647 0~4294967295整数值6BigInt8 Byte -9223372036854775808~92233720368547758070~18446744073709551615极⼤整数值7Float 4 Byte单精浮点数值8Double8 Byte双精浮点数值9Deciaml依赖于M和D的值依赖于M和D的值10Date 3 Byte格式 : YYYY-MM-DD1000-01-01~9999-12-31⽇期值11DateTime8 Byte格式 : YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~9999-12-31 23:59:59⽇期和时间值12Timestamp8 Byte格式 : YYYYMMDDHHMMSS 1970-01-01 00:00:00~2037年某时时间戳13Time 3 Byte格式 : HH:MM:SS-838:59:59~838:59:59时间值14Year 1 Byte格式 : YYYY1901/2155年份值15Char0~255 Byte定长字符串16VarChar0~255 Byte变长字符串17Binary18VarBinary19TinyText0~255 Byte短⽂本字符串20MediumText 0~16777215Byte中长⽂本21LongText 0~4294967295Byte极⼤⽂本22Text0~65535 Byte长⽂本23TinyBlob0~255 Byte不超过255个字符的⼆进制字符串24Blob0~65535 Byte⼆进制形式的长⽂本数据25MediumBlob 0~16777215Byte⼆进制形式的中等长⽂本数据26LongBlob 0~4294967295Byte⼆进制形式的极⼤长⽂本数据27Enum28Set29Geometry30Point31MultiPoint32Polygon33MultiPolygon34LineString35MultiLineString36GeometryCollection数据尚未填写完成,跟进中。
mysql中的数据类型enum和setmysql中的字符串数据类型set,enum1、enum 单选字符串数据类型,适合存储表单界⾯中的“单选值”。
设定enum的时候,需要给定“固定的⼏个选项”;存储的时候就只存储其中的⼀个值。
设定enum的格式: enum("选项1","选项2","选项3",...); 实际上,enum的选项都会对应⼀个数字,依次是1,2,3,4,5...,最多有65535个选项 使⽤的时候,可以使⽤选项的字符串格式,也可以使⽤对应的数字。
2、set 多选字符串数据类型,适合存储表单界⾯的“多选值”。
设定set的时候,同样需要给定“固定的⼏个选项”;存储的时候,可以存储其中的若⼲个值。
设定set的格式: set("选项1","选项2","选项3",...) 同样的,set的每个选项值也对应⼀个数字,依次是1,2,4,8,16...,最多有64个选项 使⽤的时候,可以使⽤set选项的字符串本⾝(多个选项⽤逗号分隔),也可以使⽤多个选项的数字之和(⽐如:1+2+4=7)代码如下:/* 创建表格 */mysql>create table enum_set_table(-> id int auto_increment primary key,-> gender enum('M','F'),-> hobby set('music','movie','swimming','footbal')-> );Query OK, 0 rows affected (0.01 sec)/* ⼀个enum值,⼀个set值,⼆者均使⽤选项的字符串格式 */mysql>insert into enum_set_table(id,gender,hobby) values(null,'M','music');Query OK, 1 row affected (0.01 sec)/* ⼀个enum值,多个set值,⼆者均使⽤选项的字符串格式 */mysql>insert into enum_set_table(id,gender,hobby) values(null,'F','music,movie,footbal');Query OK, 1 row affected (0.00 sec)/* ⼀个enum值,⼀个set值,⼆者均使⽤选项的数字格式 */mysql>insert into enum_set_table(id,gender,hobby) values(null,1,1);Query OK, 1 row affected (0.00 sec)/* ⼀个enum值,多个set值,⼆者均使⽤选项的数字格式,其中enum的值 2<=>'F',15=1+2+4+8 <=> 'music,movie,swimming,footbal' */mysql>insert into enum_set_table(id,gender,hobby) values(null,2,15);Query OK, 1 row affected (0.00 sec)/* ⼀个enum值,多个set值,enum值使⽤选项的字符串格式,set值使⽤选项的数字格式,7=1+2+4 <=> 'music,movie,swimming' */mysql>insert into enum_set_table(id,gender,hobby) values(null,'F',7);Query OK, 1 row affected (0.01 sec)/* 查询结果 */mysql>select*from enum_set_table;+----+--------+------------------------------+| id | gender | hobby |+----+--------+------------------------------+|1| M | music ||2| F | music,movie,footbal ||3| M | music ||4| F | music,movie,swimming,footbal ||5| F | music,movie,swimming |+----+--------+------------------------------+5 rows in set (0.00 sec)。
mysql8所有数据类型MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。
许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补。
表列出了各种数值类型以及它们的允许范围和占用的内存空间。
类型大小范围(有符号) 范围(无符号) 用途TINYINT 1 字节(-128,127) (0,255) 小整数值SMALLINT 2 字节(-32 768,32 767) (0,65 535) 大整数值MEDIUMINT 3 字节(-8 388 608,8 388 607) (0,16 777 215) 大整数值INT或INTEGER 4 字节(-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 ************)(0,18 446 744 073 709 551 615) 极大整数值FLOAT 4 字节 (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175494351 E-38,3.402 823 466 E+38) 单精度浮点数值DOUBLE 8 字节 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度浮点数值DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值依赖于M和D的值小数值INT 类型在 MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT。
MySQL的数据模型MySQL的数据类型主要分为三⼤类:1. 数值型(Numeric Type)2. ⽇期与时间型(Date and Time Type)3. 字符串类型(String Type )1. 数值MySQL的数值类型按照精确程度,⼤致可以分为两类:精确数值(Exact Value),包括INTEGER、DECIMAL、NUMERIC等;近似数值(Approximate Value),包括FLOAT、REAL、DOUBLE PRECISION等。
若按类型簇划分,则可分为三簇:Integer类型,包括INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT;Fixed-Point类型,包括DECIMAL, NUMERIC;Floating-Point类型,包括FLOAT, DOUBLE。
⼀般地,关键字INT代指INTEGER,关键字DEC(desc只降序)代指DECIMAL, DOUBLE代指DOUBLE PRECISION(a nonstandard extension)。
BIT类型保存位字段值,并且⽀持MyISAM、MEMORY、InnoDB和BDB表。
数值类型的存储、范围及⽤途如下表:类型⼤⼩(字节)范围(有符号)范围(⽆符号)⽤途TINYINT1(-128,127)(0,255)⼩整数值SMALLINT2(-32 768,32 767)(0,65 535)⼤整数值MEDIUMINT3(-8 388 608,8 388 607)(0,16 777 215)⼤整数值INT4(-2 147 483 648,2 147 483 647)(0,4 294 967 295)⼤整数值BIGINT8(-9 233 372 036 854 775 808,9 223 372 036854 775 807)(0,18 446 744 073 709551 615)极⼤整数值FLOAT4(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466351 E+38)0,(1.175 494 351 E-38,3.402 823 466E+38)单精度浮点数值DOUBLE8(1.797 693 134 862 315 7 E+308,2.225 073858 507 201 4 E-308),0,(2.225 073 858 507201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507201 4 E-308,1.797693 134 862 315 7E+308)双精度浮点数值DECIMAL对于DECIMAL(M,D),为M+2依赖于M和D的值依赖于M和D的值⼩数值DECIMAL类型常被声明为DECIMAL(M,D),其中M为precision,指允许的最多数字位数(the maximum number of digits);D为scale,指⼩数点后的⼩数位数(the number of digits to the right of the decimal point);⼀般D不⼤于M。
MySQL中的数据类型binary和varbinary详解前⾔BINARY和VARBINARY与 CHAR和VARCHAR类型有点类似,不同的是BINARY和VARBINARY存储的是⼆进制的字符串,⽽⾮字符型字符串。
也就是说,BINARY和VARBINARY没有字符集的概念,对其排序和⽐较都是按照⼆进制值进⾏对⽐。
BINARY(N)和VARBINARY(N)中的N指的是字节长度,⽽CHAR(N)和VARCHAR(N)中N指的是的字符长度。
对于BINARY(10),其可存储的字节固定为10,⽽对于CHAR(10),其可存储的字节视字符集的情况⽽定。
我们来看下⾯的例⼦。
mysql> CREATE TABLE t (-> a BINARY(1)-> )ENGINE=InnoDB CHARSET=GBK;Query OK, 0 rows affected (0.02 sec)mysql> SET NAMES GBK;Query OK, 0 rows affected (0.00 sec)MySQL> INSERT INTO t SELECT '我';Query OK, 1 row affected, 1 warning (0.01 sec)Records: 1 Duplicates: 0 Warnings: 1mysql> SHOW WARNINGS\G;*************************** 1. row ***************************Level: WarningCode: 1265Message: Data truncated for column 'a' at row 11 row in set (0.00 sec)mysql> SELECT a,HEX(a) FROM t\G;*************************** 1. row ***************************a:HEX(a): CE表t包含⼀个类型为BINARY(1)的列,因为BINARY(N)中N代表字节,⽽gbk字符集中的中⽂字符“我”需要占⽤2字节,所以在插⼊时给出警告,提⽰字符被截断。
MySQL中的布尔类型是一种逻辑数据类型,用于表示真或假的值。
它通常用于表示条件、选择、比较等逻辑表达式的结果。
布尔类型在MySQL中具有以下特点:
1. 存储空间:布尔类型占用1个字节(bit),可以存储真或假的值。
2. 取值范围:布尔类型的取值范围为0或1,表示假或真。
3. 数据比较:布尔类型可以进行比较操作,例如等于、不等于、大于、小于等。
4. 数据类型转换:当将其他数据类型转换为布尔类型时,将根据值的真假返回相应的结果。
在MySQL中,布尔类型的使用非常常见,它对于表示简单的逻辑条件和比较非常有用。
下面是一些关于MySQL中的布尔类型的建议和说明:
* 使用布尔类型处理条件和比较表达式时,需要小心使用不正确的语法或逻辑表达式,以避免产生意外的结果。
* 当使用布尔类型存储信息时,要确保数据的一致性和准确性。
如果数据不准确或不一致,可能会导致应用程序出现错误或异常。
* 布尔类型可以与其他数据类型进行组合使用,例如将布尔类型与整数、字符串等类型进行联合查询或比较。
* 在处理大量数据时,使用布尔类型可以节省存储空间和查询时间。
* 了解MySQL中的其他数据类型和运算符,以便更好地使用布尔类型来处理复杂的逻辑和条件。
总之,MySQL中的布尔类型是一种简单而有效的逻辑数据类型,适用于表示简单的条件和比较表达式。
在使用布尔类型时,需要注意数据的一致性和准确性,并与其他数据类型进行适当的组合使用。