型名
说明
char
定长字符串
varchar
可变长字符串
tinyblob
非常小的blob(二进制大对象)
blob
小blob
mediumblob
中等的blob
longblob
大blob
tinytext
非常小的文本串
text
小文本串
mediumtext
中等文本串
longtext
大文本串
enum
枚举;列可赋予某个枚举成员
set
集合;列可赋予多个集合成员
表4:字符串列类型
下表给出了mysql 定义串值列的类型,以及每种类型的最大尺寸和存储需求。对于可变长的列类
型,各行的值所占的存储量是不同的,这取决于实际存放在列中的值的长度。这个长度在表中用l 表示。
类型说明
最大尺寸
存储需求
char( m)
m 字节
m 字节
varchar(m)
m 字节
l + 1字节
tinyblob, tinytext
28- 1字节
l + 1字节
blob, text
216 - 1 字节
l + 2字节
mediumblob, mediumtext
224- 1字节
l + 3字节
longblob, longtext
232- 1字节
l + 4字节
enum("value1", "value2", ...)
65535 个成员
1 或2字节
set ("value1", "value2", ...)
64个成员
1、2、3、4 或8字节
表5:串列类型最大尺寸及存储需求
l 以外所需的额外字节为存放该值的长度所需的字节数。mysql 通过存储值的内容及其长度来处理
可变长度的值。这些额外的字节是无符号整数。请注意,可变长类型的最大长度、此类型所需的额外字节
数以及占用相同字节数的无符号整数之间的对应关系。例如,mediumblob 值可能最多224 - 1字节长并需
要3 个字节记录其结果。3 个字节的整数类型mediumint 的最大无符号值为224 - 1。这并非偶然。
2.3日期时间列类型
mysql 提供了几种时间值的列类型,它们分别是: date、datetime、time、timestamp和year。下
表给出了mysql 为定义存储日期和时间值所提供的这些类型,并给出了每种类型的合法取值范围。
类型名
说明
date
"yyyy-mm-dd"格式表示的日期值
time
"hh:mm:ss"格式表示的时间值
datetime
"yyyy-mm-dd hh:mm:ss"格式
timestamp
"yyyymmddhhmmss"格式表示的时间戳值
year
"yyyy"格式的年份值
表6:日期时间列类型
类型名
取值范围
存储需求
date
"1000-01-01"到"9999-12-31"
3字节
time
"-838:59:59"到"838:59:59"
3字节
datetime
"1000-01-01 00:00:00" 到"9999-12-31 23:59:59"
8字节
timestamp
19700101000000 到2037 年的某个时刻
4字节
year
1901 到2155
1字节
表7: 日前时间列类型的取值范围和存储需求
下面举个例子:
create table student
(
name varchar(20) not null,
chinese tinyint(3),
maths tinyint(3),
english tinyint(3),
birthday date
)
这个例子创建一个student表,这个表中有name字段,字符类型列,不
允许null(空值)。有chinese、maths和english三个整数类型列。还有个
birthday日期类型列。