当前位置: 首页 > news >正文

数据库期末复习

 

数据库期末复习

分析题

1

(1)使用数据库系统可以大大提高应用开发的效率,方便用户的使用减轻数据库系统管理人员维护的负担,请回答数据库系统有哪些部分组成?什么是数据库管理系统,其主要功能包括哪些方而?(5分)

数据库系统一般由以下四个部分组成:

DB:数据库,长期存储在计算机内部,有组织,可以共享的大量数据的集合

DBMS:位于用户与操作系统之间的一层数据管理软件

DBA:数据库管理员是负责数据库的建立、使用和维护的人员。

硬件和软件:数据库系统还需要相应的硬件和软件支持。


数据库管理系统(DBMS):是一种软件工具或系统,用于管理和操作数据库。

  1. 数据定义语言(DDL):用于定义数据库结构、模式和数据类型。允许用户创建、修改和删除数据库对象,如视图、索引等。

  2. 数据操作语言(DML):用于执行数据操作,如插入、更新、删除和查询数据。用户可以使用查询语言(如SQL)编写和执行复杂的查询。

  3. 数据库安全和权限管理提供安全和权限管理机制,以控制对数据库的访问和操作。允许管理员分配用户角色、权限和访问级别。

  4. 数据完整性和约束::支持定义数据完整性规则和约束条件,以确保数据库中的数据符合预期的规范。

2

(2)从数据库管理系统角度看,数据库系统中有哪三层模式结构?采用三层模式结构有什么好处?(5分)

数据库系统中有哪三层模式结构?

  1. 外模式

  2. 模式(逻辑模式)

  3. 内模式

好处?

  1. 保证了数据的独立性

    • 概念模式和内模式分开,保证数据的物理独立性。

    • 把外模式和概念模式分开,保证数据逻辑的独立性。

  2. 有利于数据共享

    • 所有用户使用统一概念模式导出的不同外模式,减少数据冗余,有利于多种应用程序间共享数据。

  3. 有利于数据安全保密

    • 每个用户只能操作属于自己的外模式数据视图,不能对数据库其他部分进行修改,保证了数据安全性。

  4. 三层模式结构还有利于数据库的设计、开发和维护,提高了数据库的灵活性和可扩展性。

image-20240627104136007


4

(4)数据库的完整性是数据库管理系统的重要要求之一,根据您对数据库完整性的理解,请说明数据库的三类完整性是什么?并列出这三类完整性约束在SQL语句中关键词?(5分)

数据库的三类完整性:

  1. 实体完整性

    • 定义:确保表中每一行数据的唯一性,通常通过主键实现。

    • SQL关键词:PRIMARY KEY

  2. 域(用户定义)完整性

    • 定义:确保表中数据的准确性和有效性,包括数据类型、非空约束、默认值、取值范围等。

    • SQL关键词:NOT NULLDEFAULTCHECK

  3. 参照完整性

    • 定义:确保表间数据的一致性,通过外键约束实现。

    • SQL关键词:FOREIGN KEY

5

(5)DBA是从事管理和维护数据库管理系统的相关工作人员的统称,属于运维工程师的一个分支,请根据所学知识回答,DBA的主要职责是什么?(5分)

DBA的主要职责是什么

  1. 数据库备份与恢复: 制定并执行数据库备份计划,确保数据的安全性。在数据丢失或损坏时,能够迅速恢复数据,减少业务中断时间。

  2. 数据库设计,安装,配置 : 负责设计数据库架构,选择合适的数据库管理系统,并进行安装和配置,确保数据库系统能够稳定运行。

  3. 数据库安全管理 :负责数据库的安全管理工作,包括设置用户权限、审计数据库操作、防止安全威胁等,确保数据库系统的安全稳定运行。

  4. 数据库监控和维护 :定期监控数据库的运行状态,包括磁盘空间、内存使用、连接数等关键指标,及时发现并解决潜在问题。

  5. 数据迁移和升级 :随着业务的发展,负责数据库系统的迁移或升级工作,确保数据的完整性和业务的连续性。

设计题

(1)某商店管理涉及商店、商品和职工三个实体,它们分别具有下列属性:

商店:商店编号,店名,店址,店经理

**商品:商品编号,商品名,单价,产地

职工:职工编号,职工名,性别,工资

这些实体间的联系如下:百货公司管辖若干个连领商店,每家商店经营若干商品,每家商店有若干职工,但每个职工只能服务于一家商店。

职工参加某商店工作有开始时间:商店销售商品的有月销售量

1

(1). 请画出商店、商品和职工的ER图。(7分)

image-20240627110603410

image-20240627110838425

image-20240627110842862

image-20240627110854484

确定实体和属性

  • 商店(Store):商店编号(StoreID)、店名(StoreName)、店址(StoreAddress)、店经理(StoreManager)

  • 商品(Product):商品编号(ProductID)、商品名(ProductName)、单价(UnitPrice)、产地(Origin)

  • 职工(Employee):职工编号(EmployeeID)、职工名(EmployeeName)、性别(Gender)、工资(Salary)

确定实体之间的关系

  • 商店与商品之间是一对多关系:每个商店经营若干商品。

  • 商店与职工之间是一对多关系:每个商店有若干职工,但每个职工只能服务于一家商店。

  • 商店销售商品的月销售量。

  • 职工参加某商店工作的开始时间。

image-20240627112544288

image-20240627113442834

image-20240627113426149

2

(2)数据库设计是将数据库系统与现实世界进行密切的、有机的、协调一致的结合的过程。假设需要设计某个信息管理系统的数据库,按照结构化系统设计的方法,请播述数据库的设计过程?(10分)

数据库的设计过程?

1+3+1+1=6

1分析+3设计+1实施+1运行和维护

image-20240627113738547

应用题

image-20240627114046221

image-20240627114056216

image-20240627114109967

使用SQL语句完成以下操作

(1)创建Srudent表(需要包含相应的约束)。(3分)

image-20240627114046221

数据类型约束说明:

  1. Sno(学号)

    • 数据类型:字符(8)

    • 约束:主键

    • 含义:每个学生都有一个唯一的学号,长度为8个字符。

    • 作用:确保学号的唯一性,以便准确标识每个学生。

    • 默认值:无(主键通常没有默认值)

  2. Sname(姓名)

    • 数据类型:字符(12)

    • 约束:非空

    • 含义:学生的名字,长度为12个字符。

    • 作用:确保每个学生都有一个名字。

    • 默认值:无(姓名通常没有默认值)

  3. Ssex(性别)

    • 数据类型:字符(2)

    • 约束:取“男”或“女”

    • 含义:学生的性别,只能是“男”或“女”。

    • 作用:标识学生的性别。

    • 默认值:“男”

  4. Sage(年龄)

    • 数据类型:整型

    • 约束:取值范围15~36,默认值22

    • 含义:学生的年龄,必须是15到36之间的整数。

    • 作用:记录学生的年龄信息。

    • 默认值:22(当没有指定年龄时,默认年龄为22)

  5. Sdept(院系)

    • 数据类型:字符(20)

    • 约束:默认值“计算机系”

    • 含义:学生所属的院系,长度最多为20个字符。

    • 作用:标识学生所在的院系。

    • 默认值:“计算机系”(当没有指定院系时,默认院系为“计算机系”)

CREATE TABLE Student (  Sno CHAR(8) PRIMARY KEY,  Sname CHAR(12) NOT NULL,  Ssex CHAR(2) CHECK (Ssex IN ('男', '女')) DEFAULT '男',  Sage INT CHECK (Sage BETWEEN 15 AND 36) DEFAULT 22,  Sdept CHAR(20) DEFAULT '计算机系'  
);
---------------------------------------------------------------------------------
CREATE TABLE Course (  Cno CHAR(8) PRIMARY KEY,  Cname CHAR(8) NOT NULL,  Teacher CHAR(10) UNIQUE  
);
​
CREATE TABLE SC (  Sno CHAR(8),  Cno CHAR(8),  Grade SMALLINT CHECK (Grade BETWEEN 0 AND 100),  PRIMARY KEY (Sno, Cno),  FOREIGN KEY (Sno) REFERENCES Student(Sno) ON UPDATE CASCADE ON DELETE CASCADE,  FOREIGN KEY (Cno) REFERENCES Course(Cno) ON UPDATE CASCADE ON DELETE RESTRICT  
);

(2)检索课程名以"DB“开头,且倒数第3个字符为k的课程的详细情况。(3分)

INSERT INTO Course (Cno, Cname, Teacher)  
VALUES ('C001', 'DB高等kad', 'John Doe');
​
select * from Course where rtrim(Cname) like 'DB_%K__';

image-20240627120239325

(3)向学生选修课程表中插入元组“学生S10选修课程号C4”。(3分)

INSERT INTO SC (Sno, Cno)
VALUES ('S10', 'C4');

要确保

image-20240627121114079

student和course里有对应查找s10和C4的数据没有就插入

尝试在 SC 表中插入的学生编号 Sno 或课程编号 Cno 在相应的 StudentCourse 表中不存在。这违反了外键约束。确保在插入数据之前,这些外键在相关表中存在。

(4)删除选课成绩在55分以下的学生记录。(3分)

模拟对应的数据再查找

INSERT INTO Student (Sno, Sname, Ssex, Sage, Sdept)
VALUES ('S11', '小明', '男', 21, '计算机系');
​
INSERT INTO Course (Cno, Cname, Teacher)
VALUES ('C5', '高等数学A1', '马老师');
​
INSERT INTO SC (Sno, Cno,Grade)
VALUES ('S11', 'C5',100);
​
​
select * from sc where Grade > 50;
select * from sc where Grade < 50;
select * from sc where Grade  50;
​

(6)求出女同学的每一年龄组(超过3人)有多少人?要求查询结果按人数降序排列,人数相同的按年龄升序排列。(3分)

SELECT Sage, COUNT(*) AS NumOfStudents
FROM Student
WHERE Ssex = '女'
GROUP BY Sage
HAVING COUNT(*) > 3
ORDER BY NumOfStudents DESC, Sage ASC;
​

(7)统计每门课程的选课人数和考试最高分。(3分)

SELECT Cno, COUNT(*) AS NumOfStudents, MAX(Grade) AS HighestGrade
FROM SC
GROUP BY Cno;
​

image-20240627132553129

(8)定义视图Sagc,其中包括学生学号以及每个学生选修课程的门数(要求成绩非空)和平均成绩。(3分)

image-20240627132848802

CREATE VIEW Sagc AS
SELECT Sno, COUNT(Cno) AS CourseCount, AVG(Grade) AS AvgGrade
FROM SC
WHERE Grade IS NOT NULL
GROUP BY Sno;
​

(9)在Course表中增加一个类型为char(10)的职称(pro)列。(3分)

ALTER TABLE Course
ADD pro CHAR(10);
​

(10)为用户user1授权Student表的查询和插入权限:收回用户userl对Student表的查询权限。(3分)

GRANT 权限 ON 对象类型 对象名 TO 同户名 [WITH GRANT OPTION]

image-20240627131705866

GRANT SELECT ON TABLE STUDENT TO user1[with grant option]

image-20240627131713469

SQL复习

mysql简单入土 | cout<<"金缕衣";

http://www.lryc.cn/news/410380.html

相关文章:

  • pyinstaller带浏览器一起打包playwright 独立运行exe
  • docker添加容器服务所需字体
  • Java面试八股之Spring AOP 和 AspectJ AOP 的区别
  • Java人力资源招聘社会校招类型招聘系统PC端
  • C# 知识点总结
  • 【ffmpeg命令入门】视频的旋转与翻转
  • 学懂C语言(二十五):深入理解 C语言结构体 位域 的概念
  • LLM推理优化——KV Cache篇(百倍提速)
  • Linux进程--system
  • [Office] Word 特殊字符
  • 联想电脑怎么重装系统_联想电脑U盘重装win10详细图文教程
  • 前端开发者必备:揭秘谷歌F12调试的隐藏技巧!
  • vivado IP_REPO_PATHS
  • 前端代码混淆加密(使用Terser、WebpackObfuscator)
  • 【复读EffectiveC++24】条款24:若所有参数皆需类型转换,请为此采用non-member函数
  • Mac应用快速启动器:Alfred 5 for Mac 激活版
  • oracle语法介绍
  • Python IDLE修改JetBrains Mono字体教程
  • CCF编程能力等级认证GESP—C++1级—20240629
  • 继HBM之后, 内存领域新宠MCR DIMM闪亮登场!
  • 谷粒商城实战笔记-75-商品服务-API-品牌管理-品牌分类关联与级联更新
  • Java中的equals()与==的区别与用法
  • 【ai】 2005年 rule based expert system学习笔记1
  • AI写作|去除了AI味道,我还花2分钟动手制作了一个coze智能体
  • 数据集相关类代码回顾理解 | utils.make_grid\list comprehension\np.transpose
  • React前端面试每日一试 3.状态(State)和属性(Props)的区别是什么?
  • 射灯怎么安装才好看,射灯安装防踩坑
  • Mojo变量详解
  • ElasticSearch 面试题及答案整理,最新面试题
  • Java基本语法学习的案例练习