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`); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值