当前位置: 首页 > ds >正文

头歌数据库课程实验(索引与数据库完整性)

第1关:创建一般索引

任务描述
本关任务:为 student 表按姓名升序建立索引,索引名为 idx_sname。

相关知识
为了完成本关任务,你需要掌握:

索引是什么;

索引的分类;

索引的创建和删除;

查询索引。

索引是什么
数据库索引是一种提高数据库系统性能的方法。索引能让数据库服务器更快地查找和获取表中指定的行。

例如,为了方便读者快速查找书中的术语,很多书籍在最后附加了索引页,术语按字母排序,同时给出页码。这样读者可以根据术语名,快速获取页码,而不用翻阅整本书。

但是索引也给数据库系统带来了一定的开销,所以我们应该谨慎地使用它们。

索引的分类
索引大体可分为单列索引(普通索引,唯一索引,主键索引)、组合索引、全文索引、空间索引四类。本实训我们主要介绍单例索引和组合索引:

单例索引:一个索引只包含单个列,但一个表中可以有多个单列索引;

普通索引:仅加速查询 最基本的索引,没有任何限制,是我们大多数情况下使用到的索引;
唯一索引:索引列中的值必须是唯一的,但允许为空值;
主键索引:是一种特殊的唯一索引,不允许有空值。
组合索引:在表的多个字段上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。

索引的创建和删除
创建索引
创建索引有两种方式,一种是在建表时创建,另一种是建表后创建:

普通索引:
创表时创建普通索引:

CREATE table mytable(
 id INT NOT NULL,
 username VARCHAR(16) NOT NULL,
 INDEX [indexName] (username)
);
建表后创建普通索引:

create INDEX 索引名称 on 表名(字段名 desc/asc);
#或者
ALTER TABLE 表名 ADD INDEX 索引名称 (字段名);
asc 代表升序索引,desc 代表降序,mysql 默认升序索引。

唯一索引:

CREATE UNIQUE INDEX 索引名称 ON 表名(字段名);
#或者
ALTER TABLE 表名 ADD UNIQUE (字段名);
主键索引:主键索引一般在建表时创建,会设为 int 而且是 AUTO_INCREMENT 自增类型的,例如一般表的 id 字段。

CREATE TABLE mytable (
  id int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id)
);
组合索引:组合索引就是在多个字段上创建一个索引。(应用场景:当表的行数远远大于索引键的数目时,使用这种方式可以明显加快表的查询速度)

CREATE INDEX 索引名称 ON 表名(字段1,字段2,字段3);
#或者
ALTER TABLE 表名 ADD INDEX 索引名称(字段1,字段2,字段3);
查询表中索引
查询索引 SQL:

show index from 表名;
编程要求
在右侧编辑器补充代码,要求如下:

为 student 表按姓名升序建立索引,索引名为 idx_sname。
测试说明
平台会对你编写的代码进行测试,将你所创建的索引都现实出来,具体现实效果请查看右侧测试集。

开始你的任务吧,祝你成功!

 use teachingdb;
create index idx_sname on student(sname);

第2关:删除索引-练习

任务描述
本关任务:删除索引 idx_sname。

相关知识
删除索引
同样,删除索引也有两种方式。

#使用drop删除索引
drop index index_name on table_name ;
#使用alter删除索引
alter table table_name drop index index_name ;
alter table table_name drop primary key ; #删除主键索引
编程要求
根据提示,在右侧编辑器补充代码,删除索引 idx_sname。

测试说明
编写代码后,点击测评即可。

 use teachingdb;drop index idx_sname on student;

第3关:创建联合索引

任务描述
本关任务:创建联合索引 idx_sname_sdept。

相关知识
为了完成本关任务,你需要掌握:如何创建联合索引。

创建联合索引
语法:

create index 索引名称 on 表名(字段名称)
示例:

create index firstIndex on student(id, name, address);
注意:

1.索引名称、表名、字段名称 都不要用引号括起来;

 2.对于联合索引而言,字段名称可以有多个,中间用英文逗号分隔即可;
 3..普通索引数据可以重复。

编程要求
在 student 表 sname 字段和 sdept 字段上创建联合索引 idx_sname_sdept,并将代码补充在右侧编辑器中。

测试说明
编写代码后,点击测评即可。

开始你的任务吧,祝你成功!

 use TeachingDb;
create index idx_sname_sdept on student(sname, sdept);

第4关:创建唯一索引

任务描述
本关任务:创建唯一索引 uk_cname。

相关知识
为了完成本关任务,你需要掌握:如何创建唯一索引。

如何创建唯一索引
语法:

create unique index 索引名称 on 表名(字段名称);
示例:

create unique index secondIndex on student(id, name, address);
注意:

索引名称、表名、字段名称 都不要用引号括起来;
对于联合索引而言,字段名称可以有多个,中间用英文逗号分隔即可;
唯一索引数据不可重复。
编程要求
在 course 表的 cname 字段上创建唯一索引 uk_cname ,并将代码补充在右侧编辑器中。

测试说明
编写代码后,点击测评即可。

开始你的任务吧,祝你成功!

 use TeachingDb;
create unique index uk_cname on course(cname)

第5关:创建前缀索引

任务描述
本关任务:创建4个字符的前缀索引 pf_cname。

相关知识
为了完成本关任务,你需要掌握:如何创建前缀索引。

创建前缀索引
创建前缀索引的两种方式

//1.使用CREATE INDEX语句
CREATE INDEX index_name ON table_name (column_name (length));
//2.使用ALTER TABLE语句
ALTER TABLE table_name ADD INDEX (column_name (length));
编程要求
在 course 表的 cname 字段上创建4个字符的前缀索引 pf_cname,并将代码补充在右侧编辑器中。

测试说明
编写代码后,点击测评即可。

开始你的任务吧,祝你成功!

 use TeachingDb;
create index pf_cname on course(cname(4));

第6关:创建全文索引

任务描述
本关任务:创建全文索引 ft_cname 。

相关知识
为了完成本关任务,你需要掌握:如何创建全文索引。

创建全文索引
创建全文索引的两种方式

//1.ALTER添加
ALTER TABLE table_name ADD FULLTEXT INDEX index_name (column1,column2,...);
//2.CRATE INDEX添加
CREATE FULLTEXT INDEX index_name ON table_name (column1,column2,...);
编程要求
在 course 表的 cname 字段上创建全文索引 ft_cname ,并将代码补充在右侧编辑器中。

测试说明
编写代码后,点击测评即可。

开始你的任务吧,祝你成功!

 use TeachingDb;create fulltext index ft_cname on course(cname)

http://www.xdnf.cn/news/3786.html

相关文章:

  • 从零认识阿里云OSS:云原生对象存储的核心价值
  • 解析机器人 2.0.2 | 支持超过50种短视频平台的链接解析,无水印提取,多功能下载工具
  • 华为OD机试真题——智能驾驶(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 什么是函数重载?
  • MySQL 空值处理函数对比:IFNULL、COALESCE 和 NULLIF
  • 《Linux macOS :GCC升级方法》
  • 私人医生通过AI分析基因数据,是否有权提前告知癌症风险?
  • 【AI面试准备】XMind拆解业务场景识别AI赋能点
  • QML图像提供器 (Image Provider)
  • 【Ansible自动化运维实战:从Playbook到负载均衡指南】
  • 【算法基础】插入排序算法 - JAVA
  • 怎样增加AI对话的拟人化和增加同理心
  • WEB前端小练习——记事本
  • 先知AIGC超级工场,撬动运营效率新杠杆
  • 在 Trae CN IDE 中配置 Python 3.11的指南
  • Nat. Hum. Behav:大脑“变形记”,注意力错误下的空间认知奇遇
  • 如何解决 403 错误:请求被拒绝,无法连接到服务器
  • 【KWDB 创作者计划】Docker单机环境下KWDB集群快速搭建指南
  • with的用法
  • 家用服务器 Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南
  • 【中间件】brpc_基础_用户态线程上下文
  • 小程序与快应用:中国移动互联网的渐进式革命——卓伊凡的技术演进观
  • JavaScript性能优化实战之调试与性能检测工具
  • KeyPresser 一款自动化按键工具
  • 【c语言】数据在内存中的存储
  • Servlet(二)
  • 怎样提升社交机器人闲聊能力
  • 【Linux】进程优先级与进程切换理解
  • 第38课 常用快捷操作——双击“鼠标左键”进入Properties Panel
  • Linux运维——Vim技巧一