索引篇

索引篇

MySQL中的索引分为很多种,具体如下:

1、普通索引

2、唯一性索引

3、全文索引

4、单列索引

5、多列索引

6、空间索引

其作用就是提高表中数据的查询速度。

创建索引的方式三种,具体如下:

一、创建表的时候创建索引

二、使用CREATE INDEX 语句在已经存在的表上创建索引

三、使用ALTER TABLE语句在已经存在表上创建索引

格式:CREATE TABLE + 表名+(字段名 数据类型[完整性约束条件],

                     字段名 数据类型[完整性约束条件],

                     ......

             字段名 数据类型

            [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY

                             [别名] (字段名1 [(长度)]) [ASC|DESC]) );

                        

  注:格式中【】中的内容均可省略

关于上述语法的相关解释具体如下:

UNIQUE可选参数,表示唯一性约束

FULLTEXT可选参数,表示全文约束

SPATIAL可选参数,表示空间约束

INDEXKEY:用来表示字段的索引,二者选一即可

             别名:可选参数,表示创建的索引的名称

             字段名1:指定索引对应字段的名称

             长度:可选参数,用于表示索引的长度

ASCDESC:可选参数,其中,ASC表示升序排列,DESC表示降序排列

 

1、创建普通索引

 是由INDEX或KEY定义的索引,它是MySQL中的基本索引类型,可以创建在任何数据类型上其值是否唯一和非空由字段本身的约束条件所决定。

翻译:在t1表中id字段上建立索引

 使用SHOW CREATE TABLE语句查看表的结构

注意:INT型后面不需要加数据长度!

 

2、创建唯一性索引

 是由UNIQUE定义的索引,该索引所在字段的值必须是唯一的

翻译:在表中的id字段上建立索引名为unique_id的唯一性索引,并且按照升序排列

3、创建全文索引

 是由FULLTEXT定义的索引,它只能创建CHAR、VARCHAR或TEXT类型的字段上,而且只有MyISAM存储引擎支持全文索引。InnoDB存储引擎还不支持全文索引

翻译:在表中的name字段上建立索引名为fulltext_name的全文索引

4、创建单列索引

 指的是在表中单个字段上创建索引,它可以是普通索引,唯一性索引或者全文索引,要保证该索引只对应表中一个字段即可。

翻译:在表中的name字段上建立索引名为single_name的单列索引

5、创建多列索引

 指的是在表中多个字段上创建索引,只有在查询条件中使用了这些字段中的第一个字段时该索引才会被使用。 

 

翻译:在表中的id和name字段上建立索引名为multi的多列索引

 

6、创建空间索引

翻译:在空间类型为GEOMETRY的字段上创建空间索引

注意:创建空间索引时,所在字段的值不能为空值,并且表的存储引擎为MyISAM。

 

7、使用CREATE INDEX 语句在已经存在的表上创建索引

  格式:CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX + 索引名

        + ON 表名 + (字段名 [(长度)] [ASC|DESC]);

  注意:UNIQUE、FULLTEXT和SPATIAL都是可选参数,分别用于表示唯一性索引、全文索引和空间索引。INDEX用于指明字段为索引

 

 8、在表中某个字段上创建索引

 ①创建普通索引:

翻译:在book表中的bookid字段上建立一个名称为index_id的普通索引

②创建唯一索引:

翻译:在book表中的bookid字段上建立一个名称为uniqueidx的唯一性索引

③创建单列索引:

 翻译:在book表中的comment字段上建立一个名称为singleidx的单列索引

④创建多列索引

翻译:在book表中的authors和info字段上建立一个名称为mulitidx的多列索引

⑤创建全文索引:

首先先删除book表

重新创建book表

开始创建

翻译:在book表的info字段上创建名称为fulltextidx的全文索引

⑥创建空间索引:

先创建表,然后使用CREATE INDEX语句在t7表的g字段上创建名称为spatidx的空间索引

 查看空间索引spatidx是否创建成功

9、使用ALTER TABLE语句在已经存在表上创建索引

 格式:ALTER TABLE + 表名+ ADD+ [UNIQUE|FULLTEXT|SPATIAL] + INDEX

      索引名 + (字段名 [(长度)] [ASC|DESC])

注意:  UNIQUE、FULLTEXT和SPATIAL都是可选参数,分别用于表示唯一性索引、全文索引和空间索引,ADD表示向表中添加字段。

为了使book表不包含任何索引,我们首先删除表book

重新建立表book:

①创建普通索引

 翻译:在表中的bookid字段上创建名称为index_id的普通索引

②创建唯一索引

翻译:在book表中的bookid字段上建立一个名称为uniqueidx的唯一性索引

③创建单列索引

 

 翻译:在book表中的comment字段上建立一个名称为singleidx的单列索引

④创建多列索引

 

 翻译:在book表中的authors和info字段上建立一个名称为multidx的多列索引

⑤创建全文索引

首先删除表book,再重新创建

 开始创建

翻译:在book表的info字段上创建名称为fulltextidx的全文索引

⑥创建空间索引

先创建表,然后在表中的space字段上创建名称为spatidx的空间索引

 

 

 

 

 

 

 

查看是否创建成功

10、删除索引

 ①使用ALTER TABLE删除索引

  格式:ALTER TABLE 表名 DROP INDEX 字段名

翻译:删除表book中名称为fulltextidx的全文索引

                               如图,可以看出全文索引已经不存在了

②使用DROP INDEX删除索引

格式:DROP INDEX 索引名 ON 表名;

翻译:删除表中名称为spatidx的空间索引

          如图,我们可以看出空间索引已经不存在了

 

 

 

耗时之久,终于写完了!!!!!!!!!

 

 

 

 

 

posted @ 2019-11-19 23:15  CcCYR  阅读(552)  评论(0编辑  收藏  举报