📜  DBMS 面试常见问题 |设置 1

📅  最后修改于: 2021-09-10 02:01:20             🧑  作者: Mango

与传统的基于文件的系统相比,DBMS 有哪些优势?
Ans:开发数据库管理系统是为了解决传统操作系统支持的典型填充处理系统的以下困难。
1. 数据冗余和不一致
2. 数据获取困难
3. 数据隔离——多种文件和格式
4. 完整性问题
5. 更新的原子性
6. 多用户同时访问
7. 安全问题
资料来源:http://cs.nyu.edu/courses/spring01/G22.2433-001/mod1.2.pdf

什么是超级键、主键、候选键和外键?
答:超级键是关系模式的一组属性,模式的所有属性在功能上都依赖于这些属性。任何两行都不能具有相同的超级键属性值。
候选键是最小超键,即候选键属性的任何真子集都不能是超键。
主键是候选键之一。候选键之一被选为最重要的并成为主键。一张表中不能有多个主键。
外键是一个表中的一个字段(或字段的集合),它唯一地标识了另一个表的一行。请参阅此示例。

主键和唯一约束有什么区别?
Ans:主键不能有NULL值,唯一约束可以有NULL值。一张表中只有一个主键,但可以有多个唯一约束。

什么是数据库规范化?
Ans:这是一个基于给定关系模式的函数依赖关系和主键来分析给定关系模式的过程,以实现以下理想属性:
1) 最小化冗余
2) 最小化插入、删除和更新异常
不满足属性的关系模式被分解为可以满足期望属性的更小的关系模式。
资料来源:http://cs.tsu.edu/ghemri/CS346/ClassNotes/Normalization.pdf

什么是 SQL?
SQL 是结构化查询语言,设计用于在关系数据库系统中插入和修改。

SQL中的DDL、DML和DCL有什么区别?
Ans:以下是三个的一些细节。
DDL代表数据定义语言。像 CREATE、ALTER、DROP 和 RENAME 这样的 SQL 查询都属于这个范畴。
DML代表数据操作语言。像 SELECT、INSERT 和 UPDATE 这样的 SQL 查询属于这个范畴。
DCL代表数据控制语言。像 GRANT 和 REVOKE 这样的 SQL 查询都属于这个范畴。

have 和 where 子句有什么区别?
Ans: HAVING 用于为 select 语句中使用的组或聚合函数指定条件。 WHERE 子句在分组之前进行选择。 HAVING 子句在分组后选择行。与 HAVING 子句不同,WHERE 子句不能包含聚合函数。 (请参阅此示例)。
请参阅“拥有”与“地点”条款?更多细节

如何打印表格中的重复行?
答:见 https://www.geeksforgeeks.org/how-to-print-duplicate-rows-in-a-table/

什么是加入?
Ans: SQL Join 用于根据两个或多个表之间的公共字段组合来自两个或多个表的数据。例如,请考虑以下两个表。

表 –学生表

EnrollNo StudentName Address
1000 geek1 geeksquiz1
1001 geek2 geeksquiz2
1002 geek3 geeksquiz3

表 –学生课程表

CourseID EnrollNo
1 1000
2 1000
3 1000
1 1002
2 1003

以下是显示在不同课程 ID 中注册的学生姓名的连接查询。

SELECT StudentCourse.CourseID, Student.StudentName
       FROM StudentCourse
       INNER JOIN Student 
       ON StudentCourse.EnrollNo = Student.EnrollNo
       ORDER BY StudentCourse.CourseID;

上述查询将产生以下结果。

CourseID StudentName
1 geek1
1 geek3
2 geek1
3 geek1

什么是身份?
Ans: Identity(或AutoNumber)是一个自动生成数值的列。可以设置起始值和增量值,但大多数 DBA 将这些值保留为 1。GUID 列也生成数字;这个值无法控制。 Identity/GUID 列不需要被索引。

SQL 中的视图是什么?如何创建一个
答:视图是基于 SQL 语句结果集的虚拟表。我们可以使用创建视图语法进行创建。

CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

视图有什么用?
1.视图可以表示表中包含的数据的一个子集;因此,视图可以限制底层表暴露于外部世界的程度:给定用户可能有权查询视图,但拒绝访问基表的其余部分。
2.视图可以将多张表join并简化为一个虚拟表
3.视图可以充当聚合表,数据库引擎在其中聚合数据(总和、平均值等)并将计算结果作为数据的一部分呈现
4、视图可以隐藏数据的复杂性;例如,视图可以显示为 Sales2000 或 Sales2001,透明地对实际基础表进行分区
5.视图占用的存储空间很小;数据库只包含视图的定义,而不是它所呈现的所有数据的副本。
6.根据所使用的 SQL 引擎,视图可以提供额外的安全性
来源:维基页面

什么是触发器?
答:触发器是与插入、更新或删除操作相关联的代码。每当在表上执行关联的查询时,代码就会自动执行。触发器可用于维护数据库的完整性。

什么是存储过程?
Ans:存储过程就像一个包含一组编译在一起的操作的函数。它包含一组在应用程序中常用的操作,用于执行一些常见的数据库任务。

触发器和存储过程有什么区别?
Ans:与存储过程不同,触发器不能直接调用。它们只能与查询相关联。

什么是交易?什么是 ACID 属性?
答:数据库事务是一组必须被视为整体的数据库操作,这意味着要么执行所有操作,要么不执行任何操作。
一个例子可以是从一个账户到另一个账户的银行交易。要么必须同时执行借方和贷方操作,要么都不执行。
ACID(原子性、一致性、隔离性、持久性)是一组属性,可保证可靠地处理数据库事务。

什么是索引?
Ans:数据库索引是一种数据结构,它以额外写入和使用更多存储空间来维护额外的数据副本为代价,提高了对数据库表的数据检索操作的速度。
数据只能以一种顺序存储在磁盘上。为了支持根据不同值更快的访问,需要更快的搜索,如对不同值的二分搜索,为此,在表上创建索引。这些索引需要额外的磁盘空间,但它们允许根据不同的频繁搜索值进行更快的搜索。

什么是聚集索引和非聚集索引?
答:聚集索引是数据物理存储在磁盘上的索引。因此,在给定的数据库表上只能创建一个聚集索引。
非聚集索引不定义数据的物理排序,而是定义逻辑排序。通常,创建一棵树,其叶子指向磁盘记录。 B-Tree 或 B+ 树用于此目的。

  • DBMS 面试常见问题 | 2套
  • 关于 DBMS 的练习测验
  • 最后一分钟笔记 – DBMS
  • 数据库管理系统文章