From ddbf2505ecb9eeb434007a0e3fdf494a6ae71b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=98=BE=E4=B9=89?= <3515252188@qq.com> Date: Mon, 21 Oct 2024 12:37:30 +0800 Subject: [PATCH 1/2] test --- .../20241021 \346\200\273\347\273\223.md" | 1 + 1 file changed, 1 insertion(+) create mode 100644 "\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223.md" diff --git "a/\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223.md" "b/\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223.md" new file mode 100644 index 0000000..92fa377 --- /dev/null +++ "b/\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223.md" @@ -0,0 +1 @@ +![数据库高级应用](https://gitee.com/njy2/picture-bed/raw/master/imgs/202410211236180.png) \ No newline at end of file -- Gitee From 9a80551f66adb48c86d46b9d8329625c8f1bcf9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=98=BE=E4=B9=89?= <3515252188@qq.com> Date: Mon, 21 Oct 2024 20:05:54 +0800 Subject: [PATCH 2/2] test --- .../20241021 \346\200\273\347\273\223.md" | 1 - ...10\351\242\230\346\274\224\347\244\272.md" | 123 ++++++++++++++++++ 2 files changed, 123 insertions(+), 1 deletion(-) delete mode 100644 "\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223.md" create mode 100644 "\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223\345\217\212\347\273\274\345\220\210\351\242\230\346\274\224\347\244\272.md" diff --git "a/\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223.md" "b/\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223.md" deleted file mode 100644 index 92fa377..0000000 --- "a/\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223.md" +++ /dev/null @@ -1 +0,0 @@ -![数据库高级应用](https://gitee.com/njy2/picture-bed/raw/master/imgs/202410211236180.png) \ No newline at end of file diff --git "a/\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223\345\217\212\347\273\274\345\220\210\351\242\230\346\274\224\347\244\272.md" "b/\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223\345\217\212\347\273\274\345\220\210\351\242\230\346\274\224\347\244\272.md" new file mode 100644 index 0000000..1ba43f8 --- /dev/null +++ "b/\347\216\213\346\230\276\344\271\211/20241021 \346\200\273\347\273\223\345\217\212\347\273\274\345\220\210\351\242\230\346\274\224\347\244\272.md" @@ -0,0 +1,123 @@ +![数据库高级应用](https://gitee.com/njy2/picture-bed/raw/master/imgs/202410211236180.png) + +二、综合题(第1大题40分,第2大题30分,共70分) + + +1. 利用另外一个文件`initDb.sql`,完成以下题目: + + 1.1. (10分) 对学生姓名创建普通索引(`idx_StudentName`) + + ```sql + CREATE INDEX idx_StudentName ON student(StudentName); + ``` + + + + 1.2. (10分) 创建视图`V_StudentHobbyInfo`,其中包含姓名(`StudentName`),爱好(`Hobby`),特长(`Specility`)列,并分别取别名为`vw_StudentName`,`vw_Hoppy`,`vw_Speclitiy` + + ```sql + CREATE VIEW V_StudentHobbyInfo AS + SELECT s.StudentName vw_StudentName, + si.Hobby vw_Hoppy, + si.Speciality vw_Speclitiy + FROM student s + JOIN studentextinfo si ON s.StudentCode=si.StudentCode; + ``` + + + + 1.4. (5分) 查询学生`马又云`的生源地,要求显示:姓名(`StudentNameame`),生源地(`OriginPosition`) + + ```sql + SELECT st.StudentName 姓名, + stu.OriginPosition 生源地 + FROM student st,studentextinfo stu + WHERE st.StudentCode = stu.StudentCode AND st.StudentName = '马又云'; + + ``` + + + + 1.5. (5分) 查询学生表(`StudentInfo`)中还未还书的读者的学号(`StudentCode`)和姓名(`StudentName`),以及借书时间(`BorrowTime`) + + ```sql + select s.StudentCode 学号,StudentName 姓名,BorrowTime 借书时间 FROM student s + join borrowrecord b on s.StudentCode=b.StudentCode + WHERE b.ReturnTime is null; + ``` + + + + 1.6. (5分) 查询借阅过书籍《射雕英雄传》的学生,要求显示:学生姓名(`StudentName`),学院(`School`),图书名(`BookName`),借阅时间(`BorrowTime`) + + ```sql + SELECT StudentName 学生姓名,School 学院,BookName 图书名,BorrowTime 借阅时间 FROM student s + JOIN borrowrecord b on s.StudentCode=b.StudentCode + JOIN bookextinfo bo on bo.Barcode = b.Barcode + JOIN bookinfo i on i.ISBN=bo.ISBN + WHERE i.BookName='射雕英雄传'; + ``` + + + + +2. (30分)某医院病房计算机管理中心需要如下信息: + + ``` + 科室(Department):科编号、科名、科地址、科电话、医生姓名 + 病房(ward):病房号、床位号、所属科室名 + 医生(Doctor):姓名、职称、所属科室名、年龄、工作证号 + 病人(Patient):病历号、姓名、性别、诊断、主治医生、病房号 + ``` + + 2.1. (10分)其中,一个科室有多个病房、多个医生;一个病房只能属于一个科室,一名医生只属于一个科室,但可负责多名病人的诊治,一个病人的主主治生只有一个。科编号是标识列,从1开始自增长,步进值为1,医生职称有:实习,初级,中级,高级。 + 请设计该表关系模式结构(数据库物理模型),要求: + + ![image-20241021184002444](https://gitee.com/njy2/picture-bed/raw/master/imgs/202410211840504.png) + + + + ![image-20241021184234255](https://gitee.com/njy2/picture-bed/raw/master/imgs/202410211842311.png) + + ![image-20241021184131624](https://gitee.com/njy2/picture-bed/raw/master/imgs/202410212004167.png) + + a. 中文名和英文名称清晰(可借助有道翻译工具,不允许开网页) + b. 表关系准确,包括主键,外键,标识列 + c. 将完成的设计截图,并且保存物理模型文件,命名为恰当的名称 + d. 将截图和物理模型文件放在自己的文件夹中 + + + +```sql +-- 2.2. (10分)创建存储过程实现:传入病历号,查询其对应的主治医生及其所在的病房号、床位号。 +DROP PROCEDURE pro_1; +create procedure pro_1(in p_id int) +BEGIN + +select p_name 姓名,do_name 主治医生,w.w_id 病房号,w_bed 床位号 FROM patient p join ward w on p.w_id=w.w_id WHERE p.p_id=p_id; + +END; + +call pro_1(1); + +-- +-- 2.3. (10分)创建触发器实现:当医生离职时,检查其是否还有未完成医治的病人,如果还存在病人则不予离职,否则可以离职。 + +create TRIGGER leave_doctor before delete on doctor +for each row +BEGIN + +declare patient_doc int ; + +select count(p_id) into patient_doc FROM patient where do_name =old.do_name; + +if patient_doc>0 THEN + signal SQLSTATE '10026' + set message_text='你还有未完成医治的病人,不能离职。'; +end if; + + +END; + +``` + -- Gitee