今晚设计了一晚上的数据库,用了一下MyEclipse workbench,感觉小屏幕电脑用的太不爽了,一堆的窗口挤在一起。
整理一下遇到的零碎的东西:
字段约束:
PK:belongs to primary key:主键
NN:not null:不能为空
UQ:unique index:唯一
BIN:is binary column:此列为二进制数据
UN:unsigned data type:无符号数据类型
ZF:fill up values for that column with 0‘s if it is numeric:当存储的数据不够指定宽度时用0填充,例如INT(4)存了个5,则显示为0005
AI:auto incremental:自动增加
Default:默认值,这个默认值现在有了一些牛逼的用处,比如CURRENT_TIMESTAMP相当于插入时执行now()
数据范围:
INT占4个字节,有符号范围-2147483648~2147483647,无符号范围0~4294967295
DECIMAL和NUMERIC类型专门用来存储精确数据值,比如money,在MySQL中,NUMERIC是当做DECIMAL实现的,所以DECIMAL的特性完全适用于NUMERIC。MySQL5.5采用二进制格式存储DECIMAL。
DECIMAL的一般格式为DECIMAL(M,N),M为精度(precision),表示有效位数;N为进位(scale),表示小数点后能存储的位数。标准SQL规定DECIMAL(5,2)能够存储任意一个包含2位小数的5位数(不是我们一般意义上的5位数),所以DECIMAL(5,2)的存储范围为-999.99到999.99
在标准SQL中,DECIMAL(M)等价于DECIMAL(M,0),相似的,DECIMAL也等价于DECIMAL(M,0),而各数据库的具体实现可以自己决定M的默认值,MySQL对于这两种语法都支持,同时M的默认值为10。如果N是0,那么DECIMAL值不包含小数点或者分数部分。
关于TIMESTAMP:
现在TIMESTAMP可以支持自动初始化和自动更新
DEFAULT CURRENT_TIMESTAMP支持自动初始化
ON UPDATE CURRENT_TIMESTAMP支持自动更新
CURRENT_TIMESTAMP有很多同义词变体:CURRENT_TIMESTAMP(), NOW(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP, LOCALTIMESTAMP()