数据库面试题总结01
列举几种表连接方式,有什么区别?
1. 【内连接】:只有两个元素表相匹配的才能在结果集中显示;
2. 【外连接】
- 左外连接:左边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示;
- 右外连接:右边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示;
3. 【全外连接】:连接的表中不匹配的数据全部会显示出来;
4. 【交叉连接】:笛卡尔效应,显示的结果是链接表的乘积;
2. 【外连接】
- 左外连接:左边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示;
- 右外连接:右边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示;
3. 【全外连接】:连接的表中不匹配的数据全部会显示出来;
4. 【交叉连接】:笛卡尔效应,显示的结果是链接表的乘积;
聚集索引与非聚集索引的区别
1. 聚集索引的物理存储按索引排序,非聚集索引的物理存储不按索引排序。
2. 聚集索引的插入、更新数据的速度比非聚集索引慢,单查询速度快。
3. 聚集索引的叶级结点保存的是时间的数据项,非聚集索引的叶级结点保存的是指向数据项的指针。
4. 一个表只能有一个聚集索引(因为只有一种排序方式),但可以有多个非聚集索引。
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
* UNION ALL只是简单的将两个结果集合并后返回,如果返回的两个结果集中有重复的数据,则返回的结果集就会包含重复的数据。 从效率上来说UNION ALL的操作效率优于UNION,如果可以确认合并的两个结果集中不存在重复的数据可以使用UNION ALL
DROP、DELETE和TRUNCATE的区别是什么?
【速度上】DROP > TRUNCATE > DELETE 【类型上】DROP和TRUNCATE属于DDL语言,DELETE属于DML语言 【事务上】DROP和TRUNCATE不支持回滚,DELETE支持回滚 【删除内容上】 - DROP:删除整个表、数据行、索引 - DELETE:删除表的部分或全部数据,表的结构还在 - TRUNCATE:删除表的全部数据,表结构存在 【应用场景上】 - 删除整个表用DROP - 删除表部分数据用DELETE - 删除整个表但保留表结构用TRUNCATE
学而不思则罔,思而不学则殆!
【推荐】国内首个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生成工具