如何高效管理MySQL數據庫試題??
MySQL數據庫試題管理

創建數據庫和表結構
1. 學生表(student)
s_id VARCHAR(20) 學生編號(主鍵)s_name VARCHAR(20) 學生姓名s_birth VARCHAR(20) 出生日期s_sex VARCHAR(10) 性別2. 課程表(course)
c_id VARCHAR(20) 課程編號(主鍵)t_name VARCHAR(20) 授課教師3. 教師表(teacher)
t_name VARCHAR(20) 教師姓名(主鍵)t_title VARCHAR(20) 職稱4. 成績表(score)
s_id VARCHAR(20) 學生編號(外鍵)c_id VARCHAR(20) 課程編號(外鍵)score INT 成績經典練習題目解析
1. 查詢"01"課程比"02"課程成績高的學生信息及課程分數

SELECT s.s_name, sc1.score AS 'Score for Course 01', sc2.score AS 'Score for Course 02'FROM student sJOIN score sc1 ON s.s_id = sc1.s_id AND sc1.c_id = '01'JOIN score sc2 ON s.s_id = sc2.s_id AND sc2.c_id = '02'WHERE sc1.score > sc2.score;
2. 查詢"01"課程比"02"課程成績低的學生信息及課程分數
SELECT s.s_name, sc1.score A(本文來源:WWW.KENgnIAO.cOM)S 'Score for Course 01', sc2.score AS 'Score for Course 02'FROM student sJOIN score sc1 ON s.s_id = sc1.s_id AND sc1.c_id = '01'JOIN score sc2 ON s.s_id = sc2.s_id AND sc2.c_id = '02'WHERE sc1.score < sc2.score;
3. 查詢平均成績大于等于60分的同學的學生編號和學生姓名和平均成績
SELECT s.s_id, s.s_name, AVG(sc.score) AS 'Average Score'FROM student sJOIN score sc ON s.s_id = sc.s_idGROUP BY s.s_id, s.s_nameHAVING AVG(sc.score) >= 60;
4. 查詢平均成績小于60分的同學的學生編號和學生姓名和平均成績(包括有成績的和無成績的)
SELECT s.s_id, s.s_name, IFNULL(AVG(sc.score), 'No Score') AS 'Average Score'FROM student sLEFT JOIN score sc ON s.s_id = sc.s_idGROUP BY s.s_id, s.s_nameHAVING AVG(sc.score) < 60 OR AVG(sc.score) IS NULL;
5. 查詢所有同學的學生編號、學生姓名、選課總數、所有課程的總成績
SELECT s.s_id, s.s_name, COUNT(sc.c_id) AS 'Course Count', SUM(sc.score) AS 'Total Score'FROM student sLEFT JOIN score sc ON s.s_id = sc.s_idGROUP BY s.s_id, s.s_name;
6. 查詢"李"姓老師的數量

SELECT COUNT(*) AS 'Number of Li Teachers'FROM teacher tWHERE t.t_name LIKE '李%';
7. 詢學過"張三"老師授課的同學的信息
SELECT DISTINCT s.s_id, s.s_nameFROM student sJOIN score sc ON s.s_id = sc.s_idJOIN course c ON sc.c_id = c.c_idWHERE c.t_name = '張三';
8. 查詢沒學過"張三"老師授課的同學的信息
SELECT s.s_id, s.s_nameFROM student sLEFT JOIN score sc ON s.s_id = sc.s_idLEFT JOIN course c ON sc.c_id = c.c_id AND c.t_name = '張三'WHERE c.t_name IS NULL;
相關問題與解答
問題1: 如何確保事務的一致性和隔離性?
解答: 確保事務的一致性和隔離性,需要使用數據庫提供的事務管理機制,在MySQL中,可以使用START TRANSACTION命令來開始一個事務,然后執行一系列的操作,最后使用COMMIT命令提交事務,這樣可以保證事務內的所有操作要么全部成功,要么全部不執行,從而維護數據的一致性,通過設置不同的隔離級別(如READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE),可以控制事務之間的隔離性,防止臟讀、不可重復讀和幻讀等問題。
問題2: 在設計數據庫表結構時,如何保證數據的完整性?
解答: 保證數據的完整性主要通過數據庫的約束來實現。
主鍵約束(PRIMARY KEY):確保表中的記錄具有唯一標識。
外鍵約束(FOREIGN KEY):用于維護不同表之間的數據一致性,確保外鍵指向有效的記錄或支持級聯操作。
非空約束(NOT NULL):確保字段必須存儲有效值,不允許NULL值。
唯一約束(UNIQUE):確保某列的數據是唯一的,不允許重復值。
檢查約束(CHECK):對輸入到列中的值設置條件,確保數據的有效性。
