【数据库】简答题汇总

1.什么是基本表?什么是视图?视图和基本表之间的区别和联系

基本表是本身独立存在的表,是实际独立存放在数据库中的表,是实表

视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是虚表

数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中

视图一经定义就像基本表一样被查询、删除,也可以在一个视图上再定义新的视图,但是对视图的更新操作有限制

2.简述数据库的三级模式和两级映像结构,其如何保证数据的逻辑独立性和物理独立性

三级模式:

模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公用数据视图

外模式:也称子模式或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的逻辑表示

内模式:也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内的组织方式

二级映像:

外模式/模式映像:

定义了外模式与模式之间的对应关系

当模式改变时,由数据库管理员对各个外模式/模式映像作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性

模式/内模式映像:

定义了数据全局逻辑结构与存储模式之间的对应关系

当数据库的存储模式改变时,由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性

3.事务的概念及事务的4个特性。恢复技术和并发控制分别能保证事务的哪些特性

事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位

ACID特性

原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作,要么都做,要么都不做

一致性:数据库的结果是从一个一致性状态转变成另一个一致性状态

隔离性:一个事务的执行不能被其他事务干扰,即一个事务的内部操作及使用的数据对其他事务是隔离的,并发执行的各个事务之间不能互相干扰

持续性:永久性,一个事务一旦提交,它对数据库中数据的改变是永久的

恢复技术----原子性和持续性(永久性)

并发控制----隔离性和一致性

4.简述关系模型的三类完整性规则及其内容

实体完整性:主码中的属性不能取空

参照完整性:不引用不存在的实体,参照关系中的外码或者取空或者等于被参照关系中某个元组的主码值

若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须

取空值(F的每个属性均为空值)

或者等于S中的某个元组的主码值

用户定义的完整性规则反映某一具体应用涉及的数据必须满足的语义要求

5.什么是数据库的完整性?什么是数据库的安全性?数据库的完整性和数据库的安全性有什么区别和联系?

数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏

数据库的完整性是指数据的正确性和相容性

完整性是为了防止数据库中存在不符合语义的数据,防止错误信息输入和输出

(防范对象是不合语义的数据)

安全性是保护数据库防止恶意破坏和非法的存取

(防范对象是非法用户和数据)

6.简述系统故障的恢复策略

(1)正向扫描日志文件,找出故障发生前已经提交的事务,将其事务标记记入UNDO队列;

(2)对UNDO队列中的各个事务进行撤销操作

(3)对REDO队列中的各个事务进行重做处理
事务故障的恢复

(1)反向扫描日志文件,查找该事务的更新操作

(2)对该事务的更新操作进行逆操作,即将日志记录中"更新前的值"写入数据库

(3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理

(4)如此处理下去,直至读到此事务的开始标记,事务故障就恢复完成了

7.简述数据库设计的六个阶段及每个阶段的主要工作

需求分析:分析用户的需求,包括数据、功能和性能需求;

概念结构设计:主要采用E-R模型进行设计,包括画E-R图;

逻辑结构设计:将E-R图转换成表,实现从E-R模型到关系模型的转换;

数据库物理设计:主要是为所涉及的数据库选择合适的存储结构和存取路径;

数据库实施:包括编程、测试和试运行;

数据库运行与维护:系统的运行与数据库的日常维护

在数据库设计过程中,需求分析和概念结构设计可以独立于任何数据库管理系统进行,逻辑结构设计和物理结构设计与选用的数据库管理系统密切相关

  1. 在关系数据库中能完全消除数据冗余吗?

不能。要实现关系数据库中表与表之间的联系,必须通过公共属性来完成,这些公共属性可能是一个表的主键,也可能是另一个表的外键,有相应的参照完整性来保证表之间的联系。所以关系数据库中存在数据冗余,但能控制数据的冗余度

9.简述在SQL中,delete语句与drop table的区别

delete的作用是删除表中的元组,表的模式依然存在

drop table是将表的结构和元组全部删除,表被删除(drop)后就不再存在了

10.试述DBMS的主要功能

DBMS的主要功能包括:定义功能、操纵功能、运行控制功能、运行和维护功能、数据字典

11.简述产生死锁的原因以及预防死锁的三种方法

一个事务若申请锁未被批准,则需等待其它事务释放锁。当事务之间出现循环等待时,如果不加干预,则会一起等待下去,从而产生死锁。

常见的预防死锁的三种方法如下:

(1)要求每一个事务必须同时封锁所要使用的全部数据

(2)对所有数据对象规定一个封锁的次序,要求所有事物必须按照这个次序封锁数据对象

(3)当事务申请未被批准时,不等待加锁而是让一些事务回滚重新执行

12.试述文件系统的主要缺陷。

数据很难共享

数据冗余

数据独立性差

数据控制困难

13.简述数据库恢复的基本原理和REDO/UNDO恢复策略。

数据库恢复的基本原理是利用后备副本将数据恢复到转储时的一致状态,利用事务日志将数据库恢复到故障前事务成功提交时的一致状态

DBMS的恢复子系统根据事务日志的记载重做(REDO)已提交的事务,撤销(UNDO)未提交的事务,确保事务的原子性,使数据恢复到某个一致状态,这种恢复的方法称为REDO/UNDO恢复策略

简述实现数据库安全性控制的常用方法和技术

数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改和破坏

常用的方法和技术:

用户身份鉴别(静态口令鉴别、动态口令鉴别、生物特征鉴别、智能卡鉴别)

存取控制

自主存取控制(授权与收回、角色)

强制存取控制

视图机制

审计

数据加密


定义模式

create schema authorization wang;

删除模式

drop schema wang cascade;

cascade 级联

restrict 限制

定义基本表

create table 表名(

列名 数据类型 列级完整性约束条件

......

表级完整性约束条件

);

sql 复制代码
create table course(
    cno char(4) primary key,
    cname char(40) not null,
    cpno char(4),
    ccredit smallint,
    foreign key(cpo) references course(cno)
);

修改基本表

alter

删除基本表

drop

查询*select

sql 复制代码
select [all|distinct] <目标表达式>  [,<目标表达式>]...

from <表名或视图名> [,<表名或视图名>] | (<select语句>) [as] <别名>

[where <条件表达式>]

[group by <列名1> [having<条件表达式>]]

[order by <列名2> [asc|desc]]; 

插入*insert

sql 复制代码
insert

into <表名> [(<属性列1> [,<属性列2>] ...]

values (<常量1> [,<常量2>] ...);
sql 复制代码
例3.69将一个新元组元组(学号:201215128,姓名:陈冬,性别:男,所在系IS,年龄:18岁)插入到student表中

insert

into student(sno,sname,ssex,sdept,sage)

values('201215128','陈冬','男','IS',18);

修改*update

sql 复制代码
update <表名>

set <列名>=<表达式> [,<列名>=<表达式>] ...

[where <条件>];
sql 复制代码
例3.73将学生201215121的年龄改为22岁

update student

set sage=22

where sno='201215121';

删除delete

sql 复制代码
delete

from <表名>

[where <条件>];
sql 复制代码
例3.76删除学号为201215128的学生记录

delete 

from student

where sno='201215128';

定义视图

sql 复制代码
create view <视图名> [<列名> [,<列名>]...)]

as <子查询>

[with check option];

drop view <视图名> [cascade];

相关推荐
乌鸦乌鸦你的小虎牙38 分钟前
qt 5.12.8 配置报错(交叉编译环境)
开发语言·数据库·qt
一只大袋鼠1 小时前
Redis 安装+基于短信验证码登录功能的完整实现
java·开发语言·数据库·redis·缓存·学习笔记
Anastasiozzzz1 小时前
深入研究Redis的ZSet底层数据结构:从 Ziplist 的级联更新到 Listpack 的完美救场
数据结构·数据库·redis
菠萝蚊鸭1 小时前
x86 平台使用 buildx 基于源码构建 MySQL Wsrep 5.7.44 镜像
数据库·mysql·galera·wsrep
沙漏无语4 小时前
(二)TIDB搭建正式集群
linux·数据库·tidb
姚不倒4 小时前
三节点 TiDB 集群部署与负载均衡搭建实战
运维·数据库·分布式·负载均衡·tidb
隔壁小邓4 小时前
批量更新方式与对比
数据库
数据知道4 小时前
MongoDB复制集架构原理:Primary、Secondary 与 Arbiter 的角色分工
数据库·mongodb·架构
人道领域4 小时前
苍穹外卖:菜品新增功能全流程解析
数据库·后端·状态模式
修行者Java4 小时前
(七)从 “非结构化数据难存储” 到 “MongoDB 灵活赋能”——MongoDB 实战进阶指南
数据库·mongodb