字段类型
整形类型
类型 | 储存空间 | 表示范围(无符号) | 表示范围(有符号) |
---|---|---|---|
tinyint | 1 | 0~28-1 | -27 ~27-1 |
smallint | 2 | 0~216-1 | -215 ~215-1 |
mediumint | 3 | 0~224-1 | -223 ~223-1 |
int | 4 | 0~232-1 | -231 ~231-1 |
bigint | 8 | 0~264-1 | -263 ~263-1 |
建表的时候,如果不指明字段无符号,则默认是有符号的,要想建一个无符号的字段,需要加unsigned修饰。
另外还有修饰符<M>,表示十进制补0的宽度,和修饰符zerofill配套使用,使用该修饰附后该字段默认是无符号的。
小数类型
小数类型有float(浮点),decimal(定点,其精度比浮点高)等等,通常带M,D两个参数,如:
Float(M,D)
其中M为精度,代表总位数,而D为标度,代表小数点后面的位数(均为十进制)。
在float类型中,当M≤24,占4字节,否则占8字节。
默认是有符号的,想建一个无符号的需要加unsigned修饰。
字符类型
char(M)
定长字符串,其中0<M<255,不论够不够指定长度都会占着M个长度(M为字符数),如果不够M个长度,则用空格在末尾补齐,取出时把右侧空格去掉,其优点是操作效率较高(可以通过行数和其占用长度直接算出偏移量)
varchar(M)
变长字符串,其中0<M<65525,存0到M个字符,在存储的时候,在字符前会加上字符的长度,因此空间利用率不能达到100%,另外查询速度没有char快。
text
表示比较大的文本级,不能有默认值,搜索速度稍慢
blob
用于存储二进制,如图像、音频等信息,主要是防止字符集过滤掉关键字节而设置的类型
日期和事件类型
date
日期类型(YYYY-MM-dd)存储年月日 占用3个字节
time
时间类型(hh:mm:ss)存储时分秒 占用3个字节
datetime
日期时间类型(YYYY-MM-dd hh:mm:ss)存储年月日时分秒 占用8个字节
year
年份类型(YYYY或YY)存储年 占用1个字节 只能表示1901到2255
以上类型操作时,其值都要加引号
建表
create table [tableName](
[columeName] [columeType] (primary key),
...
[columeName] [columeType](not null default xx)
)engine [engineName] charset [charsetName];
通常而言,不常用的信息以及比较占据空间的信息存储到辅表中,以免影响主表的查询效率。