MySQL数据类型

来源:互联网 发布:淘宝入驻质检报告 编辑:程序博客网 时间:2024/05/18 00:43

MySQL数据库提供了多种数据类型。其中包括整数、浮点数、定点数、日期和时间、字符串和二进制数据类型。不同的数据类型有

不用的特点,使用范围不同。

整数类型

整数类型是数据库中最基本的数据类型。标准SQL中支持integer和smallint这两类数据类型。mysql数据库除了这两类,还扩展支持

TINYINT,MEDIUMINT和BIGINT。如图所示:


例如:TINYINT的字节数为1,1个字节是8位,那么,TINYINT无符号数的最大是11111111,即2^8-1,最小为0;

有符号数的最大为01111111,即2^7-1,最小为10000000,即2^-8,同理,也可以算出其他的来~

浮点数和定点数类型

MySql中使用浮点数和定点数类型来表示小数。浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型)。

定点数类型就是DECIMAL型。如图所示:


数据类型(M,D),例如,FLOAT(6,2)的含义为数据类型为FLOAT型,数据长度为6,小数点后保留2位,说明1234.56是符合要求的。

如果插入值的精度高于实际定义的精度,系统会自动进行四舍五入处理,使值的精度达到要求,不同的是,定点数在四舍五入会有警告。

在Mysql中,定点数以字符串形式存储,因此,其精度比浮点数要高。而且,浮点数会出现误差,这是浮点数一直存在的缺陷。如果要对数据的精度要求

比较高,还是选择定点数比较安全。

日期与时间类型

日期与时间类型是为了方便在数据库中存储日期和时间而设计的。MySql中有多种表达时间与日期的数据类型。其中,YEAR表达年份,

DATE类型表达日期,TIME表达时间,DATETIME和TIMESTAMP表示日期和时间。

YEAR类型使用一个字节来表示年份。MySql中以YYYY的形式显示YEAR类型的值。给YEAR类型的字段赋值的表示方法如下:

1.使用4位字符串或数字表示,其范围是从1901到2155,输入格式为‘YYYY’或YYYY,例如,输入‘2008’或者2008,可以直接保存为2008,如果超过了范围,就会插入0000

2.使用2位字符串表示。‘00’到‘69’转换为2000到2069,‘70’到‘99’转换为1970到1999,‘0’和‘00’的效果是一样的

TIME类型使用3个字节来表示时间,MySql中以HH:MM:SS的形式显示TIME类型的值。其中,HH表示时,MM表示分,取值范围为0-59,SS表示秒,范围为0-59

TIME类型的范围可以从‘-838:59:59’到‘838:59:59’。

1.‘D HH:MM:SS’格式的字符串表示。其中D表示天数,取值范围是0-34.保存时,小时的值等于(D*24+HH),当然,

输入时可以不严格按照这个格式,也可以是‘HH:MM:SS’、‘MM:SS’、‘D HH:MM’、‘D HH’或者‘SS’等形式。

2.‘HHMMSS’格式的字符串或者HHMMSS格式的数字表示

3.使用CURRENT_TIME或者NOW()输入当前系统的时间

DATE类型使用4个字节来表示日期。MySQl中以YYYY-MM-DD的形式显示DATE类型的值,其中,分别表示年,月,日。

DATE类型的范围可以从‘1000-01-01’到‘9999-12-31’。给DATE类型的字段赋值的表示方法如下:

1.‘YYYY-MM-DD’或者‘YYYYMMDD’格式的字符串表示,这种方式可以表达的范围是‘1000-01-01’到‘9999-12-31’。

MySql中还支持一些不严格的语法格式,任何标点都可以用来做间隔符。如输入‘2001.3.8’将转换为2001-03-08.

2.‘YY-MM-DD’或者‘YYMMDD’格式的字符串表示。其中‘YY’的取值为‘00’到‘69’转换为2000到2069,‘70’到‘99’的转换为1970到1999,与YEAR类型相似

3.YYYYMMDD或YYMMDD格式的数字表示。其中YY的取值‘00’到‘69’转换为2000到2069,‘70’到‘99’转换为1970到1999

DATETIME类型使用8个字节来表示日期和时间。Mysql中以‘YYYY-MM-DD HH-MM-SS’的形式显示DATETIME类型的值。从其形式可以看出这个

类型可以直接用DATE类型和TIME类型组合而成。给DATETIME类型的字段赋值的表示方法如下:

1.‘YYYY-MM-DD HH-MM-SS’或者‘YYYYMMDDHHMMSS’格式的字符串表示。这种方式可以表达的范围是‘1000-01-01 00:00:00’到‘9999-12-31 23:59:59’。

Mysql中还支持一些不严格的语法格式,任何标点都可以从来做间隔符。情况与DATE类型相同。而且,时间部分也可以用任意分隔符隔开,这与TIME类型不同,TIME类型只能用“;”隔开。例如,输入‘2008@08@08 08*08*08’,同意转换为2008-08-08 08:08:08

2.‘YY-MM-DD HH-MM-SS’或者YYMMDDHHMMSS格式的字符串表示。其中‘YY’的取值从‘00’到‘69’转换为2000到2069,‘70’到‘99’转换为1970到1999,与YEAR类型和DATE类型相同。

3.YYYYMMDDHHMMSS或者YYMMDDHHMMSS格式的数字表示。例如输入20080808080808,DATETIME类型转换为2008-08-08 08:08:08

如果输入为0,那个转换为0000-00-00 00-00-00.

4.使用NOW()来输入当前系统日期和时间

下面介绍TIMESTAMP类型的几种与DATETIME类型不同的形式,内容如下:

1.使用CURRENT_TIMESTAMP来输入系统当前日期和时间。

2.输入null时,系统会输入系统当前日期和时间。

3.无任何输入时,系统会输入系统当前日期和时间。

TIMESTAMP类型还有一个很大的特殊点,就是时间是根据时区来显示的。但是它的类型范围太小,其最大时间为2038-01-19 11:14:07

字符串类型

字符串类型是在数据库中存储字符串的数据类型。字符串类型包括char,varchar,blob,text,enum和set。

char和varchar类型都是在创建表时指定了最大长度,其基本形式如下:字符串类型(M),例如,CHAR(4)就是指定数据类型为char类型,其最大长度为4.

char类型的长度是固定的,在创建表时就指定了,其长度可以是0-255的任意值。例如,char(100)就是指定char类型的长度为100.

varchar类型的长度是可变的,在创建表时指定了最大长度,定义时,其最大值可以取0-65535之间的任意值,指定最大值以后,其长度可以在0到最大长度之间。

例如,varchar(100)的最大长度是100,但是,不是每条记录都要占用100个位置,而是在这个最大值范围内,使用多少分配多少

varchar类型实际占用的空间为字符串的实际长度加1,这样,可以有效的节约系统的空间。

TEXT类型是一种特殊的字符串类型。TEXT只能保存字符数据,如文字等,TEXT类型包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。

下面从四中TEXT类型允许的长度的长度和存储空间进行对比,如图所示:


从图可以看出,各种TEXT类型的区别在于允许的长度和存储空间不同。因此在这几种TEXT类型中,根据需求选取既能满足需要又最节约空间的类型即可。

ENUM类型又陈伟枚举类型,在创建表时,ENUM类型的取值范围就以列表的形式指定了。其基本形式如下:

属性名 ENUM(‘值1’,‘值2’,。。。。。)

其中,属性名参数指字段的名称,这些值末尾的空格将会被系统直接删除。

ENUM类型的值只能取列表中的一个元素。其取值列表中最多能有65535个值。列表中的每个值都有一个顺序排列的编号,Mysql中存入的是这个编号,而不是列表中的值。

如果ENUM类型加上了not null属性,其默认值为取值列表的第一个元素,如果不加上,ENUM类型将允许插入null,而且null为默认值

SET类型,其基本形式如下;属性名  SET(‘值1’,‘值2’,。。。。。),其中,属性名参数指字段的名称,这些值末尾的空格将会被系统直接删除。

SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是有64个元素构成的组合。列表中的每个值都有一个顺序排列的编号。Mysql中存入的是这个编号,而不是列表中的值。

插入记录时,SET字段里的元素顺序无关紧要。存入Mysql数据库后,数据库系统会自动按照定义时的顺序显示。

二进制类型

二进制类型是数据库中存储二进制数据的数据类型。二进制类型包括BINARY,VARBUNARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB和

LONGBLOB,这种类型就不详细介绍了,不怎么用。

原创粉丝点击