对索引的操作做了点总结,基本手打,没有去验证,
如果发现错误,帮忙验证一下,
或者使用时发现错误的地方可以指出一下,我好改正!谢谢
索引
主键索引
外键索引
唯一索引
普通索引
全文索引
多列索引,联合索引
主键索引:
添加主键索引
1 :
CREATE TABLE `user`(
`id` int NOT NULL AUTO_INCREMENT ,
PRIMARY KEY (`id`)
)ENGINE INNODB CHARSET utf8 COMMENT '用户表';
或:
CREATE TABLE `user`(
`id` int NOT NULL PRIMARY KEY AUTO_INCREMENT
)engine innodb charset utf8 comment '用户表';
2 :
ALTER TABLE `user` ADD PRIMARY KEY ( `id` );
删除主键索引
ALTER TABLE `user` DROP PRIMARY KEY (`id`);
外键索引:
添加外键索引
1
模拟一个中间表, 外键指向两个表的id字段
CREATE TABLE `user_pc` (
`user_id` int NOT NULL,
`pc_id` int NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`),
FOREIGN KEY (`pc_id`) REFERENCES `pc`(`id`)
)engine innodb charset utf8 comment '用户与pc中间表';
2
ALTER TABLE `user_pc` ADD FOREIGN KEY (`user_id`) REFERENCES `user`(`id`);
ALTER TABLE `user_pc` ADD FOREIGN KEY (`pc_id`) REFERENCES `pc`(`id`);
删除外键:
ALTER TABLE `tb_active` DROP FOREIGN KEY `FK_ID`
唯一索引:
添加唯一索引
1
CREATE TABLE `user`(
`id` int NOT NULL PRIMARY KEY AUTO_INCREMENT ,
`id_card` VARCHAR(18) NOT NULL,
UNIQUE KEY('id_card')
)engine innodb charset utf8 comment '用户表';
2
ALTER TABLE `user` ADD UNIQUE KEY (`id_card`);
删除唯一索引
ALTER TABLE `user` DROP UNIQUE KEY (`id_card`);
普通索引:
添加普通索引
1
CREATE TABLE `user` (
`id` int NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(16) NOT NULL COMMENT '姓名',
INDEX(`name`)
)engine innodb charset utf8 comment '用户表';
或
CREATE TABLE `user` (
`id` int NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(16) NOT NULL COMMENT '姓名',
INDEX `index_name` (`name`)
)engine innodb charset utf8 comment '用户表';
或
CREATE TABLE `user` (
`id` int NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(16) NOT NULL COMMENT '姓名',
KEY (`name`)
)engine innodb charset utf8 comment '用户表';
或
CREATE TABLE `user` (
`id` int NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(16) NOT NULL COMMENT '姓名',
KEY `index_name` (`name`)
)engine innodb charset utf8 comment '用户表';
2
ALTER TABLE `user` ADD INDEX(`name`);
或
ALTER TABLE `user` ADD INDEX `index_name` (`name`);
或
ALTER TABLE `user` ADD KEY `index_name` (`name`);
或
ALTER TABLE `user` ADD KEY `index_name` (`name`);
删除普通索引:
ALTER TABLE `user` DROP INDEX(`name`);
全文索引:
添加全文索引
1
CREATE TABLE `user`(
`id` int NOT NULL PRIMARY KEY AUTO_INCREMENT,
`description` VARCHAR(512) NULL DEFAULT NULL COMMENT '备注',
FULLTEXT ( `description`)
)engine innodb charset utf8 comment '用户表';
2
ALTER TABLE `user` ADD FULLTEXT ( `description`)
删除全文索引:
ALTER TABLE `user` DROP FULLTEXT(`description`);
多列索引(联合索引):
添加多列索引索引
1
CREATE TABLE `user_item`(
`id` int not null PRIMARY KEY AUTO_INCREMTN,
`user_id` int not null comment '用户id',
`item_id` int not null comment '元素id',
KEY `userId_itemId` (`user_id`,`item_id`) USING BTREE
)engine innodb charset utf8 comment '用户表';
2
ALTER TABLE `user_item` ADD INDEX `index_name` ( `column1`, `column2`, `column3` )
删除多列索引
ALTER TABLE `user_item` DROP KEY (`userId_itemId`);