时间日期类型
Datetime:时间日期,格式是YYYY-mm-dd HH:ii:ss,表示的范围是从1000到9999年,有0值:
0000-00-00 00:00:00
Date:日期,就是datatime中的date部分
Time:时间(段),指定的某个区间之间,负时间到正时间
Timestamp:时间戳,并不是时间戳,只是从1970年开始的YYYY-mm-dd HH:ii:ss 格式与datetime完全一致
Year:年份。两种形式,year(2)和year(4):1901-2156
创建时间日期表
插入数据:时间可以是负数,而且可以使很大的负数,
Timestamp字段:只要当前所在的记录被更新,该字段一定会自动更新成当前时间
网站是以PHP为实现的主要操作对象:PHP中有非常强大的时间日期处理函数:date,只需要一个时间戳就可以转换成任意类型的时间:以PHP为主的时候,都是在数据库使用时间戳(整型)来存储时间
字符串类型
在SQL中,将字符串类型分成了6类:char,varchar,text,blob,enum和set
定长字符串
定长字符串:char ,磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度
char(L):L代表length,可以存储的长度,单位为字符,最大长度值可以为255
char(4):在UTF8环境下,需要4*3=12个字节
变长字符串
变长字符串:varchar,在分配空间的时候,按照最大的空间分配:但是实际上最终用了多少,是根据具体的数据来确定
varhcar(L):L表示字符长度 理论上长度是65536个字节,但是会多出一到两个字节来确定存储的实际长度:但是实际上如果长度超过了255,既不用定长也不用变长,使用文本字符串text
varchar(10) :的确存了10个汉字,utf8环境,10*3+1=31(bytes)
存储了3个汉字:3*3+1=10(bytes)
定长与变长的存储实际空间(UTF8)
实际存储数据char(4)varchar(4)char占用字节varchar占用空间ABCDABCDABCD4*3=124*3+1=13AAA4*3=121*3+1=4ABCDE✘✘数据超过长度数据超过长度
如何选择定长或者变长字符串呢?
定长的磁盘空间比较浪费,但是效率高:如果数据基本上确定长度都一样,就使用定长,如身份证号,电话号码等
变长的磁盘空间比较节省,但是效率低;如果数据不能确定长度(不同数据有变化),如姓名,地址等