数据库索引建立与删除:原理与实践详解

发表时间: 2024-07-31 16:03

SQL命令包括数据定义、查询、操纵和控制四大类,其中SQL的数据定义用于创建数据库中的全部数据对象,包括SQL数据库、模式、基本表、视图和索引等。

学习如何用SQL语言定义索引。

一、索引的使用

索引属于内模式范畴,它类似于字典中的拼音检字表和部首检字表、图书中的目录等。

建立索引是加快查询速度的有效手段。

索引的建立有两种方式,一种是SQL提供了相应的命令,它允许数据库管理员DBA或者是表的建立者根据自己的需要来建立索引;第二种方式是某些DBMS会自动地在它的主键列及它的唯一性列上建立索引。

建立索引:

1.DBA或表的属主(即建立表的人)根据需要建立

2.有些DBMS自动建立以下列上的索引:

1). PRIMARY KEY

2). UNIQUE

索引建立之后,它的维护和使用是不需要用户的参与的。

维护索引:

索引建立后由DBMS自动维护,不需用户干预。

使用索引:

-DBMS自动选择是否使用索引以及使用哪些索引。

二、建立索引

语法:CREATE [UNIQUE] INDEX <索引名> ON <基本表名>

(<列名 1 > [ASC|DESC][,<列名2 >[ASC|DESC]] ...)

命令:在哪一张表上建立索引,索引的名字是什么。索引可以建立在该表上的一列或者是多列上。列与列之间用逗号分隔,其中,列名1为第一索引项,列名2为第二索引项,以此类推。

例1: CREATE UNIQUE INDEX SI ON S(sno)

建立一个唯一性索引,其中唯一性索引UNIQUE表示要求每一个索引值对应的是唯一的数据,即列sno的值在基本表S中不重复。

例一中的索引的名字是SI,是在S表上面创建的,索引的项就是表中的学号,这里面默认是已升序学号来排列创建的索引。可以使用升序ASC来表示,也可以使用降序DESC来建立索引,默认的是使用升序ASC所以可以省略。

例2: CREATEUNIQUE INDEX SC_INDDEX ON SC(sno ASC, cno DESC)

缺省时,表示升序。

在SC表上建立一个唯一性的名为SC_INDDEX的索引,创建索引时使用了两个索引项,其中学号是升序的、课程号是降序的。意味着学号是升序排列的,学号相同的情况下课程号是降序排列的。

如下图所示,建立S表上学号升序的唯一索引SI,当命令执行成功以后,在S表下列可以看到索引列中有了一个唯一性索引SI,表明唯一性索引SI就被创建成功。

三、删除索引

当索引不再被需要的时候,SQL允许用户去删除这些不必要的索引。

删除索引使用的命令是DROP INDEX命令,有两种不同的方式根据不同的DBMS产品有关。

语法:DROP INDEX<表名.索引名>

例3:DROP INDEX SC.SC INDDEX(直接删除索引,给出索引的名字,前面是该索引所在的表的名字,用“.”来连接)

DROP INDEX SC_INDDEX on SC(也可以删除索引,给出索引名,并表示该索引是在SC表上的索引)

删除索引时,系统会同时从数据字典中删除有关该索引的描述。

四、总结

SQL的数据定义部分主要包括对数据库、基本表、索引和视图等数据库对象的创建和删除操作。

一个数据库中可以建立多个表和索引等数据库对象。其中,表与模式对应,索引与内模式对应。