數據庫原理及應用mysql版陳業斌實驗四

🏝?專欄:Mysql_貓咪-9527的博客-CSDN博客
🌅主頁:貓咪-9527-CSDN博客?

“欲窮千里目,更上一層樓。會當凌絕頂,一覽眾山小。”

目錄

實驗四索引與視圖?

1.實驗數據如下

student 表(學生表)

course 表(課程表)

teacher 表(教師表)

score 表(成績表)

2. 插入數據

student 表中的數據

course 表中的數據

teacher 表中的數據

score 表中的數據

4-1 創建唯一索引 idx_snme 并按姓名升序排列

1.修改黎明為張偉(4.2刪除索引后記得改回來)

2.不建立唯一索引,建立普通索引

3.刪除一條姓名為黎明的數據(4.2記得添加回來)

4-2 刪除索引 idx_snme

1.接4-1方法1?

?2.接4-1方法2

3.接4-2方法三?

4-3 創建聯合索引 idx_sname_dept 在 sname 和 dept 字段上

4-4 在 course 表的 cname 字段上創建唯一索引 uk_cname

4-5 在 course 表的 cname 字段上創建前綴長度為4個字符的前綴索引pf_cname

4-6 在 course 表的 cname 字段上創建全文索引

4-7 創建計算機系學生的視圖 student_cs

4-8 創建包含“學號”和“平均成績”的視圖 v_grade_avg

4-9 查詢視圖 v_grade_avg 中,平均成績大于 90 分的學生信息

4-10 創建信息系學生的視圖 v_information,并保證修改和插入操作時只有信息系的學生

4-11 修改視圖 vinformation,使得修改和插入操作時只包含“學號”“姓名”“專業”字段

4-12 使用 INSERT 語句向視圖 vinformation 中插入一條數據

實驗四索引與視圖?

實驗目的:

通過實驗進一步理解索引、視圖的使用方法。

1.實驗數據如下

student 表(學生表)
CREATE TABLE student (sno CHAR(5) PRIMARY KEY,snme VARCHAR(20) NOT NULL,        sdept VARCHAR(20) NOT NULL,       sclass CHAR(2) NOT NULL,          ssex CHAR(1),                     birthday DATE,                  totalcredit DECIMAL(4,1)          
);
course 表(課程表)
CREATE TABLE course (cno CHAR(3) PRIMARY KEY,cname VARCHAR(50),       ctime DECIMAL(3,0),          credit DECIMAL(3,1) 
);
teacher 表(教師表)
CREATE TABLE teacher (tno CHAR(6) PRIMARY KEY,          tname VARCHAR(20),               tsex CHAR(1),                    tdept VARCHAR(20)                 
);
score 表(成績表)
CREATE TABLE score (sno CHAR(5),                      cno CHAR(3),                      tno CHAR(6),                     grade DECIMAL(5,1),              PRIMARY KEY (sno, cno, tno),      CONSTRAINT fk_sno FOREIGN KEY(sno) REFERENCES student(sno),CONSTRAINT fk_cno FOREIGN KEY(cno) REFERENCES course(cno),CONSTRAINT fk_tno FOREIGN KEY(tno) REFERENCES teacher(tno)
);

2. 插入數據

student 表中的數據
INSERT INTO student VALUES('96001', '馬小燕', '計算機', '01', '女', '2000/01/02', 0);
INSERT INTO student VALUES('96002', '黎明', '計算機', '01', '男', '2000/03/05', 0);
INSERT INTO student VALUES('96003', '劉東明', '數學', '01', '男', '2000/10/05', 0);
INSERT INTO student VALUES('96004', '趙志勇', '信息', '02', '男', '2000/08/08', 0);
INSERT INTO student VALUES('97001', '馬蓉', '數學', '02', '女', '2001/03/04', 0);
INSERT INTO student VALUES('97002', '李成功', '計算機', '01', '男', '2001/09/10', 0);
INSERT INTO student VALUES('97003', '黎明', '信息', '03', '女', '2002/02/08', 0);
INSERT INTO student VALUES('97004', '李麗', '計算機', '02', '女', '2002/01/05', 0);
INSERT INTO student VALUES('96005', '司馬志明', '計算機', '02', '男', '2001/11/23', 0);
course 表中的數據
INSERT INTO course VALUES('001', '數學分析', 64, 4);
INSERT INTO course VALUES('002', '普通物理', 64, 4);
INSERT INTO course VALUES('003', '微機原理', 56, 3.5);
INSERT INTO course VALUES('004', '數據結構', 64, 4);
INSERT INTO course VALUES('005', '操作系統', 56, 3.5);
INSERT INTO course VALUES('006', '數據庫原理', 56, 3.5);
INSERT INTO course VALUES('007', '編譯原理', 48, 3);
INSERT INTO course VALUES('008', '程序設計', 32, 2);
teacher 表中的數據
INSERT INTO teacher VALUES('052501', '王成剛', '男', '計算機');
INSERT INTO teacher VALUES('052502', '李正科', '男', '計算機');
INSERT INTO teacher VALUES('052503', '嚴敏', '女', '數學');
INSERT INTO teacher VALUES('052504', '趙高', '男', '數學');
INSERT INTO teacher VALUES('052505', '劉玉蘭', '女', '計算機');
INSERT INTO teacher VALUES('052506', '王成剛', '男', '信息');
INSERT INTO teacher VALUES('052507', '馬悅', '女', '計算機');
score 表中的數據
INSERT INTO score VALUES('96001', '001', '052503', 77.5);
INSERT INTO score VALUES('96001', '003', '052501', 89);
INSERT INTO score VALUES('96001', '004', '052502', 86);
INSERT INTO score VALUES('96001', '005', '052505', 82);
INSERT INTO score VALUES('96002', '001', '052504', 88);
INSERT INTO score VALUES('96002', '003', '052502', 92.5);
INSERT INTO score VALUES('96002', '006', '052507', 90);
INSERT INTO score VALUES('96005', '004', '052502', 92);
INSERT INTO score VALUES('96005', '005', '052505', 90);
INSERT INTO score VALUES('96005', '006', '052505', 89);
INSERT INTO score VALUES('96005', '007', '052507', 78);
INSERT INTO score VALUES('96003', '001', '052504', 69);
INSERT INTO score VALUES('97001', '001', '052504', 96);
INSERT INTO score VALUES('97001', '008', '052505', 95);
INSERT INTO score VALUES('96004', '001', '052503', 87);
INSERT INTO score VALUES('96003', '003', '052501', 91);
INSERT INTO score VALUES('97002', '003', '052502', 91);
INSERT INTO score VALUES('97002', '004', '052505', NULL);
INSERT INTO score VALUES('97002', '006', '052507', 92);
INSERT INTO score VALUES('97004', '005', '052502', 90);
INSERT INTO score VALUES('97004', '006', '052501', 85);

?注:把上面的實驗數據添加上再開始實驗。

4-1 創建唯一索引 idx_snme 并按姓名升序排列

數據有沖突,建議一下三種方法:(三種方法任選一種)?

1.修改黎明為張偉(4.2刪除索引后記得改回來)
update student set snme='張偉'  where snme='黎明' and sdept='信息';
create unique index idx_snme on student(snme);

?

2.不建立唯一索引,建立普通索引
create index idx_snme on student(snme);

3.刪除一條姓名為黎明的數據(4.2記得添加回來)
delete from student where snme='黎明' and sdept='信息';
create unique index idx_snme on student(snme);

4-2 刪除索引 idx_snme

1.接4-1方法1?
drop index idx_snme on student;
update student set snme='黎明'  where snme='張偉' and sdept='信息';

?2.接4-1方法2
drop index idx_snme on student;

3.接4-2方法三?
drop index idx_snme on student;
INSERT INTO student VALUES('97003', '黎明', '信息', '03', '女', '2002/02/08', 0);

4-3 創建聯合索引 idx_sname_deptsnamedept 字段上

create index idx_snme_dept on student(snme,sdept);

4-4 在 course 表的 cname 字段上創建唯一索引 uk_cname

create unique index uk_cname on course(cname);

4-5 在 course 表的 cname 字段上創建前綴長度為4個字符的前綴索引pf_cname

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

4-6 在 course 表的 cname 字段上創建全文索引

create fulltext index ft_cname on course(cname);

4-7 創建計算機系學生的視圖 student_cs

create view student_cs as select *from student where sdept='計算機';

4-8 創建包含“學號”和“平均成績”的視圖 v_grade_avg

create view v_garde_avg as select sno 學號,avg(grade)平均成績 from score group by sno;

4-9 查詢視圖 v_grade_avg 中,平均成績大于 90 分的學生信息

 select *from v_garde_avg where 平均成績>90;

4-10 創建信息系學生的視圖 v_information,并保證修改和插入操作時只有信息系的學生

create view v_information as select *from student where sdept='信息' 
with check option;

4-11 修改視圖 vinformation,使得修改和插入操作時只包含“學號”“姓名”“專業”字段

當視圖被創建后限制信息無法修改,只能刪除視圖后重新創建?

方法一:?

drop view v_information;
create view v_information as 
select sno 學號,snme 姓名, sdept 專業 from student where sdept='信息' 
with check option;

方法二:

create or replace view v_information as select sno,sname,sdept 
from student where sdept='信息' with check option;

4-12 使用 INSERT 語句向視圖 vinformation 中插入一條數據

insert into student(sno,snme,sdept,sclass) values('98001','王立紅','信息',02);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78021.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78021.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78021.shtml

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

相關文章

[密碼學實戰]密評考試訓練系統v1.0程序及密評參考題庫(獲取路徑在文末)

[密碼學實戰]密評考試訓練系統v1.0程序及密評參考題庫 引言:密評考試的重要性與挑戰 商用密碼應用安全性評估(簡稱"密評") 作為我國密碼領域的重要認證體系,已成為信息安全從業者的必備技能。根據國家密碼管理局最新數據,截至2024年6月,全國僅有3000余人持有…

藍橋杯練習題2

動態規劃 動態規劃三大題型:計數問題、最值問題、存在性問題; 【最小權值】-- 最值問題 【題目分析】 import java.util.Arrays; Arrays類中的一個方法:Arrays.fill(int[] m,int n) //給 int 類型(或者char類型/Long類型...)的數組全部空間…

【集群IP管理分配技術_DHCP】二、DHCP核心功能與技術實現

一、智能 IP 地址分配功能與技術實現? 1.1 功能概述? 智能 IP 地址分配是 DHCP 中間件的核心功能之一,它打破了傳統 DHCP 固定的分配模式,能夠根據網絡的實時狀態、客戶端類型、接入位置等多種因素,動態且合理地分配 IP 地址。例如&#…

實現AWS Lambda函數安全地請求企業內部API返回數據

需要編寫一個Lambda函數在AWS云上運行,它需要訪問企業內部的API獲取JSON格式的數據,企業有網關和防火墻,API有公司的okta身份認證,通過公司的域賬號來授權訪問,現在需要創建一個專用的域賬號,讓Lambda函數訪問Secret Manager,來獲取賬號密碼,然后通過配置訪問公司內部A…

子網劃分的學習

定長子網劃分(Fixed-length Subnetting) 也叫做固定長度子網劃分,是指在一個IP網絡中,把網絡劃分成若干個大小相等的子網,每個子網的子網掩碼長度是一樣的。 一、定長子網劃分的背景 在早期的IP地址分配中&#xff0…

3.QT-信號和槽|自定義槽函數|自定義信號}自定義的語法}帶參數的信號和槽(C++)

信號和槽 Linux信號 Signal 系統內部的通知機制. 進程間通信的方式. 信號源:誰發的信號.信號的類型:哪種類別的信號信號的處理方式:注冊信號處理函數,在信號被觸發的時候自動調用執行. Qt中的信號和Linux中的信號,雖…

如何在 Element UI 中優雅地使用 `this.$loading` 顯示和隱藏加載動畫

如何在 Element UI 中優雅地使用 this.$loading 顯示和隱藏加載動畫 在現代 Web 應用開發中,用戶體驗至關重要。當執行耗時操作(如網絡請求或數據處理)時,顯示一個友好的加載動畫可以讓用戶知道系統正在工作,而不是卡…

動態加載內容時selenium如何操作?

當處理動態加載的內容時,Selenium 是一個非常強大的工具,因為它可以模擬真實用戶的瀏覽器行為,等待頁面元素加載完成后再進行操作。以下是使用 Selenium 獲取動態加載內容的詳細步驟和代碼示例。 一、安裝 Selenium 和 ChromeDriver &#…

力扣第446場周賽

有事沒趕上, 賽后模擬了一下, 分享一下我的解題思路和做題感受 1.執行指令后的得分 題目鏈接如下:力扣 給你兩個數組:instructions 和 values,數組的長度均為 n。 你需要根據以下規則模擬一個過程: 從下標 i 0 的第一個指令開…

三維點擬合平面ransac c++

理論 平面的一般定義 在三維空間中,一個平面可以由兩個要素唯一確定: 法向量 n(a,b,c):垂直于平面的方向 平面上一點 平面上任意一點 p(x,y,z) 滿足: ( p ? p 0 ) ? n 0 (p - p0) * n 0 (p?p0)?n0 即 a ( x ? x 0 ) …

基于LSTM-AutoEncoder的心電信號時間序列數據異常檢測(PyTorch版)

心電信號(ECG)的異常檢測對心血管疾病早期預警至關重要,但傳統方法面臨時序依賴建模不足與噪聲敏感等問題。本文使用一種基于LSTM-AutoEncoder的深度時序異常檢測框架,通過編碼器-解碼器結構捕捉心電信號的長期時空依賴特征&#…

Docker 部署 PostgreSQL 數據庫

Docker 部署 PostgreSQL 數據庫 基于 Docker 部署 PostgreSQL 數據庫一、拉取 PostgreSQL 鏡像二、運行 PostgreSQL 容器三、運行命令參數詳解四、查看容器運行狀態 基于 Docker 部署 PostgreSQL 數據庫 一、拉取 PostgreSQL 鏡像 首先,確保你的 Docker 環境已正確…

MySQL性能調優(四):MySQL的執行原理(MYSQL的查詢成本)

文章目錄 MySQL性能調優數據庫設計優化查詢優化配置參數調整硬件優化 1.MySQL的執行原理-21.1.MySQL的查詢成本1.1.1.什么是成本1.1.2.單表查詢的成本1.1.2.1.基于成本的優化步驟實戰1. 根據搜索條件,找出所有可能使用的索引2. 計算全表掃描的代價3. 計算使用不同索…

用 Go 優雅地清理 HTML 并抵御 XSS——Bluemonday

1、背景與動機 只要你的服務接收并回顯用戶生成內容(UGC)——論壇帖子、評論、富文本郵件正文、Markdown 等——就必須考慮 XSS(Cross?Site Scripting)攻擊風險。瀏覽器在解析 HTML 時會執行腳本;如果不做清理&#…

Redis SCAN 命令的詳細介紹

Redis SCAN 命令的詳細介紹 以下是 Redis SCAN? 命令的詳細介紹,結合其核心特性、使用場景及底層原理進行綜合說明: 工作原理圖 : ? 一、核心特性 非阻塞式迭代 通過游標(Cursor) 分批次遍歷鍵,避免一次…

SpringBoot3集成MyBatis-Plus(解決Boot2升級Boot3)

總結:目前升級僅發現依賴有變更,其他目前未發現,如有發現,后續會繼續更新 由于項目架構提升,以前開發的很多公共的組件,以及配置都需要升級,因此記錄需要更改的配置(記錄時間&#…

基于mybatis與PageHelper插件實現條件分頁查詢(3.19)

實現商品分頁例子 需要先引入mybatis與pagehelper插件&#xff0c;在pom.xml里 <!-- Mybatis --> <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3&l…

Spring Bean 全方位指南:從作用域、生命周期到自動配置詳解

目錄 1. Bean 的作用域 1.1 singleton 1.2 prototype 1.3 request 1.4 session 1.5 application 1.5.1 servletContext 和 applicationContext 區別 2. Bean 的生命周期 2.1 詳解初始化 2.1.1 Aware 接口回調 2.1.2 執行初始化方法 2.2 代碼示例 2.3 源碼 [面試題…

C++ (非類型參數)

模板除了定義類型參數之外&#xff0c;也可以在模板內定義非類型參數 非類型參數不是類型&#xff0c;而是值&#xff0c;比如&#xff1a;指針&#xff0c;整數&#xff0c;引用 非類型參數的用法&#xff1a; 1.整數常量&#xff1a;非類型參數最常見的形式是整數常量&…

短視頻+直播商城系統源碼全解析:音視頻流、商品組件邏輯剖析

時下&#xff0c;無論是依托私域流量運營的品牌方&#xff0c;還是追求用戶粘性與轉化率的內容創作者&#xff0c;搭建一套完整的短視頻直播商城系統源碼&#xff0c;已成為提升用戶體驗、增加商業變現能力的關鍵。本文將圍繞三大核心模塊——音視頻流技術架構、商品組件設計、…