MySQL常用数据类型和建库策略
MySQL的常见数据类型及其使用方法
MySQL的常见数据类型及其使用方法概述
在数据库中,数据类型是用来定义列(字段)可以存储的数据种类的规范。MySQL作为一种关系型数据库管理系统(RDBMS),提供了许多常见的数据类型供用户选择。本文将介绍MySQL中常见的数据类型,并对每种数据类型的特点和使用方法进行详细说明。
一、整数类型
整数类型是MySQL中最基本也是最常用的数据类型之一。MySQL提供了多种整数类型,包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。
1. TINYINT
TINYINT类型用于存储范围在-128到127之间的整数。当存储的值超出该范围时,会发生溢出。可以使用UNSIGNED关键字将范围扩展到0到255。TINYINT通常用来存储布尔值或标志位。
创建TINYINT类型的列的示例代码:
```
CREATE TABLE example (
id INT,
flag TINYINT
);
```
2. SMALLINT
UNSIGNED关键字将范围扩展到0到65535。
创建SMALLINT类型的列的示例代码:
```
CREATE TABLE example (
id INT,
value SMALLINT
);
```
3. MEDIUMINT
MEDIUMINT类型用于存储范围在-8388608到8388607之间的整数。同样可以使用UNSIGNED关键字将范围扩展到0到16777215。
创建MEDIUMINT类型的列的示例代码:
```
CREATE TABLE example (
id INT,
value MEDIUMINT
MySQL数据库原理及设计方法
MySQL数据库原理及设计方法
一、概述
MySQL是一种开源的关系型数据库管理系统,广泛应用于Web应用程序的后
台数据存储。本文将详细介绍MySQL数据库的原理和设计方法,包括数据库的基
本概念、数据存储结构、查询优化、索引设计等内容。
二、数据库基本概念
1. 数据库:数据库是指按照一定的数据模型组织、存储和管理数据的集合。MySQL数据库采用的是关系型数据库模型。
2. 数据表:数据表是数据库中的一个基本组成单位,用于存储具有相同数据结
构的数据记录。每个数据表由若干个字段组成,每个字段代表一个数据属性。
3. 字段:字段是数据表中的一个列,用于存储特定类型的数据。字段具有名称、数据类型和约束等属性。
4. 记录:记录是数据表中的一行,包含了一组字段的值。
三、数据存储结构
1. 数据库文件:MySQL数据库的数据存储在文件中,每个数据库对应一个文
件夹,文件夹中包含了数据表的文件。
2. 表文件:每个数据表对应一个文件,文件中存储了数据表的结构信息和数据
记录。
3. 数据页:数据页是MySQL数据库中的最小存储单位,通常为16KB大小。
数据页中存储了数据表的数据记录。
四、查询优化
1. 查询执行过程:MySQL数据库的查询执行过程包括查询解析、查询优化和查询执行三个阶段。查询解析将查询语句解析为内部数据结构,查询优化根据查询计划选择最优的执行方式,查询执行根据查询计划执行查询操作。
2. 查询优化器:查询优化器是MySQL数据库的核心组件,负责生成最优的查询计划。查询优化器根据查询语句、数据表的统计信息和系统参数等信息,选择最佳的索引、连接方式和排序方式,以提高查询性能。
MySQL中的数据类型与字段设置指南
MySQL中的数据类型与字段设置指南引言:
MySQL是一个广泛使用的关系型数据库管理系统,常用于Web应用程序的后台数据存储。在搭建数据库时,正确选择合适的数据类型和设置字段属性对于数据库的性能和数据完整性至关重要。本文将介绍MySQL中常见的数据类型,并深入探讨各种字段设置的最佳实践。
一、字符型数据类型
1. CHAR和VARCHAR:
CHAR和VARCHAR是MySQL中最常见的字符型数据类型。它们都用于存储字符数据,但在实际应用中使用时需要考虑一些因素。CHAR类型适用于固定长度的数据,例如存储电话号码和邮政编码等。而VARCHAR类型适用于可变长度的数据,例如存储人名和地址等。在选择使用CHAR还是VARCHAR时,需要权衡数据的长度和存储空间大小。
2. TEXT和BLOB:
TEXT和BLOB类型主要用于存储大量的文本或二进制数据。TEXT类型适用于存储较长的文本,如文章内容和邮件正文等。而BLOB类型适用于存储大型的二进制数据,如图片和音频文件等。在使用TEXT和BLOB类型时,需要注意存储空间的消耗和性能影响。
二、数值型数据类型
1. 整数类型:
MySQL中提供了多种整数类型,例如TINYINT、SMALLINT、INT和BIGINT等。在选择整数类型时,需要考虑数据的范围和存储空间的大小。通常情况下,选择范围较小的整数类型可以节省存储空间,并提高查询性能。
2. 浮点数类型:
MySQL中提供了FLOAT和DOUBLE类型用于存储浮点数。FLOAT类型适用于存储较小的浮点数,而DOUBLE类型适用于存储较大的浮点数。在选择浮点数类型时,需要考虑数据的精度和存储空间的大小。另外,需要注意浮点数运算存在精度损失的问题,可能会导致计算结果不准确。
MySQL中的数据类型选择和存储效率分析
MySQL中的数据类型选择和存储效率分析引言
在数据库应用开发中,数据类型的选择和存储效率是一个重要的考虑因素。MySQL作为一种常用的关系数据库管理系统(RDMS),提供了多种数据类型供开发者选择。在设计数据库表结构时,正确选择数据类型可以提高查询性能和存储效率。本文将对MySQL中数据类型的选择和存储效率进行分析,并提供一些实践建议。
一、整数类型
MySQL提供了几种整数类型,包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。这些类型的区别在于存储范围和占用字节数。一般来说,越小的整数类型占用的存储空间越小,但范围也越小。
在选择整数类型时,需要根据实际需求来进行权衡。如果数据的取值范围非常小,可以选择较小的整数类型,以节省存储空间。例如,如果一个字段只需要存储0或1这两种取值,可以选择TINYINT(1)类型。如果数据的范围较大,可以选择大一些的整数类型,以避免数据溢出。对于自增主键字段,一般选择INT或BIGINT类型,以满足更大的数据量。
二、浮点数类型
MySQL提供了几种浮点数类型,包括FLOAT、DOUBLE和DECIMAL。这些类型用于存储浮点数,其区别在于存储精度和占用字节数。FLOAT类型占用4字节,DOUBLE类型占用8字节,而DECIMAL类型的占用字节数可以根据实际需求进行设定。
在选择浮点数类型时,需要根据存储精度的要求来进行权衡。如果需要存储较大范围的浮点数,可以选择DOUBLE类型。如果对精度要求较高,可以选择
DECIMAL类型,并根据需要设置精度和小数位数。需要注意的是,使用浮点数类型会带来一定的存储和计算开销,因此在不需要精确计算的场景下,可以考虑使用整数类型进行存储。
MySQL中的数据类型精度和存储空间选择
MySQL中的数据类型精度和存储空间选择
MySQL是一种常用的关系型数据库管理系统,被广泛应用于各种类型的应用
程序中。在设计和使用MySQL数据库时,选择合适的数据类型精度和存储空间是
非常重要的。
首先,我们来了解一下数据类型精度的概念。数据类型精度是指在数据库中存
储数据时所允许的最大位数或字符数。在MySQL中,常用的数据类型包括整型、
浮点型、日期时间型和字符串型等。不同的数据类型分别有不同的精度要求,通过选择合适的数据类型精度,可以充分利用存储空间,并保证数据的完整性和准确性。
在MySQL中,我们通常使用整型来存储整数数据。整型根据不同的位数可以
分为TINYINT、SMALLINT、INT和BIGINT等类型,它们分别占用1字节、2字节、4字节和8字节的存储空间。选择合适的整型可以根据数据范围和所需存储空
间进行优化。例如,如果存储的数据范围在-128到127之间,可以选择TINYINT
类型,这样可以节省存储空间。如果数据范围较大,可以选择BIGINT类型来存储。
浮点型用于存储小数数据,在MySQL中有两种常用的浮点型:FLOAT和DOUBLE。它们分别占用4字节和8字节的存储空间。选择合适的浮点型非常重要,因为浮点型在存储精度上存在一定的限制。如果需要高精度的小数计算,应该选择DOUBLE类型。而如果对精度要求不高,可以选择FLOAT类型,从而节省存储空间。
日期时间型用于存储日期和时间信息,在MySQL中有两种常用的日期时间类型:DATE和DATETIME。DATE类型用于存储日期,占用3字节的存储空间,
mysql 基本数据类型
mysql 基本数据类型
MySQL是一种开源的关系型数据库管理系统,支持多种数据类型。MySQL的数据类型可分为三类:数值型、日期时间型和字符串型。
数值型数据类型包括整型(TINYINT、SMALLINT、INT、BIGINT)、实型(FLOAT、DOUBLE、DECIMAL)和位值型(BIT)。
日期时间型数据类型包括日期(DATE)、时间(TIME)、日期时间(DATETIME)、时间戳(TIMESTAMP)和年份(YEAR)。
字符串型数据类型包括字符型(CHAR、VARCHAR、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB)和文本型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)。
在实际应用中,需要根据具体的业务场景选择合适的数据类型,以达到最佳的性能、空间占用和数据存储效率。同时,还需要注意各种数据类型的取值范围、精度、存储方式等问题,以确保数据的准确性和完整性。
- 1 -
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中,用户权限管理是非常重要的。应该根据实际情况为每个用户分配不同的权限,并且定期更新密码和修改访问权限。
MySQL数据库的数据类型和字段属性详解
MySQL数据库的数据类型和字段属性详解
引言
MySQL是一种非常流行和常用的关系型数据库管理系统,广泛应用于各种网
站和应用程序中。在使用MySQL进行数据库设计和开发时,数据类型和字段属性
的选择非常重要,它们直接影响着数据库的性能和数据的完整性。本文将详细介绍MySQL数据库中常用的数据类型和字段属性,以便读者能够更好地理解和应用它们。
一、数值类型
1. 整型(INT)
整型是MySQL中最基本和常用的数据类型之一。在MySQL中,整型包括int、tinyint、smallint、mediumint和bigint五种。它们的区别在于存储范围和占用空间
的大小。例如,int类型的范围是-2147483648到2147483647,占用空间为4字节。
2. 浮点型(FLOAT和DOUBLE)
浮点型用于存储小数,包括单精度浮点类型(FLOAT)和双精度浮点类型(DOUBLE)。FLOAT类型占用4字节,DOUBLE类型占用8字节。浮点型能够
存储非常大和非常小的数字,但是在精度上有一定的限制。
3. 定点类型(DECIMAL)
定点类型用于存储精确的小数,其精度和范围可以由用户自定义。DECIMAL
类型在数据库中的存储是以字符串形式存储的,它具有较高的精度和较小的存储空间。
二、字符串类型
1. 字符型(CHAR和VARCHAR)
字符型用于存储字符串,包括固定长度的字符类型(CHAR)和可变长度的字符类型(VARCHAR)。CHAR类型在数据库中占用固定的空间,而VARCHAR 类型根据存储的内容变化而变化。CHAR类型在存储短字符串时效率较高,而VARCHAR类型适用于存储可变长度的内容。
mysql常用数据类型
mysql常用数据类型
MySQL是一款流行的关系型数据库管理系统,它提供了一些常见的数据类型。这些数据类型可以用来存储不同类型的数据,根据不同的应用场景,可以以有效的方式来处理数据。
MySQL最常用的数据类型是CHAR (字符)、VARCHAR (可变长度字符)、INT (整型)、FLOAT (浮点型)和DATE (日期)类型。其中,CHAR 类型是最基本的字符类型,可以用来存储简单的字符串。VARCHAR类型则可以存储可变长度的字符串,它能够容纳更大量的字符,比如文章和文本内容。INT类型是MySQL中最常用的整型数据类型,它能够存储整数(正数、负数或零)。FLOAT类型则可以存储浮点数,用来表示精确的数字或者小数点。最后,DATE类型可以用来在MySQL中存储格式化的日期,其中的日期格式是“YYYY-MM-DD”。
除了上述常见的数据类型之外,MySQL还提供了ENUM(枚举)、SET(集)、BLOB(二进制大数据对象)和TEXT(长文本)等数据类型。ENUM数据类型可以用来定义一系列预定义的字符串常量,比如男孩、女孩等。SET数据类型用来表示一组字符串,比如爱好、颜色等。BLOB数据类型用来存储图片、文档等大型文件,而TEXT数据类型则是专门存储大型文本,比如文章、小说等。
另外,MySQL还提供了一些比较特殊的数据类型,比如BIT(二进制)、LONGBLOB(长度可变的二进制大数据对象)、TIME(时间)、TIMESTAMP(时间戳)以及BOOL(布尔)等。BIT类型可以用来存储0和1,用来实现比特运算。LONGBLOB类型可以用来存储较大的二进
mysql基本数据类型
mysql基本数据类型
MySQL是一种关系型数据库管理系统,它支持多种数据类型。MySQL的数据类型分为数值类型、日期和时间类型、字符串类型、二
进制类型。以下是MySQL基本数据类型(注意:各类型数据的存储要
占用的字节数,不同的数据库系统、不同的编译选项这些大小限制和
取值范围有所不同):
1. 数值类型
MySQL数值类型有整数类型和小数类型两种:
1.1 整数类型
- TINYINT:有符号范围为-128~127,无符号范围0~255。占用1个字节。
- SMALLINT:有符号范围为-32768~32767,无符号范围0~65535。占
用2个字节。
- MEDIUMINT:有符号范围为-8388608~8388607,无符号范围
0~16777215。占用3个字节。
- INT:有符号范围为-2147483648~2147483647,无符号范围
0~4294967295。占用4个字节。
- BIGINT:有符号范围为-9223372036854775808~9223372036854775807,无符号范围0~18446744073709551615。占用8个字节。
1.2 小数类型
- FLOAT:单精度浮点数,占用4个字节。
- DOUBLE:双精度浮点数,占用8个字节。
- DECIMAL:高精度浮点数,依赖于实际存储的数字大小而变化。
2. 日期和时间类型
MySQL日期和时间类型包括DATE、TIME、DATETIME、YEAR和TIMESTAMP:
- DATE:日期,存储的范围为'1000-01-01'到'9999-12-31'。占用3个字节。
mysql建表规范
mysql建表规范
在MySQL中建表时,遵循一定的规范是非常重要的,可以提
高数据库的性能和可维护性。以下是一些常见的MySQL建表
规范建议。
1. 使用有意义的表名:表名应反映表的内容和含义,避免使用无意义的缩写或简写。
2. 使用小写字母和下划线:表名、列名和其他对象名都应该使用小写字母和下划线的组合,这样有助于代码的可读性和可维护性。
3. 使用具有复数意义的表名:如果表存储的是多个实体对象,应该使用复数形式的表名来表示。
4. 使用主键:每个表都应该有一个主键来唯一标识每一行数据。主键可以是单列或多列的组合。
5. 主键选择:选择适合的主键类型,可以是整数类型(如INT、BIGINT)或字符串类型(如VARCHAR)。对于自增主键,
可以使用AUTO_INCREMENT。
6. 不要使用保留字:避免使用MySQL的保留字作为表名、列
名等对象名,以免引起语法错误。
7. 使用适当的数据类型:选择合适的数据类型来存储数据,避免浪费存储空间和降低性能。例如,存储整数使用整数类型,
存储日期和时间使用日期和时间类型。
8. 使用约束保证数据的完整性:使用约束(如NOT NULL、UNIQUE、FOREIGN KEY等)来确保数据的完整性,避免无
效或重复的数据。
9. 添加索引:根据查询的需求和频率,添加索引以加快数据的检索速度。但是,也要注意不要过度索引,以免降低插入和更新操作的性能。
10. 使用适当的引擎:根据需求选择适当的存储引擎,如InnoDB、MyISAM等。每种引擎都有其特点和适用场景。
11. 正规化数据:对于大型数据库,使用正规化的数据结构可
MySQL中的数据类型详解与选择技巧
MySQL中的数据类型详解与选择技巧引言:
MySQL是当今最流行的开源关系数据库管理系统之一。在开发和管理MySQL
数据库时,正确选择和使用合适的数据类型是至关重要的。本文将详细介绍MySQL中的各种数据类型,并提供一些选择技巧,帮助读者更好地运用和优化数
据库。
一、整数类型
MySQL提供了多个整数数据类型,包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。这些数据类型的大小和范围不同,开发者需要根
据具体需求来选择。一般来说,选择合适的整数类型可以减小存储空间的需求,提高数据库性能。
例如,当需要存储性别信息时,使用TINYINT类型就足够了,因为性别只有
两个选项。而对于存储年龄的字段,使用TINYINT可能不够,因为年龄范围较大,应该选择使用INT类型。
二、浮点数类型
MySQL提供了多个浮点数数据类型,包括FLOAT和DOUBLE。这些数据类
型用于表示带有小数点的实数。与整数类型类似,使用合适的浮点数类型可以节省存储空间,并提高计算精度。
需要注意的是,浮点数类型在计算过程中可能存在精度丢失的问题。如果需要
确保计算结果的精确性,可以考虑使用DECIMAL数据类型,它用于存储精确的
小数。
三、日期和时间类型
MySQL提供了多个日期和时间数据类型,包括DATE、TIME、DATETIME和TIMESTAMP。这些数据类型用于表示日期、时间或者同时表示日期和时间。
在选择日期和时间数据类型时,需要考虑存储需求和操作需求。如果只需要存储日期信息,可以选择DATE类型;如果只需要存储时间信息,可以选择TIME 类型。如果需要同时存储日期和时间信息,可以选择DATETIME或者TIMESTAMP类型。
MySQL数据类型及操作数据库
1.3.2 InnoDB存储引擎
InnoDB 是MySQL数据库的一中存储引擎。InnoDB给 MySQL的表提供了事务、回滚、崩溃修复能力、多版本并 发控制的事务安全。 InnoDB对事务处理的能力,也是MySQL其他存储引擎 所无法与之比拟的。
事务:一组业务整体处理的行为叫一个事务。这一组 的业务都能成功处理,我们就可以把这个事务提交来保存你 已做的行为结果。但如果一组中有任何的差错出现的话,我 们就认为这事务不成功,需要回滚来撤消之前的操作。
整数类型 TINYINT SMALLINT MEDIUMINT INT INTEGER BIGINT 字节数 1 2 3 4 4 8 无符合数的取值范围 0~255 0~65535 0~16777215 0~4294967295 0~4294967295 0~ 18446744073709551615 有符合数的取值范围 -128~127 -32768~32767 -8388608~8388607 -2147483648~2147483647 -2147483648~2147483647 -9223372036854775808~ 9223372036854775807
2.1.4 日期与时间类型
日期与时间类型是为了方便在数据库中存储日期和时 间而设计的。MySQL中有多种表示日期和时间的数据类型 。其中,YEAR类型表示年份;DATE类型表示日期; TIME类型表示时间;DATETIME和TIMESTAMP表示日 期和时间。 1.YEAR类型 2.TIME类型 3.DATE类型 4.DATETIME类型 5.TIMESTAMP类型
MySQL中数据库设计的常见模式和原则
MySQL中数据库设计的常见模式和原则
在现代软件系统中,数据库起着非常重要的作用,它不仅承载着数据存储和管
理的功能,还是实现业务逻辑和数据分析的基础。而设计一个高效和可靠的数据库,对于系统的性能和稳定性至关重要。本文将探讨MySQL中数据库设计的一些常见
模式和原则,以帮助开发人员更好地设计和优化数据库。
一、范式化和反范式化设计
在数据库设计中,范式化和反范式化是两种常用的设计方式。范式化设计是指
将数据按照一定的规范分解成多个表,以避免数据冗余和更新异常。常见的范式有第一范式、第二范式和第三范式。范式化设计有利于数据的一致性和完整性,但在查询时可能需要进行多表关联,影响查询性能。
与范式化相反,反范式化设计是为了提高查询性能而冗余存储数据。通过将相
关数据合并到一个表中,减少了查询时的表关联操作,提高了查询效率。但这种设计方式会增加数据冗余和更新异常的可能性,需要在数据更新时进行维护。
在实际应用中,范式化和反范式化可以结合使用。可以根据具体需求,选择合
适的设计方式来平衡数据的一致性和查询性能。
二、主键和索引设计
主键是用来唯一标识数据记录的字段,它的设计对于数据库的性能和数据完整
性至关重要。主键应该具备以下特点:
1. 唯一性:主键的值在整个表中必须唯一,可以通过使用自增字段或者使用复
合字段来确保唯一性。
2. 稳定性:主键的值应该是稳定不变的,不随数据的变化而变化。
3. 简洁性:主键的值应该尽可能简洁,避免使用过长或者复杂的值。
索引是帮助数据库系统高效查询数据的数据结构。它可以加快数据库查询的速度,降低系统的负载。在设计索引时,需要考虑以下几点:
MySQL常用数据类型和建库策略
1. MYSQL 5数据类型,长度范围
1.1数值类型
MySQL支持所有标准SQL数值数据类型.这些类型包括严格数值数据类型(INTEGER,SMALLINT,DECIMAL和NUMERIC),以及近似数值数据类型 (FLOAT,REAL 和DOUBLE PRECISION).关键字INT是INTEGER的同义词,关键字DEC是DECIMAL 的同义词.
BIT 数据类型保存位字段值,并且支持MyISAM,MEMORY,InnoDB和BDB表.作为SQL标准的扩展,MySQL也支持整数类型 TINYINT,MEDIUMINT和BIGINT.下面的表显示了需要的每个整数类型的存储和范围.
MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例
如,INT(4)).该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.
显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示.
当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替.例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004.请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度.
所有整数类型可以有一个可选(非标准)属性UNSIGNED.当你想要在列内只允许
非负数和该列需要较大的上限数值范围时可以使用无符号值.
浮点和定点类型也可以为UNSIGNED.同数类型,该属性防止负值保存到列中.然而,与整数类型不同的是,列值的上范围保持不变.
MySQL的各种数据类型
MySQL的各种数据类型
1、MySQL 数据类型
MySQL ⽀持多种类型,⼤致可以分为三类:数值、⽇期/时间和字符串(字符)类型。
1.2、mysql中编码和字符
在 mysql 中,⼀个中⽂汉字所占的字节数与编码格式有关:
如果是GBK编码,则⼀个中⽂汉字占2个字节,英⽂占1个字节
如果是UTF8编码,则⼀个中⽂汉字占3个字节,⽽英⽂字母占1字节。
⽐如定义某个字段数据类型为:varchar(32),表⽰这个可以存储 32 个字符,此时表⽰的是字符,所以跟中英⽂⽆关,也就是该字段可以存储 32 个中⽂,或者是 32 个英⽂,或者是 32 个中⽂和英⽂的混搭都⾏。但如果字符数超过 32 个的话就会报错。
2、数值类型
MySQL ⽀持所有标准 SQL 数值数据类型,mysql 的数值数据类型可以⼤致划分为两个类别,⼀个是整数,另⼀个是浮点数或⼩数。并且 MySQL 允许我们指定数值字段中的值是否有正负之分(UNSIGNED)或者⽤零填补(ZEROFILL)
在 MySQL 中⽀持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT。这些类型在很⼤程度上是相同的,只有它们存储的值的⼤⼩是不相同的。浮点型有:FLOAT、DOUBLE、DECIMAL。
下⾯的表显⽰了需要的每个数值类型的存储所占⽤的字节和可表⽰的数值范围:
1 bit 即 1位 1字节 = 8 bit 1K = 1024字节 1M = 1024K
类型⼤⼩范围(有符号,默认)范围(⽆符号)⽤途TINYINT 1 Bytes(-128,127)(0,255)⼩整数值SMALLINT 2 Bytes(-32 768,32 767)(0,65 535)⼤整数值MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)⼤整数值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. MYSQL 5数据类型,长度范围
1.1数值类型
MySQL支持所有标准SQL数值数据类型.这些类型包括严格数值数据类型(INTEGER,SMALLINT,DECIMAL和NUMERIC),以及近似数值数据类型 (FLOAT,REAL 和DOUBLE PRECISION).关键字INT是INTEGER的同义词,关键字DEC是DECIMAL 的同义词.
BIT 数据类型保存位字段值,并且支持MyISAM,MEMORY,InnoDB和BDB表.作为SQL标准的扩展,MySQL也支持整数类型 TINYINT,MEDIUMINT和BIGINT.下面的表显示了需要的每个整数类型的存储和范围.
MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例
如,INT(4)).该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.
显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示.
当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替.例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004.请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度.
所有整数类型可以有一个可选(非标准)属性UNSIGNED.当你想要在列内只允许
非负数和该列需要较大的上限数值范围时可以使用无符号值.
浮点和定点类型也可以为UNSIGNED.同数类型,该属性防止负值保存到列中.然而,与整数类型不同的是,列值的上范围保持不变.
如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属性.
对于浮点列类型,在MySQL中单精度值使用4个字节,双精度值使用8个字节.
FLOAT类型用于表示近似数值数据类型.SQL标准允许在关键字FLOAT后面的括号内选择用位指定精度(但不能为指数范围).MySQL还支持可选的只用于确定存储大小的精度规定.0到23的精度对应FLOAT 列的4字节单精度.24到53的精度对应DOUBLE列的8字节双精度.
MySQL允许使用非标准语法:FLOAT(M,D)或 REAL(M,D)或DOUBLE PRECISION(M,D).这里,"(M,D)"表示该值一共显示M位整数,其中D位位于小数点后面.例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999.MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001.
MySQL 将DOUBLE视为DOUBLE PRECISION(非标准扩展)的同义词.MySQL还将REAL 视为DOUBLE PRECISION(非标准扩展)的同义词,除非SQL服务器模式包括
REAL_AS_FLOAT选项.
为了保证最大可能的可移植性,需要使用近似数值数据值存储的代码应使用FLOAT或DOUBLE PRECISION,不规定精度或位数.
DECIMAL和NUMERIC类型在MySQL中视为相同的类型.它们用于保存必须为确切精度的值,例如货币数据.当声明该类型的列时,可以(并且通常要)指定精度和标度;例如:
salary DECIMAL(5,2)
在该例子中,5是精度,2是标度.精度表示保存值的主要位数,标度表示小数点后面可以保存的位数.
在MySQL 5.1中以二进制格式保存DECIMAL和NUMERIC值.
标准SQL要求salary列能够用5位整数位和两位小数保存任何值.因此,在这种情况下可以保存在salary列的值的范围是从-999.99到999.99.
在标准SQL中,语法DECIMAL(M)等价于 DECIMAL(M,0).同样,语法DECIMAL等价于DECIMAL(M,0),可以通过计算确定M的值.在MySQL 5.1中支持DECIMAL和NUMERIC数据类型的变量形式.M默认值是10.
DECIMAL或NUMERIC的最大位数是65,但具体的DECIMAL或NUMERIC列的实际范围受具体列的精度或标度约束.如果此类列分配的值小数点后面的位数超过指定的标度允许的范围,值被转换为该标度.(具体操作与操作系统有关,但一般结果均被截取到允许的位数).
BIT数据类型可用来保存位字段值.BIT(M)类型允许存储M位值.M范围为1到64.
要指定位值,可以使用b'value'符.value是一个用0和1编写的二进制值.例如,b'111'和 b'100000000'分别表示7和128.参见9.1.5节,"位字段值".
如果为BIT(M)列分配的值的长度小于M位,在值的左边用0填充.例如,为BIT(6)列分配一个值b'101',其效果与分配b'000101'相同.
当要在一个数值列内保存一个超出该列允许范围的值时,MySQL的操作取决于
此时有效的SQL模式.如果模式未设置,MySQL将值裁剪到范围的相应端点,并保存裁减好的值.但是,如果模式设置为traditional("严格模式"),超出范围的
值将被拒绝并提示错误,并且根据SQL标准插入会失败.参见5.3.2节,"SQL服务器模式".
如果INT列是UNSIGNED,列范围的大小相同,但其端点会变为到0和4294967295.如果你试图保存-9999999999和 9999999999,以非严格模式保存到列中的值是0和4294967296.
如果在浮点或定点列中分配的值超过指定(或默认)精度和标度规定的范
围,MySQL以非严格模式保存表示范围相应端点的值.
当MySQL没有工作在严格模式时,对于ALTER TABLE,LOAD DATA INFILE,UPDATE 和多行INSERT语句,由于裁剪发生的转换将报告为警告.当MySQL工作在严格模式时,这些语句将失败,并且部分或全部值不会插入或更改,取决于是否表为事务表和其它因素.
这里将数字类型按照分类方法分为三类:整数类,小数类和数字类.
我所谓的"数字类",就是指 DECIMAL 和 NUMERIC,它们是同一种类型.它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每一位 (包括小数点) 占一个字节的存储空间,因此这种类型耗费空间比较大.但是它的一个突出的优点是小数的位数固定,在运算中不会"失真",所以比较适合用于"价格","金额"这样对精度要求不高但准确度要求非常高的字段.
小数类,即浮点数类型,根据精度的不同,有 FLOAT 和 DOUBLE 两种.它们的优势是精确度,FLOAT 可以表示绝对值非常小,小到约 1.17E-38 (0.000...0117,小数点后面有 37 个零) 的小数,而 DOUBLE 更是可以表示绝对值小到约
2.22E-308 (0.000...0222,小数点后面有 307 个零) 的小数.FLOAT 类型和DOUBLE 类型占用存储空间分别是 4 字节和 8 字节.如果需要用到小数的字段,精度要求不高的,当然用 FLOAT 了.可是说句实在话,我们"民用"的数据,哪有要求精度那么高的呢?这两种类型至今我没有用过――我还没有遇到适合于使用它们的事例.