建表语句

       案例,高端白领私密社交网站

主键id

用户名

性别

体重kg

生日

工资

上次登录时间

个人简介

id

username

Gender

Weight

Birth

Salary

Last login

intro

列名称

列类型

默认值

是否主键

Id

Int  unsigned

 

PRI

Username

Varchar(20)/char(20)

 

 

Gender

Char(1)/tinyint

 

 

Weight

Tinyint unsigned

 

 

Birth

date

 

 

Salary

Decimal(8,2)

 

 

Last login

Int unsigned

 

 

Intro

Varchar(1500)

 

 

这张表还不够好,还可以优化。

分析:这张表除了username/intro列之外,每一列都是定长的,我们不妨让其所有列,都定长,可极大提高查询速度。空间与和时间是一对矛盾,优化方法,时间换空间,空间换时间。

Username char(20)会造成存储空间的浪费,但是提高了速度,值。

Intro char(1500)却浪费的太多了,另一方面,人的简介,一旦注册完成改的频率也并不高,我们可以把intro列单独拿出来,另放一张表里。

列名称

列类型

默认值

是否主键

id

Int unsigned

 

PRI

Username

char(20)

 

 

Intro

varchar(1500)

 

 

在开发中,会员的信息优化。往往是把频繁用到的信息,优先考虑效率,存放到一张表中,不常用的信息和比较占据空间的信息,优先考虑空间占用,存储到辅表中。

 

建表语法:所谓建表就是一个声明列的过程。

Create table 表名(

列名1声明 列1参数,

列名2声明 列2参数,

…………

列名N声明 列N参数

)engine myisam/innodb/bdb   charset  utf8/gbk/latin1;

 

create table ren(

    ->     id int unsigned auto_increment primary key,

    ->     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 myisam charset utf8;

 

小能MySQL笔记 第七课

修改表的语法,一张表创建完毕,有N列,之后可能要增加或删除或修改列

Alter table 表名 add  列名称    列类型 列参数

小能MySQL笔记 第七课

 

增加生日列

小能MySQL笔记 第七课

小能MySQL笔记 第七课

 

发现性别列gender忘记加了,现在要求加上,并且要加在username后。

小能MySQL笔记 第七课

 

如果想新建一个列,且在表的最前面,用first。

小能MySQL笔记 第七课

 

删除列:alter  table  表名   drop  列名; // 删除pid列

小能MySQL笔记 第七课

 

 

修改列:修改列类型,到了某世纪,性别发生了变化  男/女/雌雄同体/伪娘,这是我们想把char(1)改为char(4):alter table 表名   modify  列名  新类型  新参数

小能MySQL笔记 第七课

修改列名及类型: alter table  表名  change  旧列名  新列名  新类型  新参数

将id修改为UID:alter table m1 change id UID int unsigned;

 

小能MySQL笔记 第七课

 

作业:建一个电子商城,如何来设计商品表。再把商场表里的字段,一个个删掉,在一个个加上,并穿插改列操作。

 

如果列类型改变了,导致数据存不下怎么办?

比如,int改为smallint,如果不匹配,数据将会丢失,或者mysql的strict_mode下,修改不了。

相关文章: