美文网首页
Mysql练习-索引的操作

Mysql练习-索引的操作

作者: A04 | 来源:发表于2018-04-23 21:01 被阅读0次

    一、练习要求

    ① 登录MySQL数据库
    ② 创建数据库index_test
    ③ 创建表test_table1
    ④ 创建表test_table2,存储引擎为MyISAM
    ⑤ 使用ALTER TABLE语句在表test_table2的birth字段上建立名为ComDataIdx的普通索引
    ⑥ 使用ALTER TABLE语句在表test_table2的id字段上添加名为UniqIdx2的唯一索引,并以降序排列。
    ⑦ 使用CREATE INDEX语句在firstname、middlename和lastname三个字段上建立名为MultiColIdx2的组合索引。
    ⑧ 使用CREATE INDEX语句在title字段上建立名为FTIdx的全文索引。
    ⑨ 使用ALTER TABLE语句删除表test_table1中名为UniqIdx的唯一索引
    ⑩ 使用DROP INDEX语句删除表test_table2中名为MultiColIdx2的组合索引

    test_table1

    字段名 数据类型 主键 外键 非空 唯一 自增
    id int(11)
    name CHAR(100)
    address CHAR(100)
    description CHAR(100)



    test_table2

    字段名 数据类型 主键 外键 非空 唯一 自增
    id int(11)
    firstname CHAR(50)
    middlename CHAR(50)
    lastname CHAR(50)
    birth DATE
    title CHAR(100)

    二、操作记录


    创建数据库index_test

    mysql> CREATE database index_test;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> USE index_test;
    Database changed
    mysql>
    


    创建表test_table1

    mysql> CREATE TABLE test_table1
        -> (
        -> id          INT NOT NULL  PRIMARY KEY AUTO_INCREMENT,
        -> name       CHAR(100) NOT NULL,
        -> address     CHAR(100) NOT NULL,
        -> description  CHAR(100) NOT NULL,
        -> UNIQUE INDEX UniqIdx(id),
        -> INDEX MultiColIdx(name(20), address(30)),
        -> INDEX ComIdx( description(30) )
        -> );
    Query OK, 0 rows affected (0.33 sec)
    mysql>
    mysql> SHOW CREATE table test_table1 \G
    *************************** 1. row ***************************
           Table: test_table1
    Create Table: CREATE TABLE `test_table1` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` char(100) NOT NULL,
      `address` char(100) NOT NULL,
      `description` char(100) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `UniqIdx` (`id`),
      KEY `MultiColIdx` (`name`(20),`address`(30)),
      KEY `ComIdx` (`description`(30))
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    mysql>
    


    创建表test_table2,存储引擎为MyISAM

    mysql> CREATE TABLE test_table2
        -> (
        -> id         INT NOT NULL  PRIMARY KEY AUTO_INCREMENT,
        -> firstname   CHAR(100) NOT NULL,
        -> middlename CHAR(100) NOT NULL,
        -> lastname   CHAR(100) NOT NULL,
        -> birth      DATE NOT NULL,
        -> title       CHAR(100) NULL
        -> ) ENGINE=MyISAM;
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> SHOW CREATE table test_table1 \G
    *************************** 1. row ***************************
           Table: test_table1
    Create Table: CREATE TABLE `test_table1` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` char(100) NOT NULL,
      `address` char(100) NOT NULL,
      `description` char(100) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `MultiColIdx` (`name`(20),`address`(30)),
      KEY `ComIdx` (`description`(30))
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    
    mysql>
    
    


    使用ALTER TABLE语句在表test_table2的birth字段上建立名为ComDataIdx的普通索引

    mysql> ALTER TABLE test_table2 ADD INDEX ComDateIdx(birth);
    Query OK, 0 rows affected (0.10 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql>
    


    使用ALTER TABLE语句在表test_table2的id字段上添加名为UniqIdx2的唯一索引,并以降序排列。

    mysql> ALTER TABLE test_table2 ADD UNIQUE INDEX UniqIdx2 (id DESC) ;
    Query OK, 0 rows affected (0.09 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql>
    mysql>
    


    使用CREATE INDEX语句在firstname、middlename和lastname三个字段上建立名为MultiColIdx2的组合索引。

    mysql> CREATE INDEX MultiColIdx2 ON test_table2(firstname, middlename, lastname);
    Query OK, 0 rows affected (0.06 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql>
    mysql>
    


    使用CREATE INDEX语句在title字段上建立名为FTIdx的全文索引。

    mysql> CREATE FULLTEXT INDEX FTIdx ON test_table2(title);
    Query OK, 0 rows affected (0.07 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql>
    


    使用ALTER TABLE语句删除表test_table1中名为UniqIdx的唯一索引

    mysql> ALTER TABLE test_table1 DROP INDEX UniqIdx;
    Query OK, 0 rows affected (0.18 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql>
    


    使用DROP INDEX语句删除表test_table2中名为MultiColIdx2的组合索引

    mysql> DROP INDEX MultiColIdx2 ON test_table2;
    Query OK, 0 rows affected (0.05 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql>
    

    相关文章

      网友评论

          本文标题:Mysql练习-索引的操作

          本文链接:https://www.haomeiwen.com/subject/npcrlftx.html