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

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

例如–客户名称与客户帐号和联系信息相关,它们可能在同一表中。各个表之间也可能存在关系(例如,客户到帐户)。 Q18。什么是指数? 索引是一种性能调整方法,它允许从表中更快地检索记录。...交叉联接产生两个表的叉积或笛卡尔积,而自然联接基于两个表中具有相同名称和数据类型的所有列。 Q28。什么是SQL中的子查询? 子查询是另一个查询中的查询,其中定义了查询以从数据库中检索数据或信息。...相关子查询:这些查询从外部查询中引用的表中选择数据。它不被视为独立查询,因为它引用另一个表并引用一个表中的列。 不相关的子查询:此查询是一个独立的查询,在主查询中替换了子查询的输出。 Q30。...约束有两个级别,即: 列级约束 表级约束 Q44。如何从两个表中获取公用记录? 您可以使用INTERSECT从两个表中获取公用记录。...有很多方法可以从字符串中提取字符。例如: 从学生中选择SUBSTRING(StudentName,1,5)作为学生名 Q53。SQL和PL / SQL之间的主要区别是什么?

6.9K22

SQL高级查询方法

子查询的例子可以参考笔试题中的例子,SQL笔试50题(上),SQL笔试50题(下) 4.9 联接 join 通过联接,可以从两个或多个表中根据各个表之间的逻辑关系来检索数据。...联接条件可通过以下方式定义两个表在查询中的关联方式: 指定每个表中要用于联接的列。典型的联接条件在一个表中指定一个外键,而在另一个表中指定与其关联的键。...联接条件与 WHERE 和 HAVING 搜索条件相结合,用于控制从 FROM 子句所引用的基表中选定的行。 比如下列联接因为是内部联接,因此也可以改写为在WHERE条件中指定联接。...左向外部联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某一行在右表中没有匹配行,则在关联的结果集行中,来自右表的所有选择列表列均为空值。...join_condition 定义用于对每一对联接行进行求值的谓词(比较运算符或关系运算符)。 当 SQL Server 处理联接时,查询引擎会从多种可行的方法中选择最有效的方法来处理联接。

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

    【22】进大厂必须掌握的面试题-30个Informatica面试

    6.如何提高木匠转换的性能? 下面是改善Joiner Transformation性能的方法。 尽可能在数据库中执行联接。 在某些情况下,这是不可能的,例如从两个不同的数据库或平面文件系统联接表。...永久缓存 默认情况下,在成功完成各个会话后,将删除查找缓存,但是我们可以配置为保留缓存,以备下次使用。 共享缓存 我们可以在多个转换之间共享查找缓存。我们可以在同一映射中的转换之间共享未命名的缓存。...插入:–选择此选项可在目标表中插入一行。 删除:–选择此选项可从表中删除行。 更新:-在这种情况下,您有以下选择: 作为更新进行更新:–如果目标表中存在每行,则更新标记为要更新的行。...在“查找”中,从目标表中获取数据,并仅将CUSTOMER_ID端口从源发送到查找。 ? 给出如下查询条件: ? 然后,将其余的列从源发送到一个路由器转换。 ?...在路由器中创建两个组,并给出如下条件: ? 对于新记录,我们必须生成新的customer_id。为此,请使用一个序列生成器,并将下一列连接到表达式。

    6.7K40

    Hbase面试题(面经)整理

    范围越小,性能越高; 3. scan 可以通过 setFilter 方法添加过滤器,这也是分页、多条件查询的基础。 3.全表扫描,即直接扫描整张表中所有行记录。 8....默认情况下,执行写入时会写到两个地方:预写式日志(write-ahead log,也称 HLog)和 MemStore。HBase 的默认方式是把写入动作记录在这两个地方,以保证数据持久化。...大概步骤为: 从zookeeper中获取.ROOT.表的位置信息,在zookeeper的存储位置为/hbase/root-region-server; 根据.ROOT.表中信息,获取.META.表的位置信息...原因如下:数据写到store以后是先缓存在memstore中,同一个region中存在多个列族则存在多个store,每个store都一个memstore,当其实memstore进行flush时,属于同一个...为什么不建议在 HBase 中使用过多的列族 在 Hbase 的表中,每个列族对应 Region 中的一个Store,Region的大小达到阈值时会分裂,因此如果表中有多个列族,则可能出现以下现象: 一个

    1.7K30

    【建议收藏】MySQL 三万字精华总结 —锁机制和性能调优(四)

    需要强调的一点是,InnoDB 中行级锁是基于索引实现的,临键锁只与非唯一索引列有关,在唯一索引列(包括主键列)上不存在临键锁。 对于行的查询,都是采用该方法,主要目的是解决幻读的问题。...死锁 死锁产生: 死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环 当事务试图以不同的顺序锁定资源时,就可能产生死锁。...= 则不行,会导致全表扫描 一般性建议 对于单键索引,尽量选择针对当前query过滤性更好的索引 在选择组合索引的时候,当前Query中过滤性最好的字段在索引字段顺序中,位置越靠前越好。...在选择组合索引的时候,尽量选择可以能够包含当前query中的where字句中更多字段的索引 尽可能通过分析统计信息和调整query的写法来达到选择合适索引的目的 少用Hint强制索引 查询优化 永远小标驱动大表...不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。 更小的通常更好:一般情况下,应该尽量使用可以正确存储数据的最小数据类型。 简单就好:简单的数据类型通常需要更少的CPU周期。

    95410

    这是我见过最有用的Mysql面试题,面试了无数公司总结的(内附答案)

    SELECT:从数据库中选择特定数据 INSERT:将新记录插入表中 UPDATE:更新现有记录 DELETE:从表中删除现有记录 15. SQL中有哪些不同的DCL命令?...数据库查询可以是选择查询或动作查询。 24.什么是子查询? 子查询是另一个查询中的SQL查询。它是Select语句的子集, 其返回值用于过滤主查询的条件。 25.子查询的类型是什么?...复合主键是在表中的多个列(多个字段的组合)上创建的主键。 42.什么是外键? 一个FOREIGN KEY是用于两个表连接在一起的关键。...假设表中有一个字段是可选的,并且可以在不向可选字段添加值的情况下插入记录 则该字段将以NULL值保存。 46. NULL值,零和空白之间有什么区别?...SQL SELECT的顺序是什么? SQL SELECT语句的顺序如下 选择,从,在哪里,分组依据,拥有,订购依据。 89.如何在SQL中显示当前日期?

    27.1K20

    2020年MySQL数据库面试题总结(50道题含答案解析)

    UNIX_TIMESTAMP 是从 MySQL 时间戳转换为 Unix 时间戳的命令 FROM_UNIXTIME 是从 Unix 时间戳转换为 MySQL 时间戳的命令 11、列对比运算符是什么?...因此,在这种情况下,能被存储在 salary 列中的值的范围是从-9999999.99 到9999999.99。 23、MySQL 有关权限的表都有哪几个?...索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。 32、数据库中的事务是什么?...外连接  其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。...(选择几条) (1)Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可以过滤掉最大数量记录的条件必须写在 Where 子句的末尾.HAVING 最后。

    4K20

    【建议收藏】MySQL 三万字精华总结 —锁机制和性能调优(四)「建议收藏」

    死锁 死锁产生: 死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环 当事务试图以不同的顺序锁定资源时,就可能产生死锁。...在不损失精确性的情况下,长度越短越好 key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的 ref(显示索引的哪一列被使用了...函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描 存储引擎不能使用索引中范围条件右边的列 尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select is...= 则不行,会导致全表扫描 一般性建议 对于单键索引,尽量选择针对当前query过滤性更好的索引 在选择组合索引的时候,当前Query中过滤性最好的字段在索引字段顺序中,位置越靠前越好。...不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。 更小的通常更好:一般情况下,应该尽量使用可以正确存储数据的最小数据类型。 简单就好:简单的数据类型通常需要更少的CPU周期。

    86630

    MySQL 给你问懵了?50 道 MySQL 高频面试题详解来了

    UNIX_TIMESTAMP 是从 MySQL 时间戳转换为 Unix 时间戳的命令 FROM_UNIXTIME 是从 Unix 时间戳转换为 MySQL 时间戳的命令 11、列对比运算符是什么?...因此,在这种情况下,能被存储在 salary 列中的值的范围是从-9999999.99 到9999999.99。 23、MySQL 有关权限的表都有哪几个?...索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。 32、数据库中的事务是什么?...外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。...(选择几条) (1)Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可以过滤掉最大数量记录的条件必须写在 Where 子句的末尾.HAVING 最后。

    2.7K11

    NoSQL —— 哪个更适合你的数据?

    数据是数据科学所有子领域的支柱。无论你正在构建的建筑物的大小或应用如何,你都需要获取和分析数据。大多数情况下,你需要的这些数据都存储在DBMS(数据库管理系统)中。...让我们从最开始说起。为什么我们有两种与数据库交互的方法? 简单来说,SQL和NoSQL与不同类型的数据库交互。SQL是用于与关系数据库交互的方法,而NoSQL是用于与非关系型数据库交互的方法。...我可以用飞行员的ID来访问飞行员表中有关飞行员的信息以及航班表中该飞行员正在处理的航班信息。...1 r2I2zlm5bmvfs9UHWqTF-A.png 因此,在飞行员表中,PoilotId是主键;而在航班表中,它是外键。PilotId在此用于形成两个表之间的关系。...因此,对于初学者来说,从SQL开始,然后转向NoSQL可能是最佳选择。 根据经验,如果你正在处理RDBMS(关系数据库管理系统),你想分析数据的行为或构建自定义的仪表盘,则SQL是更好的选择。

    2.2K74

    致BI用户: 性能调优诀窍了解一下,让报表快起来

    比如亿信ABI中,同样一个查询需求,为什么别人的计算结果获取时间从1分钟变成3秒钟?可能是你不知道ABI具有性能调优的精髓所在。...为了解决广大BI工程师的调优难题,今天从SQL个数和过滤条件两个方面来跟大家分享一下,亿信ABI的性能调优小诀窍。...截图如下所示: 小诀窍之二:优化过滤条件,善用索引 亿信ABI分析表中的过滤条件在报表计算时都会转换成SQL语句中的where条件,在大数据量的情况下,where条件不够优化,会直接导致SQL语句运行效率低下...举例如下: 优化前: 主题表ESEN_BI的列pid上有索引,原过滤条件写法为: left(ESEN_BI.pid,1)>='1' and left(ESEN_BI.pid,1)<='3' 由于在列上用了...,赶紧拿出你的小本本记下来吧: 在索引列上使用函数时不会使用索引,如果一定要使用索引,建议建立函数索引; 索引列中有NULL值时,数据库查询不会走索引; 如果需要排序时,尽量根据已建立索引的列排序; 如果发现过滤条件和排序所需要的列没有索引时

    87320

    一个执行计划异常变更的案例 - 外传之绑定变量窥探

    如上SQL使用的是字面值或常量值作为检索条件,接下来我们使用绑定变量的方式来执行SQL,为了更好地说明,此处我们先关闭绑定变量窥探(默认情况下,是开启的状态),他是什么我们稍后再说。 ?...发现仍旧是全表扫描,我们之前知道B值记录只有一条,应该使用索引范围扫描,而且这两个SQL执行计划中Rows、Bytes和Cost值完全一致。...总结来说,绑定变量窥探会于第一次硬解析的时候,“窥探“绑定变量的值,进而根据该值的信息,辅助选择更加准确的执行计划,就像上述示例中第一次执行A为条件的SQL,知道A值占比重接近全表数据量,因此选择了全表扫描...但若绑定变量列分布不均匀,则绑定变量窥探的副作用会很明显,第二次以后的每次执行,无论绑定变量列值是什么,都会仅使用第一次硬解析窥探的参数值,这就有可能选择错误的执行计划,就像上面这个实验中说明的,第二次使用...简而言之,数据分布不均匀的列使用绑定变量,尤其在11g之前,受绑定变量窥探的影响,可能会造成一些特殊值作为检索条件选择错误的执行计划。

    66530

    MySQL经典52题

    动态MyISAM表将具有像TEXT,BLOB等字段,以适应不同长度的数据类型。MyISAM Static在受损情况下更容易恢复。9.如果一个表有一列定义为TIMESTAMP,将发生什么?...UNIX_TIMESTAMP是从Mysql时间戳转换为Unix时间戳的命令 FROM_UNIXTIME是从Unix时间戳转换为Mysql时间戳的命令15.列对比运算符是什么?...因此,在这种情况下,能被存储在salary列中的值的范围是从-9999999.99到9999999.99。26.mysql有关权限的表都有哪几个?...索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。35.数据库中的事务是什么?...外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。

    11710

    1w字MySQL索引面试题(附md文档)

    优点: 数据访问更快 ,因为索引和数据保存在同一个B+树中,因此从聚簇索引中获取数据比非聚簇索引更快。 聚簇索引对于主键的排序查找和范围查找速度非常快。...在页34和35中定位到具体的记录。 但是这个B+树的叶子节点只存储了c2和c1(主键)两个列,所以我们必须再根据主键值去聚簇索引中再查找一遍完整的用户记录。...所需获得列中有大量的非索引列,索引就需要到表中找到相应的列的信息,这就叫回表。...总结: 未开启索引下推: 根据筛选条件在索引树中筛选第一个条件 获得结果集后回表操作 进行其他条件筛选 再次回表查询 开启索引下推:在条件查询时,当前索引树如果满足全部筛选条件,可以在当前树中完成全部筛选过滤...主键(唯一索引)匹配 全值匹配(单值匹配) 最左前缀匹配 范围匹配 索引扫描 全表扫描 一般性建议 Ø 对于单键索引,尽量选择过滤性更好的索引(例如:手机号,邮件,身份证) Ø 在选择组合索引的时候,过滤性最好的字段在索引字段顺序中

    33920

    『数据库』数据库的查询可不是只知道Select就可以的--关系数据库系统的查询处理

    (s),检索内层循 环(SC表)中的每一个元组(sc) 检查这两个元组在连接属性(Sno)上是否相等 如果满足连接条件,则串接后作为结果输出,直到外 层循环表中的元组处理完为止。...(probing phase,也称为连接阶段join phase) 对另一个表(SC表)进行一遍处理 把SC表的元组也按同一个hash函数(hash码是连接属性)进 行散列 把SC元组与桶中来自Student...表并与之相匹配的元组连接起来 关系数据库系统的查询优化 查询优化在关系数据库系统中有着非常重要的地位 关系查询优化是影响关系数据库管理系统性能的关键因素 由于关系表达式的语义级别很高,使关系系统可以从关系表达式中分析查询语义...3.查询优化的优点 用户不必考虑如何最好地表达查询以获得较好的效率 系统可以比用户程序的“优化”做得更好 (1)优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息。...物理优化就是要选择高效合理的操作算法或存取路径,求得优化的查询计划 物理优化方法 基于规则的启发式优化 启发式规则是指那些在大多数情况下都适用,但不是在每种情况下都是适用的规则。

    1.3K20

    Mysql面试题

    MyISAM Static在受损情况下更容易恢复。 9. 如果一个表有一列定义为 TIMESTAMP,将发生什么? 每当行被更改时,时间戳字段将获取当前时间戳。 10....索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。 25. 数据库中的事务是什么?...外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。...触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。 37. 说说对SQL语句优化有哪些方法?...(选择几条) Where子句中:where表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后。

    1.2K51

    架构面试题汇总:mysql索引全在这!(五)

    在MySQL中,B树(特别是InnoDB存储引擎使用的B+树)是索引的常用数据结构。 问题2:MySQL中有哪些类型的索引?它们各自的优势和劣势是什么?...这通常发生在查询的所有列都包含在索引中的情况下。 考虑索引的列顺序:在多列索引中,列的顺序很重要。应将查询中最常用作搜索条件、过滤条件或排序条件的列放在索引的前面。...因此,在设计复合索引时,应确保索引的列顺序与查询条件中的列顺序相匹配。 选择性和基数的考虑:在选择复合索引的列时,应考虑列的选择性和基数。...在这种情况下,全表扫描可能更快。 缓存的影响:如果表的数据已经被加载到内存中(例如,在InnoDB的缓冲池中),那么全表扫描可以直接从内存中读取数据,速度非常快。...在某些情况下,完整索引可能提供更好的查询性能和精确性。因此,在选择使用前缀索引还是完整索引时,应根据具体的查询需求、数据分布和性能要求进行评估和测试。

    25610

    MySQL性能优化(四):如何高效正确的使用索引

    索引的选择性是指,不重复的索引值(也称为基数)和表数据的记录总数T的比值,范围从1/T到1之间。索引的选择性越高,则查询效率越高,因为选择性高的索引可以让MySQL在查找时过滤掉更多的行。...2)当需要对多个索引做联合操作室(通常有多个OR条件),通常需要耗费大量的CPU和内存资源在算法的缓存、排序和合并操作上。特别是当其中有些索引的选择性不高,需要合并扫描返回的大量数据的时候。...然而性能不只是依赖于所有索引列的选择性,也和查询条件的具体值有关,也就是和值的分布有关(需要根据那些运行频率最高的查询来调整索引列的顺序,让这种情况下的索引列的选择性最高)。...聚簇索引把索引和数据都放在同一个B-Tree中,因此从聚簇索引中获取数据比从非聚簇索引中要快。 使用覆盖索引扫描的查询可以直接使用页节点中的主键值。...可以通过写一些复杂的访问information_schema表的查询来找,不过还有两个更简单的方法就是使用Shlomi Noach的common_schema中的一些视图来定位(common_schema

    2.1K20

    PHP经典面试题合集

    一般情况下,要删除一张表中的主键必须首先要确保其它表中的没有相同外键(即该表中的主键没有一个外键和它相关联)。 索引(index) 是用来快速地寻找那些具有特定值的记录。...InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。...6、 表锁差异 MyISAM:只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据...10、 CURD操作 MyISAM:如果执行大量的SELECT,MyISAM是更好的选择。 InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。...A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。

    1.3K20
    领券