首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL岗位30个面试题,SQL面试问题及答案「建议收藏」

Autoincrement是一个关键字,用于在表中插入新记录时生成数字。 SQL中的Constraints(约束)是什么? 它可用于设置表中数据类型的限制。在创建或更新表语句时,可以使用约束。...什么是Normalization(规范化)? 规范化是一种设计技术,它以减少数据依赖性的方式排列表,将表分成小模块并按关系链接。 什么是Denormalization(非规范化)?...非规范化是一种优化方法,我们将多余的数据增加到表中,并在规范化后应用。 什么是Stored Procedure(存储过程)? 存储过程是一组SQL语句,用作访问数据库的函数。...在select语句中,游标存储了信息。游标可以使用多行,但一次只能处理一行。这组行称为活动集。...运算符是一个保留字,主要用于SQL语句的WHERE子句中以进行操作。

4.5K31

数据库设计的最佳实践

关系允许数据库在连接不同的数据项时分割和存储不同表中的数据。 分配键(主键、外键):键用于识别表中唯一的行。它还建立了表之间的关系。...NoSQL数据建模通常由特定于应用程序的访问模式驱动,即要支持的查询类型。 这种数据建模通常需要对数据结构和算法有更深入的理解。 在设计NoSql时,数据复制和非规范化是两个关键方面。...非规范化: 将相同的数据复制到多个文档或表中,以便简化或优化查询处理,或将用户的数据适合于特定的数据模型。它允许我们以查询友好的结构存储数据,以简化查询处理。...对于NoSQL,连接通常在设计时处理,而不是在查询执行时处理连接的关系模型。查询时间连接几乎总是意味着性能损失,但在许多情况下,可以使用非规范化和聚合(例如嵌入嵌套实体)来避免连接。...这两种扩展都可以组合在一起,将资源添加到现有服务器以垂直伸缩,并在需要时添加其他服务器以水平伸缩。在考虑每种方法时,明智的做法是考虑水平扩展和垂直扩展之间的权衡。

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【数据库设计和SQL基础语法】--索引和优化--SQL语句性能调优

    二、优化数据库设计 2.1 规范化与反规范化 数据库设计的优化是 SQL 性能调优的重要一环,而规范化和反规范化是两个相对的概念,它们在数据库设计中扮演着不同的角色。...提高数据的查询效率: 通过使用关系连接等操作,规范化的数据库结构可以更好地支持查询操作。这有助于提高查询效率。...反规范化(Denormalization) 反规范化是在数据库设计中,有意地将数据库表的结构冗余增加,以提高某些查询性能的一种技术。...减少连接的复杂性: 反规范化可以减少查询时所需的连接操作的复杂性。这对于大型数据库或者复杂查询可能提高性能。...e2.employee_id; 使用合适的索引: 在进行连接操作时,确保连接条件的列上存在索引,以提高连接的性能。

    34310

    干货 | 新手请速戳!30个精选SQL面试问题Q&A集锦

    SQL中的Constraints(约束)是什么? 它可用于设置表中数据类型的限制。在创建或更新表语句时,可以使用约束。...UniqueKey(唯一键)——除了主键之外,表中还有更多键,它们只标识记录,但唯一的区别是它们只接受一个空值但不接受重复值。...什么是Normalization(规范化)? 规范化是一种设计技术,它以减少数据依赖性的方式排列表,将表分成小模块并按关系链接。 14. 什么是Denormalization(非规范化)?...非规范化是一种优化方法,我们将多余的数据增加到表中,并在规范化后应用。 15. 什么是Stored Procedure(存储过程)? 存储过程是一组SQL语句,用作访问数据库的函数。...在select语句中,游标存储了信息。游标可以使用多行,但一次只能处理一行。这组行称为活动集。

    1.5K10

    Greenplum 实时数据仓库实践(2)——数据仓库设计基础

    规范化程度越高,划分的表就越多,在查询数据时越有可能使用表连接操作。而如果连接的表过多,会影响查询的性能。关键的问题是要依据业务需求,仔细权衡数据查询和数据更新的关系,制定最适合的规范化程度。...一个非规范化维度对应一个维度表,规范化后,一个维度会对应多个维度表,维度被严格地以子维度的形式连接在一起。实际上,在很多情况下,维度规范化后的结构等同于一个低范式级别的关系型结构。...设计维度数据模型时,会因为如下原因而不对维度做规范化处理: 规范化会增加表的数量,使结构更复杂。 不可避免的多表连接,使查询更复杂。 不适合使用位图索引。 查询性能原因。...查询数据时,星型模式的连接逻辑比较简单,而从高度规范化的事务模型查询数据时,往往需要更多的表连接。 简化业务报表逻辑。...数据规范化与存储 规范化的过程就是将维度表中重复的组分离成一个新表,以减少数据冗余的过程。正因为如此,规范化不可避免地增加了表的数量。在执行查询的时候,不得不连接更多的表。

    1.9K30

    「数据仓库架构」数据建模:星型模式

    规范化数据库的问题是,任何真正有意思的数据洞察都需要许多连接,随着数据库大小的增加,这些连接会大大降低查询的速度。例如,查看下面的模式,大多数表都不是直接相关的。...正如您可以想象的那样,随着模式的增长,甚至越来越难以理解表之间的关系。 星型模式 解决这个问题的一个方法是执行数据建模的非规范化步骤,以创建一个更简单、易于理解的为ceratin查询优化的模式。...事实表还包含指向相关维度表的键。在星型模式的中心只有一个事实表。 维度:地点、时间、内容等(如日期/时间、地点、销售商品)。它们通常包含定性信息。数据模式中有多个维度表,它们都与事实表相关。...优势 一个简化的模式意味着我们不必每次想要从数据库中获得一些信息时都编写冗长的查询。 我们对阅读进行了优化。现在我们可以编写更少的连接,结果将更快地返回。 而且,它将业务逻辑用于报告。...我们不必向涉众解释所有用于创建模式的疯狂连接,只是可能。 缺点 对数据进行非规范化意味着数据异常可能是一次性插入或更新引起的。

    1.3K11

    编写高效SQL的三个基础原则

    好消息是有一些技巧可以用来阐明令人困惑的名称: 使用视图进行虚拟重命名。 添加模式元数据。 视图是存储的查询。您可以使用它们为表或列提供更易于理解的名称。...假设您只在视图中提供新的别名——即,唯一的SQL子句是select和from,并且select没有表达式——访问视图与使用表相同。随着时间的推移,您可以将代码转移到使用名称更好的视图。 但这需要时间。...第三范式 (3NF): 没有依赖于非主键或唯一键一部分的列。 虽然存在更高的范式,但这些与重叠键和多个多对多关系有关。在实践中这些很少见。确保您的表符合 3NF 将涵盖您处理的大多数情况。...外键指向子表中的列到父表中的主键或唯一约束。有了这个,您就不能拥有孤立的行。非空约束: 确保您只能在列中存储非空值,即它们是强制性的。检查约束: 验证对于每一行,条件为真或未知。...建立坚实的基础 使用命名不当的表和无效的数据意味着要花费时间来解读和纠正它们;这会降低您的生产力。 选择好的名称、规范化您的表格和创建约束,可以让您在编写SQL时拥有坚实的基础。

    6700

    编写高效SQL的三个基础原则

    好消息是有一些技巧可以用来阐明令人困惑的名称: 使用视图进行虚拟重命名。 添加模式元数据。 视图是存储的查询。您可以使用它们为表或列提供更易于理解的名称。...假设您只在视图中提供新的别名——即,唯一的SQL子句是select和from,并且select没有表达式——访问视图与使用表相同。随着时间的推移,您可以将代码转移到使用名称更好的视图。 但这需要时间。...第三范式 (3NF): 没有依赖于非主键或唯一键一部分的列。 虽然存在更高的范式,但这些与重叠键和多个多对多关系有关。在实践中这些很少见。确保您的表符合 3NF 将涵盖您处理的大多数情况。...外键指向子表中的列到父表中的主键或唯一约束。有了这个,您就不能拥有孤立的行。非空约束: 确保您只能在列中存储非空值,即它们是强制性的。检查约束: 验证对于每一行,条件为真或未知。...建立坚实的基础 使用命名不当的表和无效的数据意味着要花费时间来解读和纠正它们;这会降低您的生产力。 选择好的名称、规范化您的表格和创建约束,可以让您在编写SQL时拥有坚实的基础。

    8510

    【21】进大厂必须掌握的面试题-65个SQL面试

    非关系数据库管理系统:没有关系,元组和属性的概念。示例– Mongo Q4。SQL中的表和字段是什么意思? 表是指以行和列的形式组织的数据集合。字段是指表中的列数。...它还定义了完整性约束,以在将数据输入到应用程序或数据库中时对数据执行业务规则。 Q13。SQL中的聚集索引和非聚集索引有什么区别?...完全联接: 当任何表中都存在匹配项时,完全联接将返回所有记录。因此,它将返回左侧表中的所有行和右侧表中的所有行。 Q16。您所说的非规范化是什么意思?...非规范化是指一种用于从数据库的较高形式到较低形式访问数据的技术。当将冗余引入表中时,它可以帮助数据库管理员提高整个基础架构的性能。...HAVING子句只能与SELECT语句一起使用。通常在GROUP BY子句中使用它,并且每当不使用GROUP BY时,HAVING的行为就像WHERE子句。

    6.9K22

    什么是星型模型

    2.优点 星型模型是非规范化的 ,这意味着应用于事务性关系数据库的常规规范化规则在星型模型设计和实现过程中被放宽。...星型模型非规范化的好处是: 更简单的查询 - 星型模型连接逻辑通常比从高度规范化的事务模型中检索数据所需的连接逻辑更简单。...3.缺点 星型模型的主要缺点是数据完整性不能很好地实施,因为它处于高度非规范化状态。 一次性插入和更新可能导致数据异常,规范化模型旨在避免。...规范化模型允许执行任何类型的分析查询,只要它们遵循模型中定义的业务逻辑即可。 星型模型往往更专门针对特定的数据视图而构建,因此实际上不允许更复杂的分析。...星型模型不支持业务实体之间的多对多关系 - 至少不是很自然。 通常,这些关系在星型模型中被简化以符合简单的维度模型。 驱动Wikipedia

    2.3K10

    数据库关系代数基本运算_不是关系型的数据库

    1.2 实体完整性规则说明 ⑴ 一个基本表通常对应现实世界的一个实体集; ⑵ 实体在现实世界中是可区分的,它们具有某种唯一性的标识,关系模型中以主码作为唯一性标识; ⑶ 主码中的属性即主属性不能取空值。...⑶ 外码并不一定发与相对应的主码同名,但实际应用中为了方便识别,一般使用同名; ⑷ 当参照完整性约束和实体完整性约束无法同时满足时,优先满足实体完整性约束,如成绩关系中学号和课程号分别参照学生关系和课程关系中的主码...θ不为“=”的连接称为非等值连接 select * from emp e join dept d on e.sal > d.avgsal ⑵ 等值连接 θ为“=”的连接称为等值连接,它是从关系...select * from emp natural join dept ⑷ 外连接 两个关系R和S在做自然连接时,选择两个关系在公共属性上值相等的元组构成新的关系。...小结: 在关系代数运算中,并、差、笛卡儿积、选择和投影这5种运算为基本的运算,其他三种运算交、连接、除,均可使用这5种基本运算来表达。

    2K20

    【数据库设计和SQL基础语法】--数据库设计基础--数据规范化和反规范化

    Boyce-Codd范式(BCNF) 定义: 在3NF的基础上,要求任何非主键列不依赖于主键的任何超键。 目的: 消除主键依赖产生的问题,确保表的完全依赖关系。...第五范式(5NF) 定义: 在4NF的基础上,处理半依赖和连接依赖。 目的: 保证数据表中没有隐含的依赖关系,进一步提高数据的一致性和稳定性。...使用计算字段: 引入计算字段,存储在其他表中的计算结果,以减轻查询时的计算负担。 注意事项: 反规范化是一种权衡,需要根据具体情况谨慎使用,以避免引入不一致性和维护困难。...反规范化在某些特定场景下是有益的,但设计者需要仔细评估数据库系统的需求和性能目标,以确定何时使用反规范化技术。...四、 示例与案例分析 4.1 数据规范化的实例 假设我们有一个简化的在线图书馆系统,包括以下实体:图书(Book)、作者(Author)、出版社(Publisher),以及它们之间的关系。

    62110

    【读书笔记】《 Hadoop构建数据仓库实践》第2章

    规范化程度越高,划分的表就越多,在查询数据时越有可能使用表连接操作。而如果连接的表过多,会影响查询的性能。关键的问题是要依据业务需求,仔细权衡数据查询和数据更新的关系,制定最适合的规范化程度。...假设有一个表R,其中的属性有A,B,C,D,E,以A和B为复合主键,R={A,B,C,D,E},如果存在有非主键属性,比如说C可以功能性决定B,C→B,而B是主键的一部分,这时第三正则化是没有办法分辨出来这种错误的...2.2.2 维度规范化 与关系模型类似,维度也可以进行规范化。对维度的规范化(又叫雪花化),可以去除冗余属性,是对非规范化维度做的规范化处理。...所谓的“雪花化”就是将星型模式中的维度表进行规范化处理。当所有的维度表完成规范化后,就形成了以事实表为中心的雪花型结构,即雪花模式。...ERD传统上与高度规范化的关系模型联系密切,但该技术在维度模型中也被广泛使用。在维度模型的ERD中,实体由事实表和维度表组成,关系体现为在事实表中引用维度表的主键。

    97120

    什么是“无流水线”实时数据分析?

    为实现实时分析,通常需要付出巨大的努力来实现查询层。许多组织转向开源替代方案,如 Apache Druid 或 Presto,以及在单独的流水线中进行数据非规范化,以摄取各种数据源用于多表查询。...适当的实时分析依赖于各种数据转换和数据清理过程。此外,预聚合(如非规范化等操作的预先计算)也被使用。(非规范化是指向关系数据库添加预计算的冗余数据,以改进读取性能。)...无流水线的实时分析替代方案可以显着减少组织在实时分析项目中面临的麻烦。 通过使用多表连接,您可以消除非规范化过程,并简化实时分析过程,在内部管理和实现数据预聚合方面提供重大优势。...连接用于将两个或多个表中的数据合并到统一的列关系数据库中。CelerData 称其在开源 StarRocks 中提供的连接对实时分析至关重要。...获得灵活性 采用这种“无流水线”策略的最重要优势之一是灵活性。与强制组织将多个表预先连接到一个宽表的传统解决方案不同,无流水线分析允许它们在数据库中保持各个表。

    8110

    数据仓库②-数据仓库与数据集市建模

    以事实表为核心,维表围绕核心呈星形分布; 2. 雪花模式 雪花模式(Snowflake Schema)是对星形模式的扩展,每个维表可继续向外连接多个子维表。...下图为使用雪花模式进行维度建模的关系结构: ? 星形模式中的维表相对雪花模式来说要大,而且不满足规范化设计。雪花模型相当于将星形模式的大维表拆分成小维表,满足了规范化设计。...然而这么设计又一次"逆规范化"了:事务标识码非主码却决定事务标识时间,显然违背了3NF。但现在我们是为数据仓库建模,所以这样做是OK的。另外在分布式的数据仓库中,这个字段十分重要。...很多书将它们称为"数据仓库建模方法",但笔者认为数据仓库建模体系更能准确表达意思,请允许我自作主张一次吧:)。下面首先来介绍规范化数据仓库。...总之各有利弊,具体实施时需要仔细的权衡。 小结 数据仓库建模是一个综合性技术,需要使用到ER建模、关系建模、维度建模等技术。而且当企业业务复杂的时候,这部分工作更是需要专门团队与业务方共同合作来完成。

    5.3K72

    SQL面试 100 问

    主键字段必须唯一且非空,每 个表可以有且只能有一个主键。外键约束(FOREIGN KEY),用于表示两个表之间的引用关系。...由于非规范化的数据库存在冗余,可能导致数据的插入、删除、修改异常等问题,因此引入了规范化过程。...另外,反规范化(Denormalization)是在完成规范化之后执行的相反过程。反规范化通过增加冗余信息,减少 SQL 连接查询 的次数,从而减少磁盘 IO 来提高查询时的性能。...InnoDB 支持行级 锁和多版本一致性的非锁定读取,能够提高并发访问和性能。InnoDB 使用聚集索引存储数据,能够减少使用主键查找时的磁 盘 I/O。...答案: 数据库在实际执行连接查询时,可以采用以下三种物理方式: 嵌套循环连接(Nested Loop Join),针对驱动表中的每条记录,遍历另一个表找到匹配的数据,相当于两层循环。

    2.5K22

    划重点!必备 SQL 查询优化技巧,提升网站访问速度

    在这篇文章中,我将介绍如何识别导致性能出现问题的查询,如何找出它们的问题所在,以及快速修复这些问题和其他加快查询速度的方法。...在这篇文章中,我将介绍如何识别导致性能出现问题的查询,如何找出它们的问题所在,以及快速修复这些问题和其他加快查询速度的方法。...解决 你应该避免(https://dev.mysql.com/doc/refman/5.7/en/table-scan-avoidance.html)这种全部表浏览的查询,因为他使用非索引字段order_id...它们做了它们不该做的事了吗?这里能做什么优化吗? 这个例子中,我们把licenses 表和posts 表通过order_id 连接起来同时限制post type 为shop_order。...您可以通过创建数据表来存储许可数据,以及所有许可用户标识和产品标识符来对数据进行非规范化(反规范化)处理,并针对特定客户进行查询。

    4.8K80

    Python程序员面试常用基础问题解析

    如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参数时,那就使要用args;如果我们不知道要往函数中传入多少个关键词参数,或者想传入字典的值作为关键词参数时,那就要使用kwargs...HTTP连接:get和post的区别? GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。...而在NoSQL中除了这种规范化的外部数据表做法以外,我们还能用如下的非规范化方式把外部数据直接放到原数据集中,以提高查询效率。缺点也比较明显,更新审核人数据的时候将会比较麻烦。 d....SQL中可以使用JOIN表链接方式将多个关系数据表中的数据用一条简单的查询语句查询出来。NoSQL暂未提供类似JOIN的查询方式对多个数据集中的数据做查询。...所以大部分NoSQL使用非规范化的数据存储方式存储数据。 e. SQL中不允许删除已经被使用的外部数据,而NoSQL中则没有这种强耦合的概念,可以随时删除任何数据。 f.

    61320

    教你七步优化数据库

    实施者和用户必须共同努力,以了解业务需求及其驱动因素;然后他们需要使用最低侵入性的过程来满足这些要求。        构建摘要表,添加索引,强制执行优先级和非规范化数据的主要原因是提高性能。...允许数据存储一次,然后通过视图转换,减少数据冗余,确保一致性并简化数据管理 三、添加索引,范围从简单的技术(如二级索引)到复杂的结构(如覆盖索引,连接索引或聚合索引) l 提供一个主要优点,因为系统与基础数据表在同时维护它们...六、考虑“非理性”摘要和非规范化来定制特定业务流程或报告的数据模型 l 当期望的性能超过灵活分析的需求时,需要结构来解决单个功能时 l 在考虑成本效益分析时,包括更高的数据管理和资源成本 l 通过维护基础细节数据来最小化影响...它还需要做出支持长期和短期需求的决策。在某些情况下,您可以创建摘要表或添加后来会丢弃的非规范化数据模型。只要丢弃表不会导致中断或大量应用程序更改,这是可以接受的。...确保这一点的一种方法是尽可能避免使用汇总或非规范化表作为更多下游应用程序的输入。

    70600

    Power BI: 使用计算列创建关系中的循环依赖问题

    文章背景: 在表缺少主键无法直接创建关系,或者需要借助复杂的计算才能创建主键的情况下,可以利用计算列来设置关系。在基于计算列创建关系时,循环依赖经常发生。...当试图在新创建的PriceRangeKey列的基础上建立PriceRanges表和Sales表之间的关系时,将由于循环依赖关系而导致错误。...由于两个依赖关系没有形成闭环,所以循环依赖消失了,可以创建关系。 3 避免空行依赖 创建可能用于设置关系的计算列时,都需要注意以下细节: 使用DISTINCT 代替VALUES。...延伸阅读: (1)规范化与非规范化 规范化这一术语用于描述以减少重复数据的方式存储的数据。...假设有一个产品表具有一个唯一密钥值列(如产品密钥)和描述产品特征(包括产品名称、类别、颜色和尺寸)的其他列。当销售表仅存储密钥(如产品密钥)时,该表被视为是规范化的。

    82720
    领券