mysql中主键、外键、唯一约束、索引的各种创建、删除方式

一、主键

创建表时:

#列级定义
create table user  (
	id int primary key, 
	name varchar(255)
	)
#表级定义
create table user  (
	id int,
	name varchar(255)primary key(id)
	)
#约束定义
create table user  (
	id int,
	name varchar(255),
	constraint pk primary key(id)
	)

修改表时:

alter table user add primary key(id);
alter table user add constraint pk primary key (id);
alter table modify id int primary key;

注意:无论通过哪种方式创建主键,通过show create table语句查看表时,显示的都是表级定义。

删除主键:

alter table user drop primary key;

注意:主键是唯一的,所以不需要名称,哪怕你是通过约束创建的,实际上是表级定义,约束名不起作用。
即以下语句是错误的:

alter table user drop constraint pk;
二、外键

创建表时:

create table introduce (
	name varchar(255),
	content varchar(255)foreign key(name) references user(name)
	)

注意:可以在foreign key的后面加上名称,如foreign key fk_index (name),不过这个名称并不是外键的名称,在创建外键时,mysql会为引用列创建一个索引,该名称为索引名。

以上方式,外键名称会自动生成,也可以通过以下语句指定外键名:

constraint fk foreign key(name) references user(name);

即约束名就是外键名称。

修改表时:

alter table introduce add foreign key(name) references user(name);
alter table introduce add constraint fk foreign key(name) references user(name);

注意:通过show create table语句查看时,显示的都为约束定义的外键。

删除外键:

alter table introduce drop foreign key fk;
alter table introduce drop constraint fk;
三、唯一约束

创建表时:

#列级定义
create table user  (
	id int unique, 
	name varchar(255)
	)
#表级定义
create table user  (
	id int,
	name varchar(255)unique (id)
	)
#约束定义
create table user  (
	id int,
	name varchar(255),
	constraint uq unique(id)
	)

注意:表级定义unique(id)也可以加上名称,如:unique index uq (id),不然自动生成。
另外,通过约束方式生成的唯一约束,该约束名就是唯一约束的名称。

修改表时,创建方式与主键、外键类似。

alter table user add unique(id);
alter table user add constraint uq unique (id);
alter table modify id unique;

通过show create table语句查看,会发现无论通过哪种方式创建唯一约束,显示的都是表级定义方式。
所以删除时,只能用如下语句:

alter table user drop index uq;

而对于删除约束的方式drop constraint uq会发生错误,原因在于约束定义在内部会转为表级定义。

unique index与unique key类似,通过show create table语句查看,显示的都为unique key。

四、索引
create table user  (
	id int, 
	name varchar(255)index(id)
	)

index的后面可以加上名称,不然自动生成。
索引不能通过约束定义的方式创建
修改表时:

alter table user add index myindex (id);

删除索引:

alter table user drop index myindex;

通过create index语句创建:

create index index_name on user(id);

通过drop index语句删除:

drop index index_name on user;

注意:unique index也可以用同样方式创建、删除。

index与key是类似的,通过show create table语句查看,显示关键字的是key

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值