MySQL数据类型
MySQL(二)数据库数据类型详解

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)

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数据类型——字符串类型

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 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则会把它看成字符串来处理。
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类型全文共四篇示例,供读者参考第一篇示例: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中的数据类型

ENUM(x,y,z,etc.) 允许你输入可能值的列表。可以在ENUM列表中列出最大65535个值。如果列表中不存在插入的值,则插入空值。注释:这些值是按照你输入的顺序存储的。可以按照此格式输入可能的值:ENUM('X','Y','Z')
TINYTEXT 存放最大长度为255个字符的字符串。
TEXT 存放最大长度为65,535个字符的字符串。
BLOB 用于BLOBs (Binary Large OBjects) 。存放最多65,535 字节的数据。
数据类型 描述
TINYINT(size) -128 到127 常规。0到255 无符号*。在括号中规定最大位数。
SMALLINT(size) -32768 到32767 常规。0 到65535 无符号*。在括号中规定最大位数。
DOUBLE(size,d) 带有浮动小数点的大数字。在括号中规定最大位数。在d参数中规定小数点右侧的最大位数。
DECIMAL(size,d) 作为字符串存储的DOUBLE类型,允许固定的小数点。
Date 类型: (*即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD 。)
MEDIUMINT(size) -8388608 到8388607 普通。0 to 16777215 无符号*。在括号中规定最大位 数。
mysql数据库设计原则

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中,查询是最常用的操作之一。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
smallmoney
介于 -214,748.3648 和 214,748.3647 之间的货币数据。
4 字节
money
介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。
8 字节
float(n)
从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。 参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。
MySQL 数据类型
Text 类型:
数据类型
描述
CHAR(size)
保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR(size)
保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。
8 字节
decimal(p,s)
固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。
p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
Number 类型:
数据类型
描述
存储
tinyint
允许从 0 到 255 的所有数字。
1 字节
smallint
允许从 -32,768 到 32,767 的所有数字。
2 字节
int
允许从 -2,147,483,648 到 2,147,483,647 的所有数字。
4 字节
bigint
允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。
6-8 bytes
smalldatetime
从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。
4 bytes
date
仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。
3 bytes
time
仅存储时间。精度为 100 纳秒。
3-5 bytes
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'
数据类型
描述
存储
char(n)
固定长度的字符串。ቤተ መጻሕፍቲ ባይዱ多 8,000 个字符。
n
varchar(n)
可变长度的字符串。最多 8,000 个字符。
varchar(max)
可变长度的字符串。最多 1,073,741,824 个字符。
text
可变长度的字符串。最多 2GB 字符数据。
Unicode 字符串:
数据类型
INT(size)
-2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。
BIGINT(size)
-9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。
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
datetimeoffset
与 datetime2 相同,外加时区偏移。
8-10 bytes
timestamp
存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。
其他数据类型:
数据类型
描述
sql_variant
FLOAT(size,d)
带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DOUBLE(size,d)
带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DECIMAL(size,d)
作为字符串存储的 DOUBLE 类型,允许固定的小数点。
描述
存储
nchar(n)
固定长度的 Unicode 数据。最多 4,000 个字符。
nvarchar(n)
可变长度的 Unicode 数据。最多 4,000 个字符。
nvarchar(max)
可变长度的 Unicode 数据。最多 536,870,912 个字符。
ntext
可变长度的 Unicode 数据。最多 2GB 字符数据。
4 或 8 字节
real
从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。
4 字节
Date 类型:
数据类型
描述
存储
datetime
从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。
8 bytes
datetime2
从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。
Binary 类型:
数据类型
描述
存储
bit
允许 0、1 或 NULL
binary(n)
固定长度的二进制数据。最多 8,000 字节。
varbinary(n)
可变长度的二进制数据。最多 8,000 字节。
varbinary(max)
可变长度的二进制数据。最多 2GB 字节。
image
可变长度的二进制数据。最多 2GB。
注释:如果值的长度大于 255,则被转换为 TEXT 类型。
TINYTEXT
存放最大长度为 255 个字符的字符串。
TEXT
存放最大长度为 65,535 个字符的字符串。
BLOB
用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。
MEDIUMTEXT
存放最大长度为 16,777,215 个字符的字符串。
5-17 字节
numeric(p,s)
固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。
p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
TIME()
时间。格式:HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59'
YEAR()
2 位或 4 位格式的年。
注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。
Character 字符串:
Number 类型:
数据类型
描述
TINYINT(size)
-128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。
SMALLINT(size)
-32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。
MEDIUMINT(size)
-8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。
存储最多 8,000 字节不同数据类型的数据,除了 text、ntext 以及 timestamp。
uniqueidentifier
存储全局标识符 (GUID)。
xml
存储 XML 格式化数据。最多 2GB。
cursor
存储对用于数据库操作的指针的引用。
table
存储结果集,供稍后处理。
MEDIUMBLOB
用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。
LONGTEXT
存放最大长度为 4,294,967,295 个字符的字符串。
LONGBLOB
用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。
ENUM(x,y,z,etc.)
允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。
注释:这些值是按照你输入的顺序存储的。
可以按照此格式输入可能的值:ENUM('X','Y','Z')
SET
与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。