key跟primary key 的含义不同,如果只是key的话就是普通的索引。
key是数据库的物理结构,包含两层含义:
1.约束(偏重于约束和规范数据库的完整性)
2.索引(辅助查询用的)
primary key:主键(主键索引),只能有一个字段,并且是唯一的。之前碰到一种情况就是,设置自增的字段必须设为主键!
主键必须包含唯一的值;
主键列不能包含 NULL 值;
每个表都应该有一个主键,并且每个表只能有一个主键。(PRIMARY KEY 拥有自动定义的 UNIQUE 约束)
unique key:也是数据库约束,不同的是,一张表可以有多个unique key(可以是两个字段组成),用途:防止插入重复数据。
我们说索引分类,分为
主键索引(必须指定为“PRIMARY KEY”,没有PRIMARY Index)、
唯一索引(unique index,一般写成unique key)、
普通索引(index,只有这一种才是纯粹的index)
一个标准的建表语句
CREATE TABLE `activity_car_rela` (
`rela_id` bigint(64) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
`activity_id` bigint(64) NOT NULL COMMENT '活动id',
`car_id` bigint(64) NOT NULL COMMENT '车辆id',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`create_person` varchar(20) NOT NULL DEFAULT 'system',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`update_person` varchar(20) NOT NULL DEFAULT 'system',
`delete_time` datetime DEFAULT NULL,
`is_delete` tinyint(4) DEFAULT '0',
PRIMARY KEY (`rela_id`),
UNIQUE KEY `uk_car_act_id` (`activity_id`,`car_id`) USING BTREE,
KEY `uk_id` (`activity_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=134 DEFAULT CHARSET=utf8 COMMENT='活动车辆关联表';
1.在已创建的表字段上添加unique,如在user_id字段上添加
ALTER TABLE Persons
ADD UNIQUE (Id_P);
2.如果需要命名unique约束,并且是多个字段
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName);
3,,删除索引
ALTER TABLE Persons
DROP INDEX uc_PersonID;