Mysql索引的添加与删除总结

时间:2019-02-15
本文章向大家介绍Mysql索引的添加与删除总结,主要包括Mysql索引的添加与删除总结使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

对索引的操作做了点总结,基本手打,我基本没有去验证,

如何发现错误,帮忙验证一下,

或者使用时发现错误的地方可以指出一下,我好改正!谢谢

 

索引
    主键索引
    外键索引
    唯一索引
    普通索引
    全文索引
    多列索引,联合索引
    

主键索引:
    添加主键索引
        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`);