小能MySQL笔记 第七课

建表语句

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

主键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;

 

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

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

 

增加生日列

 

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

 

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

 

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

 

 

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

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

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

 

 

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

 

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

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

发布了33 篇原创文章 · 获赞 4 · 访问量 3732

猜你喜欢

转载自blog.csdn.net/linux2422988311/article/details/104225003