【mysql】期末數據庫復習指南(《數據庫系統概率》知識點總結,數據庫系統原理,數據庫設計課程復習)

      網友投稿 875 2025-04-01

      【mysql】期末數據庫復習指南(《數據庫系統概率》知識點總結,數據庫系統原理,數據庫設計課程復習)

      數據庫試卷題型: 選擇題 20*2 =40 填空題 10*1 =10 簡答題 3*4 =12 SQL 30分+ 插入 2 建視圖 2 單表查詢條件 2 平均成績avg 2 多表查詢 4 觸發器 存儲函數 存儲過程 設計題 20分+ 1. 畫ER圖 2. 寫關系模式 3. 分析范式 4. 分解范式

      一、概念題

      數據庫系統

      數據庫具有永久存儲,有組織,可共享的特點。 (泳游課)

      DBMS提供數據安全型保護,完整性保護,恢復策略,并發控制等功能。

      數據庫設計過程:需求分析,(概念,邏輯,物理)結構設計,數據庫實施,數據庫運行和維護。

      SQL語言是集 數據定義,數據查詢,數據操作,數據控制 于一體的。。

      ER圖的主要元素是 實體,聯系, 關鍵詞。

      完整性控制包括:實體完整性,參照完整性,用戶定義完整性。

      違反三個完整性的時候怎么辦:違反實體和用戶自定義,一般拒絕執行。違反參照,一般根據語義附加操作,確保數據正確性。

      關系規范化1NF問題:插入異常(無法插入),修改異常,刪除異常(刪了不改刪的)

      三級模式,兩級映射,兩個獨立性。

      關系的完整性原則是什么?:即主屬性不可以取空值。若屬性F是關系R的外碼,當F不是主屬性時可以取空值。

      碼是能唯一標識元組的屬性集。候選碼是能唯一標識,又不含多余屬性的。主碼是候選碼中的一個。

      主屬性是主碼中的每個屬性。F是R的屬性,不是R的主碼,是S的主碼,所以是R的外碼。

      視圖的特點:與select語句一一對應,是虛表。

      視圖的優點:簡化用戶操作,使用戶多個角度看問題,對重構數據庫提供幫助。

      索引的概念:關于物理結構設計的,聚簇索引可以影響記錄表順序,其他不行。

      并發控制:

      使用封鎖技術,保證可串行化。

      封鎖類型:排它鎖(X鎖),共享鎖(Share)鎖。

      避免三種數據不一致:丟失修改,不可重復讀,讀臟數據。

      死鎖是什么?兩個事務各自鎖定了數據,需要對方的數據,使用順序封鎖法避免。

      存儲過程與事務的區別: 事務是保存在項目里的,存儲過程是保存在數據庫里的。事務中編程語言(java,C++等),存儲過程中只有SQL語言。

      事務的特性:原子性,一致性,隔離性,持久性 (重點),,(愿一個吃)

      實現事務持久性的子系統:恢復管理。

      故障與恢復

      故障的分類:事務內部故障,系統故障,介質故障**(重點)**

      恢復技術的實現:數據轉儲和日志等級文件。

      登記日志文件的原則:先寫日志后寫數據庫,按照執行順序登記。

      日志是記錄事務對數據庫更新操作的文件。

      日志文件的兩種格式單位:記錄和數據塊。(重要)

      關系代數

      自然連接,等值連接區別:都是重要的連接運算,自然連接是特殊的等值連接,要求連接屬性組中有相同的屬性,并在結果中去掉該重復屬性。

      規范化理論的指導意義:為判斷關系優劣提供標準,指導關系數據模型的優化,提供理論基礎。

      參考資料:

      高數幫4小時數據庫不掛科+微信公眾號尚學青年不掛科期末試卷和復習資料+學校復習試卷

      二、SQL題

      插入 2 (重要) insert into student(Sno, Sname, Ssex, Sdept, Sage) values('201215128','陳冬','男','CS',18); 刪除(與select語句格式相同) DELETE FROM sc WHERE Cno = 1; 增加列(alter對應改變,table對應from,改變類型) ALTER TABLE Student ADD Sbirthday datetime NULL; ALTER TABLE SC CHANGE Grade Grade INT; 更新 update sc SET Grade = 89 WHERE Cno = 3 AND Sno = 201215122; --------------------------------------------------------------------- 建視圖 2(與select語句一一對應) create VIEW Boy_Student AS select * From student WHERE ssex='男'; 創建表(與創建視圖一樣,把as_select換成()即可 ) CREATE TABLE sc( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno) ); 創建數據庫(與創建表一樣) CREATE DATABASE Student_DB; SHOW DATABASES; USE Student_DB; --------------------------------------------------------------------- 單表查詢條件 2 SELECT * FROM Student WHERE Class=95031 OR Ssex='女' 平均成績avg,子查詢 2 (DISTINCT 可以消除重復數據,可以select DISTINCT sno from score;) (AVG計算的時候去掉重復數據,所以加一個distinct) SELECT AVG(DISTINCT Degree) FROM Score WHERE Sno IN( SELECT Sno FROM Student WHERE Class=95031 ) 函數查詢 SELECT COUNT(DISTINCT Sno) //不能與*一起用,*可以單獨用 FROM Student WHERE Class=95031; 分組查詢 2 每組只選擇一個顯示, having判斷是否顯示該組(根據整租), where根據顯示結果判斷是否顯示 SELECT Sno FROM Score GROUP BY Sno HAVING MIN(Degree)>70 AND MAX(Degree)<90 多表查詢 4 因為可能有兩個name列,所以多表的時候,用表名.列名區分 SELECT Teacher.Tname, Course.Cno, Score.Degree FROM Teacher, Course, Score WHERE Teacher.Tno= Course.Tno AND Course.Cno= Score.Cno AND Teacher.Tname='張旭' 連接查詢 是多表查詢的一種,多表基于笛卡爾積,連接以一張表全部數據為根基 等值連接即內連接(INNER JOIN),等價于where寫法 自然連接(范圍更大)即外連接,分為LEFT OUTER JOIN 和RIGHT OUTER JOIN SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score FROM students s LEFT OUTER JOIN classes c ON s.class_id = c.id; 字符串查詢 "%":能匹配任意長度的字符,"_":只能匹配任意一個字符。 SELECT * FROM Student WHERE Sname LIKE '%王%'; 查詢空值 SELECT * FROM 表名 WHERE 字段名 IS NULL; SELECT * FROM 表名 WHERE 字段名 IS NOT NULL; --------------------------------------------------------------------- 觸發器 插入學生信息后,新建默認選課并給null成績 Create trigger t2 AFTER delete ON student FOR EACH ROW BEGIN UPDATE course SET Tno = NULL WHERE Tno = old.Tno; END 存儲函數 本質一樣,存儲函數的限制比較多,例如不能用臨時表,只能返回一個變量,而存儲過程的限制較少。 drop function if exists myfunc; create function myfunc(a int, b int) returns int begin declare str char(3); declare x int default 0; declare bir datetime default null; set x=a+b; return x; end select myfunc(2,3); 存儲過程 drop procedure if exists myproce; Create procedure myproce() begin declare i int default 1; while i <> 10 do select i; set i = i+1; end while; end call myproce; 游標(指向一個select查詢結果) declare mycursor CURSOR for SELECT `Sno`, `Sbirthday` FROM `Student` ORDER BY `Sno`; OPEN mycursor; //打開游標 FETCH mycursor INTO na, birth; //檢索游標(拿出一行,把該行的各個列值保存到各個變量中) CLOSE mycursor; 參考資料: 結合實驗1,2,3閱讀

      三、設計題

      1. 畫ER圖 2. 寫關系模式 3. 分析范式 4. 分解范式 E-R圖 畫E-R圖(實體,關系,屬性) 轉關系模式: 對于[A]-n--1-[B],可以將C放在A的屬性中,再把B的主碼放在A的屬性中。(1:1隨意放一端) 對于[A]-n--m-[B],兩邊的主碼+自己的屬性,再開一個關系模式。 具體例子來說、 對于實體[A] 有 n:1的關系,需要把另一端的主碼作為外碼放過來(還要標上關系的屬性)。否則就不用理會。 對于m:n的關系(連三個的關系也要),單獨開一個,自己的屬性加兩邊的主碼。 求AB閉包:從AB出發,使用關系遞推,直到推不出來更多(或者全部推出來)為止。 求最小依賴集:右部只有一個屬性。 然后對于所有關系除本求包,如果能推出右邊的就可以把這個關系刪掉,最后左邊最小化(看看有沒有能刪的) 范式:(重要) 1NF->2NF:消除非主屬性對碼的部分依賴。比如主碼(A,B)存在A->C關系。分解的時候把AC拆分成一個關系即可。 2NF->3NF:消除非主屬性對碼的傳遞依賴。比如A->B,B->D。分解的時候把BD拆成一個關系。 3NF->BCNF:每一個左邊的決定因素都是候選碼。如果有{AB,CB} {(A,B)->C, C->D},C是決定性不是候選碼,所以不是BCNF。( 定義回答的時候:不存在部分和傳遞依賴。) 幾個注意點: 1.第二三范式是針對非主屬性的,BCNF范式是針對主屬性的。 (一定要注意 判斷部分依賴的時候 看后面的是不是 主屬性元素) 2.對于傳遞函數依賴,左邊的一定是碼,碼->屬性,屬性->另一個屬性 舉個例子{AB->C, CE->D} 候選碼 ABE 主屬性 A B E 而AB->C, CE->D, 不是傳遞依賴,因為AB不是碼 (強調) 范式例題: 如何判斷候選碼:從這幾個屬性出發,能推出所有的屬性,那么就是候選碼。 寫出基本函數依賴? 每個商店,每個商品只在一個部門銷售 ----> (商店編號,商品編號)->部門編號 每個商店,每個部門只有一個負責人 ----> (商店編號,部門編號)->負責人 (商店編號,商品編號)->數量 判斷第幾范式? 根據依賴,發現沒有左邊單個的能唯一的決定右邊的,所以是2NF 然后(商店編號,商品編號)->部門編號->負責人,存在傳遞,所以不是3NF 如何分解? 先分解關系R2(商店編號,部門編號,負責人) 得出R1(商店編號,商品編號,數量,部門編號) 特殊樣例: 對于只有一個函數依賴的關系,沒有傳遞和部分,直接3NF,左邊直接是碼那就BCNF了。 F={Y->Z, XZ->Y}, 候選碼XY和XZ, 主屬性XYZ,沒有部分依賴,沒有傳遞依賴,所以3NF。Y是決定性但不是碼,所以不是BCNF。 占坑待填: 無損分解,保持依賴關系,樹查詢,有關鎖的題 這里ABD也是3NF范式,我來解釋一下: F={AB->C, AB->E, CDE->AB} 第一步:候選碼:ABD / CDE 主屬性:ABCDE 第二步:(其實這里與其他題不同,這個所有屬性都是主屬性,而第二第三范式是對非主屬性的要求,所以直接就可以判斷它是3NF范式以上)然后再看決定性因素,AB是決定性因素,但不包含碼,所以是3NF范式 (注意一點就是:第二三范式 是對非主屬性的 BCNF范式 是對主屬性的)所以這里的AB->C, AB->E 是主屬性對碼的部分依賴 參考資料: https://www.bilibili.com/video/BV1P5411e7rU

      Mysql 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:怎樣在表格里面方便快捷的輸入1(表格怎么設置快捷輸入)
      下一篇:怎么弄快閃視屏(快閃怎么加視頻)
      相關文章
      亚洲欧洲国产成人综合在线观看 | 亚洲真人无码永久在线| 亚洲免费网站观看视频| 亚洲一区精品视频在线| 亚洲精品人成电影网| 亚洲高清美女一区二区三区| 老汉色老汉首页a亚洲| 久久综合亚洲鲁鲁五月天| 亚洲黄色在线观看视频| 亚洲综合色丁香麻豆| 亚洲国产精品美女| 亚洲av乱码一区二区三区| 久久精品国产亚洲AV蜜臀色欲| youjizz亚洲| 亚洲欧洲免费无码| 色九月亚洲综合网| 亚洲精品第一国产综合精品99| 亚洲AV日韩精品一区二区三区| 亚洲AV无码乱码在线观看性色扶| 亚洲?v无码国产在丝袜线观看 | 亚洲成人福利在线观看| 亚洲AV无码一区二区三区在线| 亚洲videos| 亚洲精品9999久久久久无码| AV激情亚洲男人的天堂国语| 亚洲第一区在线观看| 国产亚洲?V无码?V男人的天堂| 亚洲女久久久噜噜噜熟女| 久久精品国产亚洲AV麻豆不卡| 亚洲欧洲第一a在线观看| 亚洲欧洲日本天天堂在线观看| 亚洲乱码一二三四区麻豆| 亚洲一区二区三区成人网站| 校园亚洲春色另类小说合集| MM131亚洲国产美女久久| 亚洲精品无码成人片久久| 亚洲色图国产精品| 亚洲av乱码一区二区三区香蕉| 亚洲国产精品无码久久| 亚洲色欲久久久久综合网| 亚洲αv在线精品糸列|