SQL字段类型及部分建表思想

2018-07-15  本文已影响0人  某某香肠

字段类型

整形类型

类型 储存空间 表示范围(无符号) 表示范围(有符号)
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];
通常而言,不常用的信息以及比较占据空间的信息存储到辅表中,以免影响主表的查询效率。

上一篇下一篇

猜你喜欢

热点阅读