数据库面试题总结01

列举几种表连接方式,有什么区别?

1. 【内连接】:只有两个元素表相匹配的才能在结果集中显示;
2. 【外连接】
- 左外连接:左边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示;
- 右外连接:右边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示;
3. 【全外连接】:连接的表中不匹配的数据全部会显示出来;
4. 【交叉连接】:笛卡尔效应,显示的结果是链接表的乘积;

聚集索引与非聚集索引的区别

1. 聚集索引的物理存储按索引排序,非聚集索引的物理存储不按索引排序。
2. 聚集索引的插入、更新数据的速度比非聚集索引慢,单查询速度快。
3. 聚集索引的叶级结点保存的是时间的数据项,非聚集索引的叶级结点保存的是指向数据项的指针。
4. 一个表只能有一个聚集索引(因为只有一种排序方式),但可以有多个非聚集索引。

什么是SQL Injection

SQL Injection是一种攻击数据库的技术,将恶意破坏性的SQL语句嵌套于数据库的查询语句之中。
当这些语句被执行时会对数据库的数据造成破坏。

什么是主键?

数据库中能唯一标识DB中记录的属性或属性的集合。

什么游标?

游标是对查询出来的结果作为一个单元来有效的处理;
游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做出修改,一般不用游标;
当需要逐条处理数据的时候,使用游标将更有利。

事务的隔离性(details)

事务特性(ACID's properties): Atomic、Consistency、Isolation、Durability

事务隔离性: 在DB中并发的多个事务之间相互独立、互不干扰。

当DB上有多个事务同时执行无法保证之间独立性时就会出现: 【脏读 - dirty read】、【不可重复读 - non-repeatable read】、【幻读 - phantom read】

在谈到隔离级别之前,我们应该明白的是事务与事务之间隔离的越严实其效率就会越低,需要在隔离级别和效率之间取得一个平衡点。

隔离级别:

  • 【读未提交 - read uncommited】:一个事务尚未提交时,它做的变更就能被别的事务看到。
  • 【读提交 - read commited】: 一个事务提交之后,它做的变更才会被其他事务看到。
  • 【可重复读 - repeatable read】:一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。可以说在"可重复读"的级别下,事务未提交的变更对其他事务是不可见的。
  • 【串行化 - serializable】:对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突💥的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。

什么是事务?什么是锁?

事务: 数据库中的一个执行逻辑单元,该逻辑单元由多个SQL语句分组组成.

如果任何一个语句操作失败则整个操作就会失败,以后操作就会回滚到该事务执行前的状态,或是上个结点。
为了确保要么执行要么不执行,就可以采用事务。将各个分组的SQL语句作为一个整体执行。
在DBMS中,锁🔒是实现事务的关键。锁可以保证事务的完整性和并发性.

UNION(去重)和UNION ALL(直返)有什么不同?

* UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对锁产生的结果集进行排序运算,删除重复的记录再返回结果。(实际上大部分应用中是不会存在重复记录的,最常见的是过程表和历史表UNION)
* UNION ALL只是简单的将两个结果集合并后返回,如果返回的两个结果集中有重复的数据,则返回的结果集就会包含重复的数据。 从效率上来说UNION ALL的操作效率优于UNION,如果可以确认合并的两个结果集中不存在重复的数据可以使用UNION ALL

DROP、DELETE和TRUNCATE的区别是什么?

【速度上】DROP > TRUNCATE > DELETE
【类型上】DROPTRUNCATE属于DDL语言,DELETE属于DML语言
【事务上】DROPTRUNCATE不支持回滚,DELETE支持回滚
【删除内容上】
- DROP:删除整个表、数据行、索引
- DELETE:删除表的部分或全部数据,表的结构还在
- TRUNCATE:删除表的全部数据,表结构存在
【应用场景上】
- 删除整个表用DROP
- 删除表部分数据用DELETE
- 删除整个表但保留表结构用TRUNCATE

posted @   Felix_Openmind  阅读(34)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示