好比咱們新建一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;
複習用!