比如我们新建一user表
create table user(
id int unsigned auto_increment primary key,
name varchar(60) not null default '',
password varchar(60) not null default '')engine=innodb charset=utf8;
新建到如下表结构: desc user;
对于mysql 中的表结构的修改(增删改),我们需要记住格式
alter table 表名 操作名称(add/drop/modify/change) [+对应的格式]; // ①
// 增加列 add column
需求:在user表中添加用户邮箱 email(在name字段后) / 登录次数 login_count
创建时间 create_at 在 login_count 之前
操作:
alter table user add email varchar(120) not null default '' after name;
alter table user add login_count int not null default 0;
alter table user add create_at int(10) not null default 0 before login_count; // 这个是错误的
alter table user add create_at int(10) not null default 0 after password;// 新增字段只有在某个字段之后,且这个关键字是after,没有before这个关键字
// 删除列 drop column
需求:删除login_count列
操作:
alter table user drop login_count;
需求:删除自增长的字段id的主键
1.修改id: alter table user change id id int not null;
只是修改了自增长,但是还是没有删掉主键
2.删除主键: alter table user drop primary key;
mysql的主键问题:
Mysql的两种主键。Primary key 和 not null auto_incriment在建立mysql表时,给一个字段添加了主键primary key 在insert数据时可以不用insert主键,mysql会自动添加0,但是在第二次insert时没有填写值mysql数据库还是默认添加0,会导致有重复的主键,这是不可以的。所有在定义了primary key时,在insert数据时要给主键填写值。
在建立mysql表时,给一个字段添加了主键 not null auto_increment;
这也是一个主键。时自增长的以1为开始。这个字段是可以不用填写值的,mysql数据库会自动给填写值,不会出现primary key的状况。
要给没有添加主键自增的id添加主键自增
alter table tb add primary key(id);
alter table tb change id id int(10) not null auto_increment;// 而不是 alter table tb change id id int(10) not null auto_increment=1;(这个是错误的)
经过这里的分析,最好的办法也是一个很好的习惯,我们在创建表的时候就把主键自增设定好。
// 修改列 modify(修改某列的属性) change(完全修改某列)
需求:修改 create_at 列的类型为 timestamp 并且默认值是 '0000-00-00 00:00:00';
操作:
alter table user modify create_at timestamp not null default '0000-00-00 00:00:00';
需求:把name列修改为username列
操作:
alter table user change name username varchar(60) not null default '';
// 查询列
需求:查询user表所有信息
操作:desc user;
show columns from user;
以上,效果同。
需求:查看表的创建的代码
操作:show create table user;
复习用!