基本概念题
- 在一个数据库中有多个【外模式(子模式、用户模式、用户视图】
- 数据库与文件系统的根本区别在于【数据的结构化】
- 主码是一个属性或属性集,它能唯一标识一行记录
- 当关系R和S自然连接时,能够把R和S原本该舍弃的元组放到结果关系中的操作时【外连接】
- 当关系R和S自然连接时,要求R和S含有一个或多个共有的【属性】
- 在RDBMS中,一个关系相当于【一张二维表】
- 关系代数运算中5中基本运算【(兵差选投敌) 并、差、选择、投影、笛卡尔积】

- 【层次模型】是DBS中最早出现的数据模型
- 数据管理技术经历了【人工管理】【文件系统】【数据库系统】三个阶段
- 数据库的逻辑数据独立性是由【外模式/模式】映像提供的
- 关系代数中专门的关系运算包括:【选择】【投影】【连接】和【除】
- 若关系中的某一属性组(或单个属性)的值能够唯一标识一个元组,则称该属性组为【候选码】
- 在DB中,只存放视图的【定义】,不存放视图对应的数据
- 数据库的概念模型独立于【具体的机器和DBMS】
- 数据库的基本特点是【数据可以共享(或数据结构化)、数据独立性、数据冗余小,易扩充、统一管理和控制】
- 【数据库】是存储在计算机内有结构的数据的集合
- 数据库中存储的是【数据以及数据之间的联系】
- 数据库中,数据的物理独立性是指【用户的应用程序存储在磁盘上的数据相互独立】
- 数据库的特点之一是数据的共享性,这里的数据共享是指【多种应用、多种语言、多个用户相互覆盖地使用数据集合】
- 数据库系统的核心是【数据库管理系统(DBMS)】
- 数据库结构划分为多个层次为了提高数据库的【逻辑独立性】和【物理独立性】
- 在数据库中,产生数据不一致的根本原因是【数据冗余】
- 数据库管理系统(DBMS)是【系统软件】
- 数据库管理系统(DBMS)的主要功能是【定义数据库】
- 数据库系统(DBS)的特点是【数据共享】【数据独立】【减少数据冗余】【避免数据不一致】和【加强了数据保护】
- 数据库系统的最大特点是【数据的三级抽象和两级独立性】
- 数据库管理系统是【在操作系统支持下的系统软件】
- DB的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是【模式】
- 数据库系统的数据独立性是指【不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序】
- 实体是信息世界中的术语,与之对应的数据库术语为【记录】
- 层次型、网状型和关系型数据库划分原则是【数据之间的联系】
- DB技术的奠基人之一E.F.Codd从1970年起发表多篇论文论述【关系数据模型】
- DB是长期存储在计算机内、有【组织】的、可【共享】的数据集合
- DBMS是指【数据库管理系统】是位于【用户】和【操作系统】之间的一层管理软件
- 数据库管理系统的主要功能: 【定义】【操纵】【运行】【建立和维护】
- 数据独立性分为【数据逻辑独立性】【数据物理独立性】
- 数据模型的组成【数据结构】【数据操作】【完整性约束】三个部分组成的
- 【数据结构】是对数据系统的静态特性的描述,【数据操作】是对数据库系统的动态特性的描述
- 数据库体系结构【外模式】【模式】【内模式】三级结构进行组织
- 数据冗余可能导致的问题有【浪费存储空间以及修改麻烦】【潜在的数据不一致性】
- 关系数据库管理系统应该能实现专门关系运算包括【选择】【投影】【连接】
- 关系模型中,一个【关键字】是【由一个或多个其值能够唯一标识关系模式中任何元组的属性组成】
- 关系运算中花费时间最长的是【笛卡尔积】
- 一个关系模式的定义格式为【关系名(属性名01,属性名02,...属性名n)】
- 【传统的集合运算】有:【并】【差】【交】【笛卡尔积】
- 【基本的运算】有:【并】【差】【选择】【投影】【笛卡尔积】
- 【专门的关系运算】有:【选择】【投影】【连接】
- 【关系数据库】是【基于】数学上两类运算是【关系代数】和【关系演算】
- SQL语言是【非过程化、关系数据库】的语言
- SQL语言具有两种使用方式,分别称为【交互式SQL】和【嵌入式SQL】
- SQL是【结构化查询语言】
- 保护数据库,防止未经授权的或不合法的使用造成的数据泄露、更改破坏。这是数据的【安全性**】
- 数据库的【完整性】是指数据的【正确性】和【相容性】
- 在数据库系统中,【对存取权限的定义】称为【授权】
- 数据库管理系统通过提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的【安全性】
- "收回用户ZHAO对学生表(STUD)中学号(XH)的修改权"的SQL语句是【REVOKE UPDATE(XH) ON STUD FROM ZHAO】
- 把对关系SC的属性GRADE的修改权授予用户ZHAO的SQL【GRANT UPDATE(UPDATE) ON SC TO ZHAO】
- 在SQL Server中删除触发器使用的是【DROP】
- 保护数据安全性的一般方法是【设置用户标识和存取权限控制】
- 安全性控制的一般方法有【用户标识鉴定】【存取控制】【审计】【数据加密】和【视图的保护】5级安全措施。
- 存取权限包括两个方面的内容,一个是【存取的数据对象】二是【对此数据对象进行操作的类型】
- 在数据库系统种对【存取权限的定义】称为【授权】
- 为了保证DB的【安全性】,设置了对DB的存取进行控制的语句,对用户授权使用【GRANT】收回所授的权限使用【REVOKE】
- DBMS存取控制机制主要包括两个部分: 【自主存取控制】【强制存取控制】
- 当对某一个表进行诸如【INSERT】【DELETE】【UPDATE】这些操作时,SQL SERVER会自动执行触发器所定义的SQL语句。
- 在DBS中,保证数据以及语义正确和有效的功能是【完整性控制】
- 数据库的【完整性】是指数据的【正确性】和【相容性】
- 在DB的表定义中,限制成绩属性类的取值在0和100的范围内,属于数据的【用户自定义】约束。
- 数据库的完整性指的是数据的【实体完整性】【参照完整性】【用户自定义完整性】
- 实体完整性是指在基本表中,【主属性不能为空值】
- 参照完整性是指在基本表中,【外码可以是空值或另一个关系主码的有效值】
- 为了保护数据库的实体完整性,当用户程序对主码进行更新时使主码值不唯一时,DBMS就【拒绝此操作】
- 关系规范化中的删除操作异常指的是【不该删除的数据被删除】,插入操作异常指的是【该插入的数据没有插入】
- 设计性能较优的关系模式称之为规范化,规范化的主要理论依据【关系规范化理论】
- 当关系模式R(A, B)已属于3NF,说法中【仍然存在一定的插入和删除异常】是正确的。
- 关系模型中的关系模式至少是【1NF】
- 在关系DB中,任何二元关系模式的最高范式必定是【BCNF】
- 候选关键字中的属性称为【主属性】
- 消除了部分函数依赖的1NF的关系模式,必定是【2NF】
- 关系模式的候选关键字可以有【1个】,主关键字可以有【1个或多个】
- 关系模式的分解【不唯一】
- 对于非规范化的模式,经过【使属性变为简单域】转变为1NF,将1NF经过【消除非主属性对主关键字的部分依赖】转变为2NF,将2NF经过【消除非主属性对主关键字的传递依赖】转变为3NF。
- 在DB的规范化理论中,在执行“分解”时,必须遵守规范化原则:【保持原有的依赖关系和无损连接性】。
- 在DB设计中,E-R图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的【概念设计】阶段。
- 在DB设计中,设计关系模式是【逻辑设计阶段】的任务。
- 在数据库的概念模型中,最常用的数据模型是【实体联系模型】
- 一个M:N联系转换为关系模型时,该关系模式的关键字是【M端实体关键字与N端实体关键字组合】
- 当局部E-R图合并成全局E-R图时可能出现冲突💥,不属于合并冲突的是【语法冲突】
- 概念模型独立于【硬件设备和DBMS】
- 数据流程图(DFD)是用于描述结构化方法中【需求分析】阶段的工具
- 数据库设计的步骤:【需求分析】【概念设计】【逻辑设计】【物理设计】【数据库实施】【数据库运行与维护】
- “为那些表,在哪些字段上,建立什么样的索引”这一设计内容应该属于数据库的【物理】设计阶段。
- 在DB设计中,将数据需求写成文档,它是各类数据描述的集合,包括数据项、数据结构、数据流、数据存储和数据加工过程等的描述,通常称为【数据字典】
- 在设计E-R图时,由于各个子系统分别有不同的应用,而且往往是由不同的设计人员设计的,所以各个E-R图之间难免有不一致的地方,这些冲突主要有【属性冲突】【命名冲突】【结构冲突】💥
- 修改存储过程使用语句【ALTER PROCEDURE】,删除存储过程使用【DROP PROC】
- 将变量count值赋值为1【DECLARE @count】
- 将多个语句捆绑【BEGIN-END】
- 存储过程是存放在【SQL SERVER服务器】上的预先定义并编译号的T-SQL语句
- 游标是系统为用户开设的一个【数据缓冲区】,存放SQL语句的执行结果
- 数据库三级视图,反映了三种不同角度看待数据库的观点,用户眼中的数据库称为【外部视图】
- 对关系模式进行规范化不是为了加快查询速度而是为了【减少数据冗余】【解决更新异常问题】【提高存储空间效率】
- 保护数据库,防止未经授权或不合法的使用造成的数据泄露、非法更改或破坏,这是指数据的【安全性】
- 现实世界“特征”术语,对应于数据世界的【数据项】
- 关系模型中3NF是【满足2NF且不存在非主属性】
- 候选码中的属性称为【主属性】
- 对现实世界进行第二层抽象的模型是【结构数据模型】
- 数据库保护包括【安全性保护】【完整性保护】【并发控制】【故障恢复】4个方面内容。
- DBS中数据的独立性包括【物理独立性】【逻辑独立性】两个方面
- 数据库设计通常包括【结构特性 - 静态】【行为特性 - 动态】两个方面内容
- 关系操作通常有【关系代数】和【关系演算】两类。
- E-R图的三个基本要素为【实体】【联系】【属性】
- 并发事务正确性的判断准则是【可串行性(Serializability)】
- 最基本的封锁模式有两种:【排他锁(exclusive locks) - X锁】【共享锁(share locks) - S锁】
- 在标量统计查询中加入【GROUP BY】子句和【COMPUTE】子句,则查询结果会对每一组产生一个统计数据,这种方法叫做矢量统计。
- 子查询存在测试是指父查询与子查询之间用谓词【EXISTS】进行连接,判断子查询的结果中是否有数据存在。
- 关系代数中∪运算要使用SQL语言实现的话,应该使用【合并查询】即使用命令【UNION】将多个SELECT的查询结果组合起来。
综合体
一、写入实现下列各功能的SQL语句:
一个电影资料数据库假定3个基本表:
电影表: Movie(电影名、制作年份、长度)
演员表: Actor(演员姓名、地址、性别、生日)
电影主演表: Acts(电影名、制作年份、演员姓名)
1)查询1990~1999年制作的电影名和长度
| SELECT 电影名, 长度 |
| FROM 电影表 |
| WHERE 制作年份 BETWEEN 1990 AND 1999; |
2)查询长度超过120分钟的电影名和演员姓名
| SELECT 电影表.电影名, 电影主演表.演员姓名 |
| WHERE 电影表.电影名 = 电影主演表.电影名 AND 电影表.长度 > 120; |
3)查询电影名为“速度与激情8”的演员姓名和生日
| SELECT 演员表.演员姓名, 演员表.生日 |
| FROM 演员表, 电影主演表 |
| WHERE 演员表.演员姓名 = 电影主演表.演员姓名 AND 电影主演表.电影名 = '速度与激情8' |
4)查询统计演员姓名以及主演电影的数量
| SELECT 演员姓名, COUNT(*) AS 主演电影数量 |
| FROM 电影主演表 |
| GROUP BY 演员姓名 |
二、写入实现下列各功能的SQL语句:
学生有多名学生,财务处每年要收一次学费。为财务处学费工作设计一个数据库,包括两个关系:
学生(学号,姓名,专业,入学日期)
收费(学年,学号,学费,书费,总金额)
假设规定属性的类型:
* 学费、书费、总金额为数值型数据;
* 学号、姓名、学年、专业为字符型数据;
* 入学日期为日期型数据;
自定义列的宽度。
1)用SQL编写上述表的结构(包括主键子句和外键子句)
| |
| CREATE TABLE 学生( |
| 学号 CHAR(8), |
| 姓名 CHAR(8), |
| 专业 CHAR(8), |
| 入学日期 DATE, |
| PRIMARY KEY(学号) |
| ); |
| |
| CREATE TABLE 收费( |
| 学年 CHAR(10), |
| 学号 CHAR(8), |
| 学费 NUMERIC(4), |
| 书费 NUMERIC(5,2), |
| 总金额 NUMERIC(7,2), |
| PRIMARY KEY(学年,学号), |
| FOREIGN KEY (学号) REFERENCES 学生(学号) |
| ); |
三、编写SQL语言实现相应功能
设学生课程数据库中有三个关系:
学生关系S(S#, SNAME, AGE, SEX)
课程关系C(C#, CNAME)
学习关系SC(S#, C#, GRADE)
1.检索选修课程名称是"MATHS"的学生的学号与姓名
| SELECT S.S |
| FROM S, C, SC |
| WHERE S.S |
2.检索至少学习了课程号为"C1"和"C2"的学生的学号
| SELECT SC.S |
| FROM SC, C |
| WHERE SC.C |
3.检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄
| SELECT S#, SNAME, AGE |
| FROM S |
| WHERE AGE BETWEEN 18 AND 20 AND SEX = '女'; |
4.检索平均成绩超过80分的学生学号和平均成绩
| SELECT S#, AVG(GRADE) AS 平均成绩 |
| FROM SC |
| GROUP BY S# |
| HAVING AVG(GRADE) > 80; |
5.检索选修了全部课程的学生姓名
| SELECT SNAME |
| FROM S |
| WHERE S# IN ( |
| SELECT S# |
| FROM SC |
| GROUP BY S# |
| HAVING COUNT(*) = ( |
| SELECT COUNT(DISINTCT C#) |
| FROM C |
| )); |
6.检索选修了三门以上的学生的姓名
| // 第一种 |
| SELECT SNAME |
| FROM S |
| WHERE S# IN ( |
| SELECT S# |
| FROM SC |
| GROUP BY S# |
| HAVING COUNT(*) > 3 |
| ); |
| // 第二种 |
| SELECT S.SNMAE |
| FROM S, SC |
| WHERE S.S# = SC.S# |
| GROUP BY SNAME |
| HAVING COUNT(*) > 3; |
四、编写SQL语句实现相应功能
设学生-课程数据库中包括三个表:
学生表:Student (Sno, Sname, Sex, Sage, Sdept)
课程表:Course(Cno, Cname, Ccredit)
学生选课表:SC(Sno, Cno, Grade)
1)查询选修课程包括“1042”号学生所学的课程的学生学号
| SELECT DISTINCT Sno |
| FROM SC |
| WHERE Cno = '1042'; |
2)创建要给计科系学生信息视图S_CS_VIEW,包括Sno学号,Sname姓名,Sex性别;
| CREATE VIEW S_CS_VIEW |
| AS |
| SELECT Sno, Sname, Sex |
| FROM Student |
| WHERE Sdept = '计科系' |
3)通过2题是视图修改数据,把王平的名字改为王慧萍
| UPDATE S_CS_VIEW |
| SET SNAME = '王慧萍' |
| WHERE SNAME = '王平' |
4)创建一选修数据库课程信息的视图,视图名称为datascore_view,包括学号、姓名、成绩
| CREATE VIEW datasource_view |
| AS |
| SELECT Student.Sno, Student.Sname, SC.Grade |
| FROM Student, SC, Course |
| WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno AND Course.Cname = '数据库'; |
五、根据功能编写关系代数语言
设有三个关系:
S(S#, SNAME, AGE, SEX) - 学生
C(C#, CNAME, TEACHER) - 课程
SC(S#, C#, GRADE) - 选课
试用关系代数表达式表示下列查询语句:
(1)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。

(2)检索选修课程包含“陈军”老师所授课程之一的学生学号(S#)。

(3)检索选修课程号为K1和K5的学生学号(S#)

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具