MySQL添加/删除主键、外键、唯一键、索引、自增

转: 思想永无止境

主键

主键会自动添加唯一索引,所以主键列不需要添加索引

建表时设置主键

create table tableName(
    id int primary key
);
或:
create table tableName(
    id int,
    primary key (id)
);

单独设置主键

alter table tableName add primary key(id)

删除主键

alter table tableName drop primary key;

外键

建表时添加外键

create table tableName1(
    tableName2_id int not null,
    foreign key(tableName2_id) references tableName2(id)
);

单独添加外键

alter table tableName1 add constraint tableName1_ref_tableName2(foreignKeyName) foreign key(tableName2_id) references tableName2(id);

删除外键

alter table table1 drop foreign key foreignKeyName;

唯一键

唯一键会自动添加唯一索引,所以唯一键列不需要添加索引

建表时添加唯一键

create table tableName(
    columnName int unique
);
或:
create table tableName(
    columnName int,
    unique key(columnName)
);

单独添加唯一键

alter table tableName add unique key(columnName)

删除唯一键

alter table tableName drop index columnName;

索引

很多情况,mysql中的索引index和键key是同义词。
fulltext全文索引,只有MyISAM引擎支持,就不说了。

建表时添加索引

create table tableName(
    columnName int key//这里只能用key不能用index
);
或:
create table tableName(
    columnName int,
    key/index (columnName)
);
或:
create table tableName(
    columnName int,
    key/index indexName(columnName)
);
多列索引:
create table tableName(
    columnName1 int,
    columnName2 int,
    key/index indexName(columnName1,columnName2)
);

单独添加索引

alter table tableName add key/index indexName(columnName)//单列索引
alter table tableName add key/index indexName(columnName1,columnName2,columnName3)//多列索引

删除索引

alter table tableName drop key/index columnName;

自增

auto_increment必须要求该列是主键(或别的键,详细请看文章:http://blog.csdn.net/u012643122/article/details/52643888)

建表时添加自增

create table tableName(
    columnName int unique auto_increment
);
或:
create table tableName(
    columnName int primary key auto_increment
);

单独添加自增

alter table tableName change columnName columnName int unique auto_increment;
或:
alter table tableName change columnName columnName int primary key auto_increment;

删除自增

alter table tableName change columnName columnName int;

设置自增初始值

create table tableName(
    columnName int primary key auto_increment
)auto_increment=1;
或:
alter table tableName auto_increment=1;

猜你喜欢

转载自blog.csdn.net/qq_36784975/article/details/88288847