【数据库系统概论】数据定义之索引的创建、修改与删除

前言 ❓

前面【数据库系统概论】数据定义之基本表的定义/创建、修改和删除提过,SQL的数据定义功能包括定义表、定义视图和定义索引。索引属于数据库系统三级模式结构中的内模式范畴。

建立索引是加快查询速度的有效手段。用户可以根据需要为表中的单列(或多列)建立索引,也可以在一个表上建立一个或多个索引,以提供多种存取路径,从而加快查询速度。

数据库索引有多种类型,常见的索引包括顺序文件上的索引、B+树索引、hash索引等。关于索引,可以看看这篇文章:【MySQL】什么是索引?如何选择索引类型?

索引虽然能够加速数据库查询,但需要占用一定的存储空间,当基本表更新时,索引要进行相应的维护,这些都会增加数据库的负担,因此要根据实际应用的需要有选择地创建索引。

建立索引

DBA或表的属主(即建立表的人:Owner)根据需要建立索引。有些DBMS自动建立以下列上的索引:PRIMARY KEY 和 UNIQUE。

语法

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]);
  • <表名>指定要建索引的基本表名字
  • 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔
  • 用<次序>指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC
  • UNIQUE表明此索引的每一个索引值只对应唯一的数据记录
  • CLUSTER表示要建立的索引是聚簇索引

示例

为Student表、Course表、SC表分别建立索引,其中Student表按学号升序建立唯一索引,Course表按课程号升序建立唯一索引,SC表按学号升序和成绩降序建立唯一索引。

CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC, Grade DESC);

修改索引

对于索引的修改往往只涉及到改名。

语法

ALTER INDEX <旧索引名> RENAME TO <新索引名>;

示例

将SC表的SCno索引名改为SCSno:

ALTER INDEX SCno RENAME TO SCSno;

删除索引

索引一经建立就由系统使用和维护。但是入股哦数据修改频繁,系统就会花费许多时间来维护索引,从而降低了查询效率。这时可以删除一些不必要的索引。

语法

DROP INDEX <索引名>;

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

示例

删除Student表中的Stusno索引:

DROP INDEX Stusno;

感谢 💖

好啦,这次的分享就到这里,感谢大家看到这里🤞

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不怕娜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值