diff --git "a/\344\275\231\346\266\233/20241021 \347\273\203\344\271\240.md" "b/\344\275\231\346\266\233/20241021 \347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..f8fe0e6c2a2493502af1b768ffe63ab749e2e4b1 --- /dev/null +++ "b/\344\275\231\346\266\233/20241021 \347\273\203\344\271\240.md" @@ -0,0 +1,67 @@ +# 二、综合题(第1大题40分,第2大题30分,共70分) + +## 1. 利用另外一个文件`initDb.sql`,完成以下题目: + +#### 1.1. (10分) 对学生姓名创建普通索引(`idx_StudentName`) +```sql +create index idx_StudentName on student (StudentName); +drop index idx_StudentName on student; +``` + + +#### 1.2. (10分) 创建视图`V_StudentHobbyInfo`,其中包含姓名(`StudentName`),爱好(`Hobby`),特长(`Specility`)列,并分别取别名为`vw_StudentName`,`vw_Hoppy`,`vw_Speclitiy +```sql +create view V_StudentHobbyInfo as +select StudentName vw_StudentName, Hobby vw_Hoppy, Speciality vw_Speclitiy +from student s1 + join studentextinfo s2 on s1.StudentCode = s2.StudentCode; +``` + + +#### 1.4. (5分) 查询学生`马又云`的生源地,要求显示:姓名(`StudentNameame`),生源地(`OriginPosition`) +```sql +select StudentName 姓名, OriginPosition 生源地 +from student s1 + join studentextinfo s2 on s1.StudentCode = s2.StudentCode +where 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 ReturnTime is null; +``` + + +#### 1.6. (5分) 查询借阅过书籍《射雕英雄传》的学生,要求显示:学生姓名(`StudentName`),学院(`School`),图书名(`BookName`),借阅时间(`BorrowTime`) +```sql +select s.StudentName 学生姓名, School 学院, BookName 图书名, BorrowTime 借阅时间 +from student s + join borrowrecord br on s.StudentCode = br.StudentCode + join bookextinfo be on be.Barcode = br.Barcode + join bookinfo bi on bi.ISBN = be.ISBN +where BookName = '射雕英雄传'; +``` + + + +## 2. (30分)某医院病房计算机管理中心需要如下信息: + +科室:科编号、科名、科地址、科电话、医生姓名 +病房:病房号、床位号、所属科室名 +医生:姓名、职称、所属科室名、年龄、工作证号 +病人:病历号、姓名、性别、诊断、主治医生、病房号 + + +#### 2.1. (10分)其中,一个科室有多个病房、多个医生;一个病房只能属于一个科室,一名医生只属于一个科室,但可负责多名病人的诊治,一个病人的主主治生只有一个。科编号是标识列,从1开始自增长,步进值为1,医生职称有:实习,初级,中级,高级。 请设计该表关系模式结构(数据库物理模型),要求: + + a. 中文名和英文名称清晰(可借助有道翻译工具,不允许开网页) + b. 表关系准确,包括主键,外键,标识列 + c. 将完成的设计截图,并且保存物理模型文件,命名为恰当的名称 + d. 将截图和物理模型文件放在自己的文件夹中 + +#### 2.2. (10分)创建存储过程实现:传入病历号,查询其对应的主治医生及其所在的病房号、床位号。 +#### 2.3. (10分)创建触发器实现:当医生离职时,检查其是否还有未完成医治的病人,如果还存在病人则不予离职,否则可以离职。 \ No newline at end of file