Mysql支持的数据类型(总结)

合集下载

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数据类型(字段)介绍

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类型全文共四篇示例,供读者参考第一篇示例: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提供的数据类型包括数值类型(整数类型和⼩数类型)、字符串类型、⽇期类型、复合类型(复合类型包括enum类型和set类型)以及⼆进制类型。

1,整数类型:整数类型的数,默认情况下既可以表⽰正整数⼜可以表⽰负整数(此时称为有符号数)。

如果只希望表⽰零和正整数,可以使⽤⽆符号关键字“unsigned”对整数类型进⾏修饰。

例如:score tinyint unsigned各个类别存储空间及取值范围。

2,⼩数类型decimal(length, precision)⽤于表⽰精度确定(⼩数点后数字的位数确定)的⼩数类型,length决定了该⼩数的最⼤位数,precision⽤于设置精度(⼩数点后数字的位数)。

例如: decimal (5,2)表⽰⼩数取值范围:999.99~999.99 decimal (5,0)表⽰: -99999~99999的整数。

3,字符串char()与varchar(): 例如对于简体中⽂字符集gbk的字符串⽽⾔,varchar(255)表⽰可以存储255个汉字,⽽每个汉字占⽤两个字节的存储空间。

假如这个字符串没有那么多汉字,例如仅仅包含⼀个‘中’字,那么varchar(255)仅仅占⽤1个字符(两个字节)的储存空间;⽽char(255)则必须占⽤255个字符长度的存储空间,哪怕⾥⾯只存储⼀个汉字。

4,⽇期类型。

date表⽰⽇期,默认格式为‘YYYY-MM-DD’; time表⽰时间,格式为‘HH:ii:ss’; year表⽰年份; datetime与timestamp是⽇期和时间的混合类型,格式为'YYYY-MM-DD HH:ii:ss'datetime与timestamp都是⽇期和时间的混合类型,区别在于:表⽰的取值范围不同,datetime的取值范围远远⼤于timestamp的取值范围。

将NULL插⼊timestamp字段后,该字段的值实际上是MySQL服务器当前的⽇期和时间。

基于PostgreSQL和mysql数据类型对比兼容

基于PostgreSQL和mysql数据类型对比兼容

基于PostgreSQL和mysql数据类型对⽐兼容1、数值类型整数:mysql中的整数类型和pg相⽐,两者有以下区别:mysql:mysql中⽀持int 1,2,3,4,8 字节,同时⽀持有符号,⽆符号。

并且mysql中⽀持在数值列中指定zerofill,⽤来将存储的数值通过填充0的⽅式达到指定数据类型的长度(mysql8开始不建议使⽤ZEROFILL属性,并且在将来的MySQL版本中将不再⽀持该属性)。

pg:pg⽀持 int 2,4,8 字节,且数值都是有符号的。

mysql整数类型:pg整数类型:那么对于mysql中的1,3字节整型,或者⽆符号整型以及zerofill特性,在pg中该如何实现呢?在pg中我们可以使⽤domain来实现mysql中的1,3字节整数以及⽆符号整型。

创建uint8,8字节⽆符号整型bill=# create domain uint8 as numeric(20,0) check (value <= ((2^64::numeric)::numeric(20,0)-1) and value>=0::numeric(20,0));CREATE DOMAIN使⽤domain,插⼊整型数据,且⼤于等于0,⼩于2^64bill=# create table t5(c1 uint8);CREATE TABLEbill=# insert into t5 values (-1);ERROR: value for domain uint8 violates check constraint "uint8_check"bill=# insert into t5 values (0);INSERT 0 1bill=# insert into t5 values (18446744073709551615);INSERT 0 1bill=# insert into t5 values (18446744073709551616);ERROR: value for domain uint8 violates check constraint "uint8_check"bill=# select * from t5;c1----------------------18446744073709551615(2 rows)同样我们也可以来创建domain实现1,3字节有⽆符号整型,2,4,8字节⽆符号等等:create domain int1 as int2 CHECK (VALUE <= 127 AND VALUE >= (-128));create domain uint1 as int2 CHECK (VALUE <= 255 AND VALUE >= 0);create domain uint2 as int4 CHECK (VALUE <= 65535 AND VALUE >= 0);create domain int3 as int4 CHECK (VALUE <= 8388607 AND VALUE >= (-8388608));create domain uint3 as int4 CHECK (VALUE <= 16777215 AND VALUE >= 0);create domain uint4 as int8 CHECK (VALUE <= 4294967295 AND VALUE >= 0);create domain uint8 as numeric(20,0) check (value <= ((2^64::numeric)::numeric(20,0)-1) and value>=0::numeric(20,0));⽽对于mysql中的zerofill,我们可以使⽤lpad函数来实现,并且这也是mysql官⽅⽂档中推荐的⼀种⽅式。

php数据库,mysql字段类型,字段属性详解

php数据库,mysql字段类型,字段属性详解

本文由lchengm贡献 doc1。

MySQL 字段类型详解 MySQL 提 供 了 整 数 和 浮 点 数 的 数 值 类 型 。

 可 根 据 所 要 表 示 的 值 的 范 围 选 择 相 应 的 类 型 。

 对 于 整 数 类 型 , 如 果 指 定 了 AUTO_INCREMENT 属 性 , 则 列 必 须 为 PRIMARY KEY 或 UNIQUE 索 引 。

将 NULL 插 入 AUTO_INCREMENT 列 将 会 插 入 一 个 大 于 该 列 中 当 前 最 大 值 的 值 。

 如 果 指 定 了 UNSIGNED 属 性 , 则 相 应 的 整 数 类 型 不 允 许 取 负 值 。

 如 果 指 定 了 ZEROFILL 属 性 , 则 用 前 导 零 填 充 数 值 类 型 值 以 达 到 列 的 显 示 宽 度 。

 1. TINYINT[(M)] 说明:非常小的整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 128 到 127( - 27 到 27- 1) 或 者 如 果 为 U N S I G N E D, 则 0 到 2 5 5 , ( 0 到 2 8-1) 缺 省 值 : 如 果 列 可 为 NULL; 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:1 字节 2. SMALLINT[(M)] 说明:小整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 32768 到 3 27 6 7( - 215 到 215- 1) 或 者 如 果 为 U N S I G N E D, 则 , 0 到 6 5 5 3 5( 0 到 216- 1) 缺 省 值 : 如 果 列 可 为 NULL; 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:2 字节 3. MEDIUMINT[(M)] 说明:中等大小的整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : -8388608 到 8 3 8 8 6 07( - 22 3 到 22 3- 1) 或 者 如 果 为 U N S I G N E , D, 则 0 到 16 7 7 2 15( 0 到 22 4- 1) 缺 省 值 : 如 果 列 可 为 NULL, 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:4 字节 4. INT[(M)] 说明:标准大小的整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 2147483648 到 2 14 7 4 8 3 6 4 7( - 231 到 2 3 1- 1) 或 者 如 果 为 U N , S I G N E D, 则 0 到 4 2 9 4 9 6 7 2 9 5( 0 到 2 3 2- 1) 缺 省 值 : 如 果 列 为 NULL, 则 为 NULL; 如 果 列 为 NOT FULL, 则 为 0 存储需求:4 字节 同 义 词 : I N T E G E R [(M)] 5. BIGINT[(M)] 说明:大整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 9223372036854775808 到 9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 07( - 263 到 2 6 3- 1) 或 者 如 果 为 U N S I G N E D, 则 0 到 18 4 4 6 7 4 4 07 3 7 0 9 5 5 16 , 15( 0 到 26 4 -1) 缺 省 值 : 如 果 列 可 为 NULL, 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:8 字节 6. FLOAT [(M, D)] 说 明 : 小 浮 点 数 ; 单 精 度 ( 精 度 小 于 D O U B L E) 允许的属性:Z E R O F I L L 取 值 范 围 : 最 小 非 零 值 为 ±1.75494351E -38; 最 大 非 零 值 为 ±3 . 4 0 2 8 2 3 4 6 6 E + 3 8 缺 省 值 : 如 果 列 可 为 NULL, 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:4 字节 同 义 词 : MySQL3.23 版 以 前 , FLOAT(4) 为 具 有 缺 省 M 和 D 值 的 FLOAT 的 同 义 词 。

mysql data类型用法

mysql data类型用法

MySQL是一种流行的关系型数据库管理系统,它支持多种数据类型。

以下是一些常用的MySQL数据类型及其用法:1. 数值数据类型:* INT:用于存储整数,范围为-2147483648到2147483647。

* SMALLINT:用于存储小型整数,范围为-32768到32767。

* MEDIUMINT:用于存储中等大小的整数,范围为-8388608到8388607。

* BIGINT:用于存储大整数,范围为-9223372036854775808到9223372036854775807。

* FLOAT:用于存储单精度浮点数。

* DOUBLE:用于存储双精度浮点数。

* DECIMAL(p,s):用于存储精确小数,其中p是总位数,s是小数点后的位数。

2. 字符串数据类型:* CHAR(n):用于存储固定长度的字符串,其中n是字符数。

例如,CHAR(10)可以存储长度为10个字符的字符串。

* VARCHAR(n):用于存储可变长度的字符串,其中n是最大字符数。

例如,VARCHAR(255)可以存储最大长度为255个字符的字符串。

* TEXT:用于存储较大的文本数据。

3. 日期和时间数据类型:* DATE:用于存储日期,格式为YYYY-MM-DD。

* TIME:用于存储时间,格式为HH:MM:SS。

* DATETIME:用于存储日期和时间,格式为YYYY-MM-DD HH:MM:SS。

* TIMESTAMP:用于存储时间戳,格式为YYYY-MM-DD HH:MM:SS。

与DATETIME相比,TIMESTAMP的范围较小,但精度更高。

* YEAR:用于存储年份,可以存储2位或4位的年份表示。

4. 布尔数据类型:* BOOLEAN:用于存储布尔值,可以存储TRUE或FALSE。

在MySQL中,通常使用tinyint(1)来代替布尔类型。

5. 复合数据类型:* ENUM(value1,value2,...):用于定义一个枚举类型的字段,可以指定一组允许的值。

四、MySQL数据类型和运算符

四、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。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.数值类型Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。

扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形,并增加了BIT类型,用来存放位数据。

整数类型字节范围(有符号)范围(无符号)用途TINYINT 1字节(-128,127) (0,255) 小整数值SMALLINT 2字节 (-32 768,32 767) (0,65535) 大整数值MEDIUMINT 3字节(-8 388 608,8 388 607) (0,16 777215) 大整数值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 036 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.402 823 466 351 E+38) 0,(1.175 494 351 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 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。

例如,指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。

需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。

万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。

还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为 0。

UNSIGNED 修饰符规定字段只保存正值。

因为不需要保存数字的正、负符号,可以在储时节约一个“位”的空间。

从而增大这个字段可以存储的值的范围。

ZEROFILL 修饰符规定 0(不是空格)可以用来真补输出的值。

使用这个修饰符可以阻止MySQL 数据库存储负值。

FLOAT、DOUBLE 和 DECIMAL 类型MySQL 支持的三个浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型。

FLOAT 数值类型用于表示单精度浮点数值,而 DOUBLE 数值类型用于表示双精度浮点数值。

与整数一样,这些类型也带有附加参数:一个显示宽度指示器和一个小数点指示器。

比如语句 FLOAT(7,3) 规定显示的值不会超过 7 位数字,小数点后面带有 3 位数字。

对于小数点后面的位数超过允许范围的值,MySQL 会自动将它四舍五入为最接近它的值,再插入它。

DECIMAL 数据类型用于精度要求非常高的计算中,这种类型允许指定数值的精度和计数方法作为选择参数。

精度在这里指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的位数。

比如语句 DECIMAL(7,3) 规定了存储的值不会超过7 位数字,并且小数点后不超过 3 位。

忽略 DECIMAL 数据类型的精度和计数方法修饰符将会使 MySQL 数据库把所有标识为这个数据类型的字段精度设置为 10,计算方法设置为 0。

UNSIGNED 和 ZEROFILL 修饰符也可以被 FLOAT、DOUBLE 和 DECIMAL 数据类型使用。

并且效果与 INT 数据类型相同。

二.字符串类型MySQL 提供了8个基本的字符串类型,分别:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 各SET等多种字符串类型。

可以存储的范围从简单的一个字符到巨大的文本块或二进制字符串数据。

字符串类型字节大小描述及存储需求CHAR 0-255字节定长字符串VARCHAR 0-255字节变长字符串TINYBLOB 0-255字节不超过 255 个字符的二进制字符串TINYTEXT 0-255字节短文本字符串BLOB 0-65535字节二进制形式的长文本数据TEXT 0-65535字节长文本数据MEDIUMBLOB 0-16 777 215字节二进制形式的中等长度文本数据MEDIUMTEXT 0-16 777 215字节中等长度文本数据LOGNGBLOB 0-4 294 967 295字节二进制形式的极大文本数据LONGTEXT 0-4 294 967 295字节极大文本数据VARBINARY(M) 允许长度0-M个字节的定长字节符串,值的长度+1个字节BINARY(M) M 允许长度0-M个字节的定长字节符串CHAR 和 VARCHAR 类型CHAR 类型用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。

这个大小修饰符的范围从 0-255。

比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补。

CHAR 类型可以使用 BINARY 修饰符。

当用于比较运算时,这个修饰符使 CHAR 以二进制方式参于运算,而不是以传统的区分大小写的方式。

CHAR 类型的一个变体是 VARCHAR 类型。

它是一种可变长度的字符串类型,并且也必须带有一个范围在 0-255 之间的指示器。

CHAR 和 VARCHGAR 不同之处在于 MYSQL 数据库处理这个指示器的方式:CHAR 把这个大小视为值的大小,不长度不足的情况下就用空格补足。

而 VARCHAR 类型把它视为最大值并且只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值。

所以短于指示器长度的 VARCHAR 类型不会被空格填补,但长于指示器的值仍然会被截短。

因为 VARCHAR 类型可以根据实际内容动态改变存储值的长度,所以在不能确定字段需要多少字符时使用 VARCHAR 类型可以大大地节约磁盘空间、提高存储效率。

VARCHAR 类型在使用 BINARY 修饰符时与 CHAR 类型完全相同。

TEXT 和 BLOB 类型对于字段长度要求超过 255 个的情况下,MySQL 提供了 TEXT 和 BLOB 两种类型。

根据存储数据的大小,它们都有不同的子类型。

这些大型的数据用于存储文本块或图像、声音文件等二进制数据类型。

TEXT 和 BLOB 类型在分类和比较上存在区别。

BLOB 类型区分大小写,而 TEXT 不区分大小写。

大小修饰符不用于各种 BLOB 和 TEXT 子类型。

比指定类型支持的最大范围大的值将被自动截短。

三.日期和时间类型在处理日期和时间类型的值时,MySQL 带有 5 个不同的数据类型可供选择。

它们可以被分成简单的日期、时间类型,和混合日期、时间类型。

根据要求的精度,子类型在每个分类型中都可以使用,并且 MySQL 带有内置功能可以把多样化的输入格式变为一个标准格式。

类型大小(字节) 范围格式用途DATE 4 1000-01-01/9999-12-31 YYYY-MM-DD 日期值TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间YEAR 1 1901/2155 YYYY 年份值DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值TIMESTAMP 4 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳DATE、TIME 和 TEAR 类型MySQL 用 DATE 和 TEAR 类型存储简单的日期值,使用 TIME 类型存储时间值。

这些类型可以描述为字符串或不带分隔符的整数序列。

如果描述为字符串,DATE 类型的值应该使用连字号作为分隔符分开,而 TIME 类型的值应该使用冒号作为分隔符分开。

需要注意的是,没有冒号分隔符的 TIME 类型值,将会被 MySQL 理解为持续的时间,而不是时间戳。

MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 TEAR 类型输入的两个数字进行最大限度的通译。

因为所有 TEAR 类型的值必须用 4 个数字存储。

MySQL 试图将 2 个数字的年份转换为 4 个数字的值。

把在 00-69 范围内的值转换到2000-2069 范围内。

把 70-99 范围内的值转换到 1970-1979 之内。

如果 MySQL 自动转换后的值并不符合我们的需要,请输入 4 个数字表示的年份。

DATEYIME 和 TIMESTAMP 类型除了日期和时间数据类型,MySQL 还支持 DATEYIME 和 TIMESTAMP 这两种混合类型。

它们可以把日期和时间作为单个的值进行存储。

这两种类型通常用于自动存储包含当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用。

如果我们对 TIMESTAMP 类型的字段没有明确赋值,或是被赋与了 null 值。

MySQL 会自动使用系统当前的日期和时间来填充它。

复合类型MySQL 还支持两种复合数据类型 ENUM 和 SET,它们扩展了 SQL 规范。

虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。

一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值。

ENUM 类型ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项。

相关文档
最新文档