建表案例:某高端白领私密社交表
会员表 member
__________________________________________________________________________
主键id | 用户名 | 性别 | 体重(KG)| 生日 | 工资 | 上次登录时间 | 个人简介
---------------------------------------------------------------------------
列名称 列类型 默认值 是否主键
id用户名 int unsigned primary
username varchar(20) ''
gender char(1),或者tinyint
weight tinyint unsigned
birth date
salary decimal(8,2)
lastlogin datetime
intro varchar
优化表
这张表除了username和intro列外,每一列都是定长的
我们不妨让其所有列都定长,可以极大提高查询速度
把username char(20)
intro varchar(1500)
username char(20) 是会造成空间的浪费,但是提高了速度
intro varchar(1500) 却浪费的太多了,另一方便为的简介,一旦注册完成改的频率也并不高
我们可以把intro列单独拿出来,另放一张表里
在计算机中的优化方法:时间换空间 空间换时间
列名称 列类型 默认值 是否主键
id用户名 int unsigned primary
username char(20) ''
intro varchar(1500)
在开发中,会员的信息优化往往是把频繁用到的信息,优先考虑效率,存储到一张表中
不常用的信息和比较占据空间的信息优先考虑空间占用存储到辅表
lastlogin int unsigned 这里用时间戳比较合适
建表语法:所谓建表就是一个声明列的过程
create table 表名(
列1声明 列1参数,
列2声明 列2参数,
......
......
列n声明 列n参数
)engine mysiam/innodb/bdb charset /utf8/gbk
mysql> create table member(
-> id int unsigned primary key auto_increment,
-> username char(20) not null default '',
-> gender char(1) not null default '',
-> weight tinyint unsigned not null default 0,
-> birth date not null default '0000-00-00',
-> salary decimal(8,2) not null default 0.00,
-> lastlogin int unsigned not null default 0
-> )engine mysiam charset utf8;