好比咱们新建一user表mysql
create table user(sql
id int unsigned auto_increment primary key,数据库
name varchar(60) not null default '',spa
password varchar(60) not null default '')engine=innodb charset=utf8;3d
新建到以下表结构: desc user;blog
对于mysql 中的表结构的修改(增删改),咱们须要记住格式rem
alter table 表名 操做名称(add/drop/modify/change) [+对应的格式]; // ①innodb
// 增长列 add columntable
需求:在user表中添加用户邮箱 email(在name字段后) / 登陆次数 login_countemail
建立时间 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;
复习用!