标签:
数据库中的每个表都是由一个或多个列构成的。可以用 CREATE TABLE 语句创建一个表,创建表时要为每列指定一个类型。列的类型与数据类型相对应,但是比数据类型更为具体,用列类型描述表列可能包含的值的种类以及范围,列的值必须符合规定,不能包含对应的数据类型所允许的所有值。例如,CHAR(16)就规定了存储的字符串值必须是16位。当然不是你必须存储16个字符,而是指列在表中要占16个字符的宽度的。
MySQL的列类型是一种手段,通过这种手段可以描述一个表列包含什么类型的值,这又决定了 MySQL 怎样处理这些值。例如,数值值既可用数值也可用串的列类型来存放,但是根据存放这些值的类型,MySQL 对它们的处理将会有些不同。每种列类型都有几个特性如下:
下面是创建一个表的例子:
CREATE TABLE teacher
(
id TINYINT UNSIGNED NOT NULL,
name CHAR(16) NOT NULL,
tele NUMERIC(8),
sex ENUM("F","M") DEFAULT "M"
)
由上面这个例子可以知道,创建列类型的语法是:
col_name col_type [col_attributes][general_attributes]
我们将简要地考察一下 MySQL列类型以获得一个总的概念,然后更详细地讨论描述每种列类型的属性。
MySQL的数字类型如表1-3所示,可以包括浮点类型和整数类型:
表1-3 MySQL的数字列类型
类型名 |
涵义 |
TINYINT |
一个很小的整数 |
SMALLINT |
一个小整数 |
MEDIUMINT |
一个中等大小整数 |
INT、INTEGER |
一个正常大小整数 |
BIGINT |
一个大整数 |
FLOAT |
一个小(单精密)浮点数字 |
DOUBLE DOUBLE PRECISION REAL |
一个正常大小(双精密)浮点数字 |
DECIMAL NUMERIC |
一个未压缩(unpack)的浮点数字,“未压缩”意味着数字作为一个字符串被存储 |
MySQL的字符串类型如表1-4所示,串类型中不仅可以存储字符串,实际上任何二进制数据,例如,图象、音频、视频等,都可以存储在串类型中。
表1-4 MySQL的字符串列类型
类型名 |
涵义 |
CHAR |
一个定长字符串 |
VARCHAR |
一个变长字符串 |
TINYBLOB TINYTEXT |
最大长度为255(2^8-1)个字符的BLOB或TEXT列 |
BLOB TEXT |
最大长度为65535(2^16-1)个字符的BLOB或TEXT列 |
MEDIUMBLOB MEDIUMTEXT |
最大长度为16777215(2^24-1)个字符的BLOB或TEXT列 |
LONGBLOB LONGTEXT |
最大长度为4294967295(2^32-1)个字符的BLOB或TEXT列 |
ENUM(‘value1‘,‘value2‘,...) |
枚举:列只能赋值为某个枚举成员或NULL |
SET(‘value1‘,‘value2‘,...) |
集合:列可以赋值为多个集合成员或NULL |
MySQL的日期与时间类型如表1-5所示。MySQL允许你存储某个“不严格地”合法的日期值,例如1999-11-31,原因我们认为它是应用程序的责任来处理日期检查,而不是SQL服务器。为了使日期检查更“快”,MySQL仅检查月份在0-12的范围,天在0-31的范围。
表1-5 MySQL的时间和日期列类型
类型名 |
涵义 |
DATE |
一个日期,以‘YYYY-MM-DD‘格式来显示 |
TIME |
一个日期和时间组合,以‘YYYY-MM-DD HH:MM:SS‘格式来显示 |
DATETIME |
最大长度为255(2^8-1)个字符的BLOB或TEXT列 |
TIMESTAMP |
一个时间戳, 以YYYMMDDHHMMSS格式来显示 |
标签:
原文地址:http://www.cnblogs.com/ryansunyu/p/4209010.html