頭歌數據庫課程實驗(索引與數據庫完整性)

第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.pswp.cn/diannao/81509.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81509.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81509.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Socket 編程 UDP

Socket 編程 UDP UDP 網絡編程V1 版本 - echo serverV2 版本 - DictServerV3 版本 - 簡單聊天室 補充參考內容地址轉換函數關于 inet_ntoa UDP 網絡編程 聲明:下面代碼的驗證都是用Windows作為客戶端的,如果你有兩臺云服務器可以直接粘貼我在Linux下的客…

c++ 二級指針 vs 指針引用

二級指針 vs 指針引用:深入對比與分析 在C中,二級指針和指針引用都可以用于修改外部指針,但它們在語法、安全性和使用場景上有重要區別。下面我將從多個維度進行詳細對比。 1. 基本概念 1.1 二級指針 (Pointer to Pointer) int a 10; in…

【Hive入門】Hive與Spark SQL深度集成:通過Spark ThriftServer高效查詢Hive表

目錄 引言 1 Spark ThriftServer架構解析 1.1 核心組件與工作原理 1.2 與傳統HiveServer2的對比 2 Spark ThriftServer部署指南 2.1 環境準備與啟動流程 2.1.1 前置條件檢查 2.1.2 服務啟動流程 2.2 高可用部署方案 2.2.1 基于ZooKeeper的HA架構 3 性能優化實戰 3.…

[面試]SoC驗證工程師面試常見問題(二)

SoC驗證工程師面試常見問題(二) 摘要:面試SoC驗證工程師時,SystemVerilog (SV) 和 UVM (Universal Verification Methodology) 是核心技能,而AXI總線是現代SoC中最常見的接口協議之一,因此也是必考點。以下是可能被問到的問題及優質答案的詳細列表: 一、 System…

vue3 css模擬語音通話不同語音、正在加載等的效果

實現效果如下&#xff1a; 在不同的時間&#xff0c;顯示不一樣的效果&#xff08;大小是一樣的&#xff0c;截圖時尺寸發生了變化&#xff09; 具體實現代碼如下&#xff1a; <script setup> import {ref} from "vue";const max_hight ref(40px) const min…

KeyPresser 一款自動化按鍵工具

1. 簡介 KeyPresser 是一款自動化按鍵工具,它可以與窗口交互,并支持后臺運行, 無需保持被控窗口在前臺運行。用戶可以選擇要操作的目標窗口,并通過勾選復選框來控制要發送哪些按鍵消息。可以從組合框中選擇所需的按鍵,并在編輯框中輸入時間間隔以控制按鍵發送之間的延遲。程…

ai之paddleOCR 識別PDF python312和paddle版本沖突 GLIBCXX_3.4.30

這里寫自定義目錄標題 問題一**解決方案****方法 1&#xff1a;使用符號鏈接將系統庫鏈接到 Conda 環境** **補充說明****驗證修復結果** 問題二&#xff1a;**問題根源****解決方案****1. 確認 TensorRT 安裝狀態****2. 安裝 TensorRT 并配置環境變量****3. 驗證 TensorRT 與 …

【RabbitMQ】 RabbitMQ快速上手

文章目錄 一、RabbitMQ 核心概念1.1 Producer和Consumer2.2 Connection和Channel2.3 Virtual host2.4 Queue2.5 Exchange2.6 RabbitMQ工作流程 二、AMQP協議三 、web界面操作4.1 用戶相關操作4.2 虛擬主機相關操作 四、RabbitMQ快速入門4.1 引入依賴4.2 編寫生產者代碼4.2.1 創…

Beatoven AI 自動生成音樂

Beatoven AI 自動生成音樂 文章目錄 Beatoven AI 自動生成音樂一、源代碼二、準備工作1. 安裝 Python 環境2. 安裝依賴庫 三、配置 API 密鑰四、運行腳本示例一&#xff1a;使用默認參數示例二&#xff1a;生成一段電影預告片風格音樂&#xff08;30秒&#xff09; 五、生成結果…

筆試專題(十四)

文章目錄 mari和shiny題解代碼 體操隊形題解代碼 二叉樹中的最大路徑和題解代碼 mari和shiny 題目鏈接 題解 1. 可以用多狀態的線性dp 2. 細節處理&#xff1a;使用long long 存儲個數 3. 空間優化&#xff1a;只需要考慮等于’s’&#xff0c;‘sh’&#xff0c;shy’的情況…

LeetCode —— 94. 二叉樹的中序遍歷

&#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?Take your time ! &#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?&#x1f636;?&#x1f32b;?…

conda相關操作

安裝torch 直接使用conda install torch1.12.0會報錯&#xff0c;因為 Conda 通常使用 pytorch 作為包名&#xff08;而非 torch&#xff09; 正確使用方法&#xff1a; conda install pytorch1.12.0 -c pytorch使用 pip 安裝 pip install torch1.12.0在 Conda 中查看可安裝…

【Java面試筆記:進階】26.如何監控和診斷JVM堆內和堆外內存使用?

監控和診斷JVM內存使用是優化性能和解決內存問題的關鍵。 1.JVM內存監控與診斷方法 1.圖形化工具 JConsole:提供圖形化界面,可直接連接到Java進程,查看內存使用情況。VisualVM:功能強大的圖形化工具,但注意從Oracle JDK 9開始不再包含在JDK安裝包中。Java Mission Contr…

AVIOContext 再學習

這個目前階段用的不多&#xff0c;暫時不要花費太多精力。 url 的格式不同&#xff0c;使用的傳輸層協議也不同。這塊看代碼還沒看到自己想的這樣。 目前看的信息是&#xff1a;avformatContext 的 io_open 回調函數 在默認情況下叫 io_open_default&#xff0c;在解復用的 av…

在Java項目中實現本地語音識別與熱點檢測,并集成阿里云智能語音服務

引言 隨著語音交互技術的發展&#xff0c;如何高效地處理用戶的語音輸入成為許多應用的重要課題。本文將詳細介紹如何在一個Java項目中同時實現&#xff1a; 基于Vosk的本地語音識別&#xff1a;無需調用云端API即可完成語音到文本的轉換。本地熱點語音內容識別&#xff1a;對…

第15章 對API的身份驗證和授權

第15章 對API的身份驗證和授權 在構建RESTful API時,確保只有經過身份驗證和授權的用戶才能訪問特定資源是至關重要的。身份驗證是確認用戶身份的過程,而授權則是決定用戶是否有權訪問特定資源的過程。在本章中,我們將詳細探討如何在ASP.NET Core Web API中實現身份驗證和授…

asp.net客戶管理系統批量客戶信息上傳系統客戶跟單系統crm

# crm-150708 客戶管理系統批量客戶信息上傳系統客戶跟單系統 # 開發背景 本軟件是給鄭州某企業管理咨詢公司開發的客戶管理系統軟件 # 功能 1、導入客戶數據到系統 2、批量將不同的客戶分配給不同的業務員跟進 3、可以對客戶數據根據緊急程度標記不同的顏色&#xff0c…

深入理解現代JavaScript:從ES6+語法到Fetch API

引言 JavaScript作為Web開發的基石語言&#xff0c;近年來經歷了翻天覆地的變化。ES6(ECMAScript 2015)的發布帶來了革命性的新特性&#xff0c;而現代瀏覽器提供的API也讓前端開發變得更加強大和高效。本文將深入探討ES6核心語法、DOM操作優化技巧以及使用Fetch API進行異步請…

仙盟創夢IDE-智能編程,C#判斷數組中是否存在key

一、net4 net core版本 使用LINQ的Contains方法 string[] array { "apple", "banana", "cherry" };string key "banana";bool exists array.Contains(key);if (exists){Console.WriteLine($"數組中存在鍵 {key}");}else…

360驅動大師v2.0(含網卡版)驅動工具軟件下載及安裝教程

1.軟件名稱&#xff1a;360驅動大師 2.軟件版本&#xff1a;2.0 3.軟件大小&#xff1a;218 MB 4.安裝環境&#xff1a;win7/win10/win11 5.下載地址&#xff1a; https://www.kdocs.cn/l/cdZMwizD2ZL1?RL1MvMTM%3D 提示&#xff1a;先轉存后下載&#xff0c;防止資源丟失&…