MySQL入门到精通(二)

本文详细介绍了MySQL中的数据类型,包括数字类型、字符串类型和日期时间类型。数字类型涵盖了整数和浮点数;字符串类型包括固定长度和变长字符串、二进制数据及特殊类型;日期时间类型则用于记录时间值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                              数据类型

在MySQL数据库中,每一条数据都有其数据类型。MySQL支持的数据类型主要分为3类:数字类型,字符串(字符)类型,日期和时间类型。

2.1 数字类型

MySQL支持所有的ANSI/ISO SQL 92S数字类型。这些类型包括准确数字的数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数字的数据类型(FLOAT、REAL和DOUBLE PRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

数据类型取值范围(有符号值)取值范围(无符号值)说明单位
TINYINT-128~1270~255最小的整数1字节
BIT-128~1270~255最小的整数1字节
BOOL-128~1270~255最小的整数1字节
SMALLINT-2^15(-32,768) ~ 2^15 -1(32,767)0~65535小型整数2字节
MEDIUMINT-8388608~83886070~16777215中型整数3字节
INT-2^31(-2,147,483,648) ~ 2^31-1 (2,147,483,647)0~4294967295标准整数4字节
BIGINT-2^63(-9223372036854775808) ~ 2^63-1(9223372036854775807) 0~18446744073709551615大整数8字节
FLOAT(-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.175 494 351 E-38,3.402 823 466 E+38)单精度浮点数8或4字节
DOUBLE(-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)双精度浮点数8字节
DECIMAL可变可变一般整数自定义长度

说明:在创建表时,使用哪种数字类型,应遵循以下原则。

1. 选择最小的可用类型,如果值永远不超过127,则使用TINYINT比INT强。

2. 对于完全都是数字的,可以选择整数类型。

3. 浮点类型用于可能具有小数部分的数,如货物单价,网上购物交付金额等。

2.2 字符串类型

字符串类型可分为3类:普通的文本字符串类型(CHAR和VARCHAR),可变类型(TEXT和BLOB)和特殊类型(SET和ENUM)。

(1)普通的文本字符串类型,即CHAR和VARCHAR,CHAR列的长度被固定为创建表所声明的长度,取值在1~255之间;VARCHAR列的值是变长的字符串,取值和CHAR一样。

类型取值范围说明

[national]

char(M)

[binary\ASCII\unicode]

0~255个字符固定长度为M的字符串,其中M的取值范围为0~255.national关键字指定了应该使用的默认字符集。binary关键字指定了数据是否区分大小写(默认是区分大小写的)。ASCII关键字指定了在该列中使用latin1字符集。unicode关键字指定了使用UCS字符集。
char0~255个字符char(M)类似

[national]

varchar(M)

[binary]

0~255个字符长度可变,其他和char(M)一样

(2)可变类型(TEXT和BLOB)。它们的大小可以改变,TEXT类型适合存储长文本,而BLOB类型适合存储二进制数据,支持任何数据,如文本,声音和图像等。

类型最大长度(字节数)说明
TINYBLOB2^8-1(255)不超过 255 个字符的二进制字符串
TINYTEXT2^8-1(255)短文本字符串
BLOB2^16-1(65535)二进制形式的长文本数据
TEXT2^16-1(65535)长文本数据
MEDIUMBLOB2^24-1(16777215)二进制形式的中等长度文本数据
MEDIUMTEXT2^24-1(16777215)中等长度文本数据
LONGBLOB2^32-1(4294967295)二进制形式的极大文本数据
LONGTEXT2^32-1(4294967295)极大文本数据

(3)特殊类型(SET和ENUM)

类型最大值说明
Enum("value1","value2",...)65535该类型的列只可以容纳所列值之一或为NULL
Set("value1","value2",...)64该类型的列可以容纳一组值或为NULL

说明:

1. BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

2. CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

3. BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

4. 有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

2.3 日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

类型取值范围说明
DATE1000-01-01~9999-12-31日期值,格式YYYY-MM-DD
TIME-838:59:59~838:59:59时间值或持续时间,格式HH:MM:SS
DATETIME

1000-01-01 00:00:00~

9999-12-31 23:59:59

混合日期和时间值,格式YYYY-MM-DD HH:MM:SS
TIMESTAMP

1970-01-01 00:00:00

2037年的某个时间

时间标签,在处理报告时使用显示格式取决于M的值
YEAR1901-2155年份值,可指定两位数字和四位数字的格式

在MySQL中,日期的顺序是按照标准的ANSI SQL格式进行输出的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值