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

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

第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)

相关文章:

  • 计算方法实验五 插值多项式的求法
  • AI超级智能体教程(五)---自定义advisor扩展+结构化json输出
  • FreeRtos实战从入门到精通--任务创建和删除(动态方法)--事了拂衣去,深藏功与名
  • 先知AIGC超级工场,撬动运营效率新杠杆
  • ASP.NET MVC​ 入门与提高指南八
  • (超2万字数详解)C++学习之类与对象
  • D. 例题3.2.2 整数划分问题
  • python进阶(2)二进制
  • 【分享】Winlator 10.0[特殊字符]虚拟电脑 可玩游戏办公[特殊字符]
  • mvvm 如何 实现 MultiBinding 与转换器
  • 数据结构*队列
  • python下载
  • Java从入门到精通 - Java语法
  • DeepSeek与MySQL:开启数据智能新时代
  • mysql 云服务远程linux创建数据库
  • 阿里巴巴Qwen团队发布了新一代多模态模型Qwen2.5-Omni-3B
  • Easy云盘总结篇-登录注册
  • 二种MVCC对比分析
  • MyBatis的工作原理
  • 构建高效老年基础护理实训室,培养专业护理人才
  • 世界人形机器人运动会将在北京“双奥场馆”举行
  • 机关食堂向游客开放的重庆荣昌区,“消费市场迎来历史性突破”
  • 伯克希尔董事会投票决定:阿贝尔明年1月1日起出任CEO,巴菲特继续担任董事长
  • 申活观察|精致精准精细,城市“双面镜”照见怎样的海派活力
  • 朝中社:美在朝鲜半岛增兵将进一步增加其本土安全不确定性
  • 苏州一直升机坠落致1死4伤,事故调查正展开