RDBMS 是迄今为止最常用的数据库之一,因此SQL 技能在大多数工作角色中都是必不可少的。在这篇 SQL 面试问题文章中,我将向您介绍有关 SQL(结构化查询语言)的最常见问题。本文是您学习与 SQL、Oracle、MS SQL Server 和 MySQL 数据库相关的所有概念的完美指南。我们的前 65 个 SQL 面试问题文章是一站式资源,您可以从中提高面试准备。
想要提升自己的技能以在职业生涯中取得成功吗?查看热门技术。
让我们开始吧!
SQL 和 MySQL 有什么区别?
SQL 有哪些不同的子集?
DBMS 是什么意思?它有哪些不同的类型?
SQL中的表和字段是什么意思?
SQL 中的连接是什么?
SQL中的CHAR和VARCHAR2数据类型有什么区别?
什么是主键?
什么是约束?
DELETE 和 TRUNCATE 语句有什么区别?
什么是唯一键?
SQL | MySQL |
---|---|
SQL 是一种标准语言,代表基于英语的结构化查询语言 | MySQL 是一个数据库管理系统。 |
SQL是关系型数据库的核心,用于访问和管理数据库 | MySQL 是一个 RDMS(关系数据库管理系统),例如 SQL Server、Informix 等。 |
数据定义语言 (DDL) – 它允许您对数据库执行各种操作,例如 CREATE、ALTER 和 DELETE 对象。
数据操作语言(DML)——它允许您访问和操作数据。它可以帮助您从数据库中插入、更新、删除和检索数据。
数据控制语言(DCL)——它允许您控制对数据库的访问。示例 – 授予、撤销访问权限。
数据库管理系统 ( DBMS ) 是与用户、应用程序和数据库本身交互以捕获和分析数据的软件应用程序。 数据库是结构化的数据集合。
DBMS 允许用户与数据库进行交互。 存储在数据库中的数据可以修改、检索和删除,可以是任何类型,如字符串、数字、图像等。
DBMS 有两种类型:
关系数据库管理系统:数据存储在关系(表)中。示例——MySQL。
非关系数据库管理系统:没有关系、元组和属性的概念。示例 – MongoDB
让我们转到此 SQL 面试问题中的下一个问题。
关系数据库管理系统 (RDBMS) 是一组应用程序和功能,允许 IT 专业人员和其他人开发、编辑、管理关系数据库并与之交互。大多数商业关系数据库管理系统使用结构化查询语言 (SQL) 来访问以表格形式存储的数据库。 RDBMS 是全球企业中使用最广泛的数据库系统。它提供了一种存储和检索大量数据的稳定方法。
通常,数据库保存可在其他应用程序中访问和使用的数据集合。数据库平台的开发、管理和使用都由数据库管理系统支持。
关系数据库管理系统 (RDBMS) 是一种数据库管理系统 (DBMS),它将数据存储在链接相关数据组件的基于行的表结构中。RDBMS 包含确保数据的安全性、准确性、完整性和一致性的功能。这与数据库管理系统使用的文件存储不同。
以下是数据库管理系统和关系数据库管理系统之间的一些进一步区别:
允许使用系统的用户数量 DBMS 一次只能处理一个用户,而 RDBMS 可以处理多个用户。 硬件和软件规范 与 RDBMS 相比,DBMS 需要更少的软件和硬件。 信息量 RDBMS 可以处理任何数量的数据,从微小到巨大,而 DBMS 仅限于少量。 数据库的结构 数据以分层格式存储在 DBMS 中,而 RDBMS 使用带有作为列名的表头和保存相关值的行的表。 ACID 原则的实施 DBMS 不使用原子性、一致性、隔离性和持久性 (ACID) 概念进行数据存储。另一方面,RDBMS 使用 ACID 模型来组织数据并确保一致性。 分布式 数据库 DBMS 不会为分布式数据库提供完整的支持,而 RDBMS 会。 受管理的程序 DBMS 专注于保存存在于计算机网络和系统硬盘中的数据库,而 RDBMS 帮助管理其合并的数据表之间的关系。 支持 数据库规范化 RDBMS 可以规范化,但 DBMS 不能规范化。
自联接是一种可用于连接两个表的联接。因此,它是一元关系。表的每一行都附加到自身以及同一个表的所有其他行以自联接。因此,自联接主要用于组合和比较同一数据库表中的行。
SELECT 命令从一个或多个数据库表或视图中获取零个或多个行。在大多数应用程序中,最常用的数据操作语言 (DML) 命令是 SELECT。SELECT 查询定义了一个结果集,但没有定义如何计算它,因为 SQL 是一种声明性编程语言。
以下是与 SELECT 查询结合使用的一些常见 SQL 子句:
WHERE子句:在 SQL 中,WHERE 子句用于根据特定条件过滤所需的记录。 ORDER BY子句:SQL 中的 ORDER BY 子句用于根据指定字段 (DESC) 以升序 (ASC) 或降序 (DESC) 顺序对数据进行排序。 GROUP BY子句:SQL 中的 GROUP BY 子句用于对具有相同数据的条目进行分组,并且可以与聚合方法一起使用以获取汇总的数据库结果。 SQL 中的HAVING子句结合 GROUP BY 子句用于过滤记录。它与 WHERE 不同,因为 WHERE 子句不能过滤聚合记录。
UNION 运算符用于组合两个表的结果,同时还删除重复的条目。 MINUS 运算符用于从第一个查询返回行,而不是从第二个查询返回行。 INTERSECT 运算符用于将两个查询的结果组合成一行。 在运行上述任一 SQL 语句之前,必须满足某些要求—— 在子句中,每个 SELECT 查询必须具有相同数量的列。 列中的数据类型也必须具有可比性。 在每个 SELECT 语句中,列的顺序必须相同。
在任何变量声明之后,声明一个游标。SELECT 语句必须始终与游标定义相结合。
要启动结果集,请将光标移到它上面。在从结果集中获取行之前,必须执行 OPEN 语句。
要检索并转到结果集中的下一行,请使用 FETCH 命令。
要禁用光标,请使用 CLOSE 命令。
最后,使用 DEALLOCATE 命令删除游标定义并释放与其相关的资源。
数据库中有不同类型的关系:
一对一- 这是两个表之间的连接,其中一个表中的每条记录对应于另一个表中一条记录的最大值。
一对多和多对一——这是最常见的连接,其中一个表中的一条记录链接到另一个表中的多条记录。
多对多——这在定义需要在每一侧都有多个实例的关系时使用。
自引用关系——当表必须声明与自身的连接时,这是采用的方法。
OLTP 或在线事务处理允许大量人员实时执行大量数据库事务,通常是通过 Internet。当数据库中的数据被更改、插入、删除或查询时,就会发生数据库事务。
OLTP 代表在线事务处理,而 OLAP 代表在线分析处理。OLTP 是一个在线数据库修改系统,而 OLAP 是一个在线数据库查询响应系统。
创建空表: 使用 INTO 运算符将一个表的记录提取到新表中,同时将所有条目的 WHERE 子句设置为 false,可以创建具有相同结构的空表。结果,SQL 创建了一个具有重复结构的新表来接受获取的条目,但是由于 WHERE 子句处于活动状态,因此没有任何内容存储到新表中。
1986 年,由计算机科学教授 Michael Stonebraker 领导的一个团队以 Postgres 的名义创建了 PostgreSQL。它旨在通过确保系统中的数据完整性和容错性来帮助开发人员开发企业级应用程序。PostgreSQL 是一个企业级、多功能、弹性、开源、对象关系数据库管理系统,支持可变工作负载和并发用户。国际开发者社区一直支持它。由于其容错特性,PostgreSQL 在开发人员中获得了巨大的吸引力。 它是一个非常可靠的数据库管理系统,其高水平的弹性、完整性和准确性值得感谢 20 多年的社区工作。许多在线、移动、地理空间和分析应用程序使用 PostgreSQL 作为它们的主要数据存储或数据仓库。
SQL 注释用于澄清部分 SQL 语句并防止 SQL 语句被执行。注释在许多编程语言中都非常重要。Microsoft Access 数据库不支持这些注释。因此,在 Mozilla Firefox 和 Microsoft Edge 的示例中使用了 Microsoft Access 数据库。 单行注释:它以两个连续的连字符 (–) 开头。 多行注释:以 /* 开头,以 */ 结尾。
您可以使用 NVL 函数将空值替换为默认值。如果第一个参数为空,则函数返回第二个参数的值。如果第一个参数不是 null,则将其保留。
这个函数在 Oracle 中使用,而不是在 SQL 和 MySQL 中。MySQL 有 IFNULL() 而不是 NVL() 函数,SQL Server 有 ISNULL() 函数。
让我们转到此 SQL 面试问题中的下一个问题。
使用字符操作例程更改、提取和编辑字符串。该函数将对输入字符串执行其操作,并在提供一个或多个字符和单词时返回结果。
SQL中的字符操作函数如下:
A) CONCAT(连接两个或多个值):此函数用于将两个或多个值连接在一起。第二个字符串总是附加到第一个字符串的末尾。
B) SUBSTR:此函数返回从给定起点到给定端点的一段字符串。
C) LENGTH:此函数以数字形式返回字符串的长度,包括空格。
D) INSTR:此函数计算字符串中字符或单词的精确数字位置。
E) LPAD:对于右对齐的值,它返回左侧字符值的填充。
F) RPAD:对于左对齐的值,它返回右侧字符值的填充。
G) TRIM:此函数从字符串的开头、结尾或两端删除所有已定义的字符。它还减少了浪费的空间量。
H) REPLACE:此函数用指定的其他字符串值替换单词的所有实例或字符串的一部分(子字符串)。
员工表
员工姓名 | 薪水 |
---|---|
一个 | 24000 |
C | 34000 |
D | 55000 |
乙 | 75000 |
F | 21000 |
G | 40000 |
H | 50000 |
选择 * 从(
选择员工姓名、工资、DENSE_RANK()
OVER(ORDER BY Salary DESC)r FROM Employee)
其中 r=&n;
找到第三高的工资集 n = 3
结果集中的 RANK() 函数定义了有序分区中每一行的排名。如果两行具有相同的排名,则排名中的下一个数字将是前一个排名加上重复的数量。例如,如果我们有 3 个第 4 级的记录,则指示的下一个级别是 7。
DENSE_RANK() 函数根据提供的列值为分区内的每一行分配一个不同的等级,没有间隙。它始终指示按优先顺序排列的排名。如果两行具有相同的排名,则此函数将为两行分配相同的排名,下一个排名是下一个连续数字。例如,如果我们有 3 个第 4 级的记录,则指示的下一个级别是 5。
问题 21。什么是表和字段?
表是在关系数据库中按行和列组织的数据组件的集合。表格也可以被认为是关系的有用表示。数据存储的最基本形式是表格。Employee 表的示例如下所示。
ID | 姓名 | 部门 | 薪水 |
---|---|---|---|
1 | 拉胡尔 | 销售量 | 24000 |
2 | 罗希尼 | 营销 | 34000 |
3 | 雪莱什 | 销售量 | 24000 |
4 | 塔伦 | 分析 | 30000 |
记录或行是表中的单个条目。在表中,一条记录表示连接数据的集合。例如,Employee 表有四个记录。
一个表由许多记录(行)组成,每一个记录都可以分解成更小的单元,称为字段(列)。ID、Name、Department 和 Salary 是上面 Employee 表中的四个字段。
UNIQUE 约束防止列中的相同值出现在两条记录中。UNIQUE 约束保证列中的每个值都是唯一的。
自联接是一种可用于连接两个表的联接。因此,它是一元关系。表的每一行都附加到自身以及同一个表的所有其他行以自联接。因此,自联接主要用于组合和比较同一数据库表中的行。
SELECT 命令从一个或多个数据库表或视图中获取零个或多个行。在大多数应用程序中,最常用的数据操作语言 (DML) 命令是 SELECT。SELECT 查询定义了一个结果集,但没有定义如何计算它,因为 SQL 是一种声明性编程语言。
以下是与 SELECT 查询结合使用的一些常见 SQL 子句:
SQL Essentials 培训和认证课程时间真实案例研究作业终身访问探索课程
WHERE 子句:在 SQL 中,WHERE 子句用于根据特定条件过滤所需的记录。 ORDER BY 子句:SQL 中的 ORDER BY 子句用于根据指定字段 (DESC) 以升序 (ASC) 或降序 (DESC) 顺序对数据进行排序。 GROUP BY 子句:SQL 中的 GROUP BY 子句用于对具有相同数据的条目进行分组,并且可以与聚合方法一起使用以获取汇总的数据库结果。 SQL 中的 HAVING 子句结合 GROUP BY 子句用于过滤记录。它与 WHERE 不同,因为 WHERE 子句不能过滤聚合记录。
UNION 运算符用于组合两个表的结果,同时还删除重复的条目。
MINUS 运算符用于从第一个查询返回行,而不是从第二个查询返回行。
INTERSECT 运算符用于将两个查询的结果组合成一行。在运行上述任一 SQL 语句之前,必须满足某些要求——
在该子句中,每个 SELECT 查询必须具有相同数量的列。
列中的数据类型也必须具有可比性。
在每个 SELECT 语句中,列的顺序必须相同。
让我们转到此 SQL 面试问题中的下一个问题。
在任何变量声明之后,声明一个游标。SELECT 语句必须始终与游标定义相结合。
要启动结果集,请将光标移到它上面。在从结果集中获取行之前,必须执行 OPEN 语句。
要检索并转到结果集中的下一行,请使用 FETCH 命令。
要禁用光标,请使用 CLOSE 命令。
最后,使用 DEALLOCATE 命令删除游标定义并释放与其相关的资源。
数据库中有不同类型的关系: 一对一 - 这是两个表之间的连接,其中一个表中的每条记录对应于另一个表中的一条记录的最大值。 一对多和多对一——这是最常见的连接,其中一个表中的一条记录链接到另一个表中的多条记录。 多对多——这在定义需要在每一侧都有多个实例的关系时使用。 自引用关系——当表必须声明与自身的连接时,这是采用的方法。
SQL 是一种数据库查询语言,允许您从数据库中编辑、删除和请求数据。以下语句是 SQL 语句的几个示例:
选择
插入
更新
删除
创建数据库
更改数据库
SQL 技能可帮助数据分析师从关系数据库中创建、维护和检索数据,将数据划分为列和行。它还使用户能够有效地检索、更新、操作、插入和更改数据。
SQL专家应该具备的最基本的能力是:
数据库管理
构建数据库
创建 SQL 子句和语句
SQL系统技能,如MYSQL、PostgreSQL
PHP 专业知识很有用。
分析 SQL 数据
使用 WAMP 和 SQL 创建数据库
OLAP 技能
临时表在 TempDB 中创建,并在最后一个连接关闭后自动删除。我们可能会使用临时表来存储和处理临时结果。当我们需要存储临时数据时,临时表就派上用场了。以下是创建临时表的语法:CREATE TABLE #Employee (id INT, name VARCHAR(25)) INSERT INTO #Employee VALUES (01, 'Ashish'), (02, 'Atul')
问题 33。如何在 Windows 11 中安装 SQL Server?
在 Windows 11 中安装 SQL Server Management Studio
第 1 步:单击 SSMS,它将带您进入 SQL Server Management Studio 页面。
第 2 步:此外,单击 SQL Server Management Studio 链接并点击保存文件。
第 3 步:将此文件保存到本地驱动器并转到文件夹。
第 4 步:将出现设置窗口,您可以在此处选择要保存文件的位置。第五步:点击安装。第六步:安装完成后关闭窗口。第 7 步:此外,返回开始菜单并搜索 SQL Server Management Studio。
第8步:此外,双击它,一旦出现登录页面就会出现。
第 9 步:您应该能够看到您的服务器名称。但是,如果这不可见,请单击服务器上的下拉箭头,然后点击浏览。
第 10 步:选择您的 SQL 服务器并单击连接。
之后,SQL 服务器将连接,Windows 11 将运行良好。
CASE 语句用于构造逻辑,其中一列的值由其他列的值确定。
至少一组 WHEN 和 THEN 命令构成 SQL Server CASE 语句。要测试的条件由 WHEN 语句指定。如果 WHEN 条件返回 TRUE,则 THEN 语句说明要做什么。
当没有任何 WHEN 条件返回 true 时,执行 ELSE 语句。END 关键字使 CASE 语句结束。
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END;
问题 35。NoSQL 与 SQL
综上所述,以下是 SQL 和 NoSQL 的五个主要区别:
关系数据库是 SQL,而非关系数据库是 NoSQL。
SQL 数据库具有指定的模式并采用结构化查询语言。对于非结构化数据,NoSQL 数据库使用动态模式。
SQL 数据库垂直扩展,但 NoSQL 数据库水平扩展。
NoSQL 数据库是文档、键值、图形或宽列存储,而 SQL 数据库是基于表的。
SQL 数据库擅长处理多行事务,而 NoSQL 擅长处理文档和 JSON 等非结构化数据。
问题 36。NOW() 和 CURRENT_DATE() 有什么区别?NOW() 返回一个常数时间,指示语句开始执行的时间。(在存储的函数或触发器中,NOW() 返回函数或触发语句开始执行的时间。NOW() 和 CURRENT_DATE() 之间的简单区别在于 NOW() 将获取当前日期和时间格式 'YYYY-MM_DD HH:MM:SS' 而 CURRENT_DATE() 将获取当天的日期 'YYYY-MM_DD'。
让我们转到此 SQL 面试问题中的下一个问题。
问题 37。MySQL 中的 BLOB 和 TEXT 是什么?
BLOB 代表 Binary Huge Objects,可用于存储二进制数据,而 TEXT 可用于存储大量字符串。BLOB 可用于存储二进制数据,包括图像、电影、音频和应用程序。BLOB 值的功能类似于字节字符串,但它们缺少字符集。因此,字节的数值完全依赖于比较和排序。 TEXT 值的行为类似于字符串或非二进制字符串。TEXT 的比较/排序完全依赖于字符集集合。
问题 38。如何删除 SQL 中的重复行?
如果 SQL 表有重复行,则必须删除重复行。
让我们假设下表作为我们的数据集:
ID | 姓名 | 年龄 |
---|---|---|
1 | 一个 | 21 |
2 | 乙 | 23 |
2 | 乙 | 23 |
4 | D | 22 |
5 | 乙 | 25 |
6 | G | 26 |
5 | 乙 | 25 |
以下 SQL 查询从表中删除重复的 id:DELETE FROM table WHERE ID IN ( SELECT ID, COUNT(ID) FROM table GROUP BY ID HAVING COUNT (ID) > 1);
问题 39。如何使用 SQL Server 创建存储过程?
存储过程是一段准备好的 SQL 代码,您可以保存和重复使用它。因此,如果您有一个经常创建的 SQL 查询,请将其保存为存储过程,然后调用它来运行它。您还可以为存储过程提供参数,以便它可以根据给定参数的值进行操作。
存储过程语法
CREATE PROCEDURE 过程名称
作为
sql_statement
去;
执行存储过程
执行程序名称;
Q40。什么是数据库黑盒测试?
黑盒测试是一种软件测试方法,它涉及在不知道内部代码结构、实现细节或内部路由的情况下测试软件应用程序的功能。黑盒测试是一种软件测试,专注于软件应用程序的输入和输出,完全由软件需求和规范驱动。行为测试是它的另一个名称。问题 41。有哪些不同类型的 SQL 沙箱?
SQL ESSENTIALS 培训和认证SQL Essentials 培训和认证评论5 (10012)
MYSQL DBA 认证培训MySQL DBA 认证培训评论5 (6077)
MONGODB认证培训课程MongoDB认证培训课程评论4 (16063)
APACHE CASSANDRA 认证培训Apache Cassandra 认证培训评论5 (12657)
TERADATA 认证培训Teradata 认证培训评论5 (2814)
掌握 NEO4J 图形数据库认证培训掌握 Neo4j 图形数据库认证培训评论5 (981)
下一个
SQL Sandbox 是 SQL Server 中的一个安全环境,可以在其中运行不受信任的程序。有三种不同类型的 SQL 沙箱:
安全访问沙箱:在这种环境中,用户可以执行 SQL 活动,例如构建存储过程、触发器等,但他们无法访问内存或创建文件。
用于外部访问的沙箱:用户可以访问文件而无需更改内存分配。
不安全访问沙箱:这包含允许用户访问内存的不可信代码。
让我们转到此 SQL 面试问题中的下一个问题。
问题 42。MyISAM 表存储在哪里?
在 2009 年 12 月推出 MySQL 5.5 之前,MyISAM 是 MySQL 关系数据库管理系统版本的默认存储引擎。它基于较旧的 ISAM 代码,但带有许多额外的功能。每个 MyISAM 表在磁盘上被分成三个文件(如果它没有分区的话)。文件名以表名开头,以指示文件类型的扩展名结尾。表定义存储在 a.frm 文件中,但是该文件不是 MyISAM 引擎的一部分;相反,它是服务器的一部分。数据文件的后缀是.MYD(MYData)。索引文件的扩展名是.MYI(MYIndex)。如果您丢失了索引文件,您总是可以通过重新创建索引来恢复它。
问题 43。如何在 SQL 中找到第 n 高的薪水? 最典型的面试问题是在一张表中找到第 N 个最高的薪水。这项工作可以使用dense rank() 函数来完成。员工表
员工姓名 | 薪水 |
---|---|
一个 | 24000 |
C | 34000 |
D | 55000 |
乙 | 75000 |
F | 21000 |
G | 40000 |
H | 50000 |
选择 * 从(
选择员工姓名、工资、DENSE_RANK()
OVER(ORDER BY Salary DESC)r FROM Employee)
其中 r=&n;
找到第二高的工资集 n = 2
要找到第三高的薪水,设置 n = 3,依此类推。
表是指以行和列的形式有组织的数据集合。字段是指表中的列数。例如:
表:StudentInformation 字段:Stu Id、Stu Name、Stu Marks
JOIN 子句用于根据两个或多个表之间的相关列组合来自两个或多个表的行。它用于合并两个表或从那里检索数据。有 4 种连接类型,如下所示:
内连接: SQL中的内连接是最常见的连接类型。它用于返回满足连接条件的多个表中的所有行。
左连接: SQL 中的左连接用于返回左表中的所有行,但只返回右表中满足连接条件的匹配行。
右连接: SQL 中的右连接用于返回右表中的所有行,但只返回左表中满足连接条件的匹配行。
全联接:全联接 在任何表中存在匹配时返回所有记录。因此,它返回左侧表中的所有行和右侧表中的所有行。
让我们转到此 SQL 面试问题中的下一个问题。
Char 和 Varchar2 都用于字符数据类型,但 varchar2 用于可变长度的字符串,而 Char 用于固定长度的字符串。例如,char(10) 只能存储 10 个字符,并且不能存储任何其他长度的字符串,而 varchar2(10) 可以在此变量中存储任何长度,即 6、8、2。
SQL中的主键是一个列(或列的集合)或一组列,用于唯一标识表中的每一行。
唯一标识表中的单行
不允许空值
示例 - 在 Student 表中,Stu_ID 是主键。
SQL中的约束用于指定对表的数据类型的限制。它可以在创建或更改表语句时指定。约束示例如下:
非空
查看
默认
独特的
首要的关键
外键
删除 | 截短 |
---|---|
删除命令用于删除表中的一行。 | 截断用于从表中删除所有行。 |
您可以在使用 delete 语句后回滚数据。 | 您不能回滚数据。 |
这是一个 DML 命令。 | 这是一个 DDL 命令。 |
它比 truncate 语句慢。 | 它更快。 |
唯一标识表中的单行。
每个表允许多个值。
允许空值。
除了这个 SQL 面试问题博客之外,如果您想从专业人士那里获得有关该技术的培训,您可以选择edureka 的结构化培训!
外键通过强制两个表中的数据之间的链接来维护参照完整性。
子表中的外键引用父表中的主键。
外键约束防止破坏子表和父表之间的链接的操作。
数据完整性定义了存储在数据库中的数据的准确性和一致性。它还定义了完整性约束,以便在将数据输入应用程序或数据库时对数据实施业务规则。
SQL中聚集索引和非聚集索引的区别是:
聚集索引用于从数据库中轻松检索数据,速度更快,而从非聚集索引读取数据相对较慢。
聚集索引改变了记录在数据库中的存储方式,因为它按设置为聚集索引的列对行进行排序,而在非聚集索引中,它不会改变它的存储方式,但它会在一个单独的对象中创建一个单独的对象搜索后指向原始表行的表。
一张表只能有一个聚集索引,而它可以有许多非聚集索引。
在 SQL 中,有一个名为GetDate()的内置函数有助于返回当前时间戳/日期。
识别具有最小估计成本的评估查询计划的阶段称为查询优化。
查询优化的优点如下:
输出提供得更快
可以在更短的时间内执行更多的查询
降低时间和空间复杂性
非规范化是指一种用于从数据库的高级到低级访问数据的技术。它可以帮助数据库管理员提高整个基础架构的性能,因为它将冗余引入到表中。它通过合并将来自不同表的数据组合到单个表中的数据库查询将冗余数据添加到表中。
实体:现实世界中的人、地点或事物,其数据可以存储在数据库中。表存储表示一种实体类型的数据。例如 - 银行数据库有一个客户表来存储客户信息。客户表将此信息存储为每个客户的一组属性(表中的列)。
关系:相互关联的实体之间的关系或链接。例如 – 客户姓名与客户帐号和联系信息相关,可能在同一个表中。单独的表之间也可以存在关系(例如,客户到帐户)。
让我们转到此 SQL 面试问题中的下一个问题。
索引是指一种允许更快地从表中检索记录的性能调整方法。索引为每个值创建一个条目,因此检索数据会更快。
SQL中有三种类型的索引,即:
如果列是唯一索引的,则此索引不允许该字段具有重复值。如果定义了主键,则可以自动应用唯一索引。
该索引对表的物理顺序进行重新排序,并根据键值进行搜索。每个表只能有一个聚集索引。
非聚集索引:
Non-Clustered Index 不会改变表的物理顺序并保持数据的逻辑顺序。每个表可以有许多非聚集索引。
SQL中的规范化是组织数据以避免重复和冗余的过程。一些优点是:
更好的数据库组织
更多具有较小行的表
高效的数据访问
查询更灵活
快速查找资料
更容易实施安全性
允许轻松修改
减少冗余和重复数据
更紧凑的数据库
确保修改后数据一致
除了这个 SQL 面试问题博客之外,如果您想从专业人士那里获得有关该技术的培训,您可以选择edureka 的结构化培训!
DROP 命令删除一个表,它不能从数据库中回滚,而 TRUNCATE 命令从表中删除所有行。
有许多连续的标准化级别。这些被称为范式。每个连续的范式都依赖于前一个范式。前三个范式通常就足够了。
范式用于数据库表中以删除或减少重复。以下是多种形式:
第一范式: 当关系中的每个属性都是单值属性时,称其为第一范式。当关系具有复合或多值属性时,第一范式被破坏。
第二范式:
如果关系满足第一范式的要求并且不包含任何部分依赖关系,则该关系处于第二范式。在 2NF 中,关系没有部分依赖,这意味着它没有依赖于任何表候选键的任何合适子集的非主属性。通常,可以通过设置单列主键来解决问题。
第三范式: 如果一个关系满足第二范式的要求并且不存在传递依赖,则称它处于第三范式。
Q63。什么是 OLTP?
OLTP 或在线事务处理允许大量人员实时执行大量数据库事务,通常是通过 Internet。当数据库中的数据被更改、插入、删除或查询时,就会发生数据库事务。
OLTP 和 OLAP 有什么区别?
OLTP 代表在线事务处理,而 OLAP 代表在线分析处理。OLTP 是一个在线数据库修改系统,而 OLAP 是一个在线数据库查询响应系统。
Q64。如何创建与另一个表结构相同的空表?
创建空表:
使用 INTO 运算符将一个表的记录提取到新表中,同时将所有条目的 WHERE 子句设置为 false,可以创建具有相同结构的空表。结果,SQL 创建了一个具有重复结构的新表来接受获取的条目,但由于 WHERE 子句处于活动状态,因此没有任何内容存储到新表中。
Q65。什么是 PostgreSQL?
1986 年,由计算机科学教授 Michael Stonebraker 领导的一个团队以 Postgres 的名义创建了 PostgreSQL。它旨在通过确保系统中的数据完整性和容错性来帮助开发人员开发企业级应用程序。PostgreSQL 是一个企业级、多功能、弹性、开源、对象关系数据库管理系统,支持可变工作负载和并发用户。国际开发者社区一直支持它。由于其容错特性,PostgreSQL 在开发人员中获得了巨大的吸引力。 它是一个非常可靠的数据库管理系统,其高水平的弹性、完整性和准确性值得感谢 20 多年的社区工作。许多在线、移动、地理空间和分析应用程序使用 PostgreSQL 作为它们的主要数据存储或数据仓库。
问题 66。什么是 SQL 注释?
SQL 注释用于澄清部分 SQL 语句并防止 SQL 语句被执行。注释在许多编程语言中都非常重要。Microsoft Access 数据库不支持这些注释。因此,在 Mozilla Firefox 和 Microsoft Edge 的示例中使用了 Microsoft Access 数据库。 单行注释:它以两个连续的连字符 (–) 开头。 多行注释:以 /* 开头,以 */ 结尾。
让我们转到此 SQL 面试问题中的下一个问题。
问题 67。RANK() 和 DENSE_RANK() 函数有什么区别?
结果集中的 RANK() 函数定义了有序分区中每一行的排名。如果两行具有相同的排名,则排名中的下一个数字将是前一个排名加上重复的数量。例如,如果我们有 3 个第 4 级的记录,则指示的下一个级别是 7。
SQL Essentials 培训和认证平日/周末批次查看批次详情
DENSE_RANK() 函数根据提供的列值为分区内的每一行分配一个不同的等级,没有间隙。它始终指示按优先顺序排列的排名。如果两行具有相同的排名,则此函数将为两行分配相同的排名,下一个排名是下一个连续数字。例如,如果我们有 3 个第 4 级的记录,则指示的下一个级别是 5。
Q68。什么是 SQL 注入?
SQL 注入是网站和 Web 应用程序代码中的一种缺陷,允许攻击者控制后端进程并访问、检索和删除存储在数据库中的敏感数据。在这种方法中,恶意 SQL 语句被输入到数据库输入字段中,一旦执行,数据库就会暴露给攻击者。通过利用数据驱动的应用程序,该策略被广泛用于访问敏感数据并在数据库上执行管理任务。SQLi 攻击是它的另一个名称。
下面是一些 SQL 注入的例子:
访问秘密数据以更改 SQL 查询以获得所需的结果。
UNION 攻击旨在从多个数据库表中窃取数据。
检查数据库以获取有关数据库版本和结构的信息
问题 69。SQL 中有多少个聚合函数可用?
SQL 聚合函数提供有关数据库数据的信息。例如,AVG 返回数据库列值的平均值。
SQL 提供七 (7) 个聚合函数,如下所示:
AVG():返回指定列的平均值。 COUNT():返回表格行数,包括空值的行。 MAX():返回组中的最大值。 MIN():返回组中的最小值。 SUM():返回指定列的总和值(非空)。 FIRST():返回表达式的第一个值。 LAST():返回表达式的最后一个值。
Q70。使用 ORDER BY 子句的默认数据顺序是什么?怎么可能改变?
MySQL 中的 ORDER BY 子句可以在没有 ASC 或 DESC 修饰符的情况下使用。当 ORDER BY 子句中没有此属性时,排序顺序预设为 ASC 或升序。
Q71。我们如何使用 DISTINCT 语句?它的用途是什么?
SQL DISTINCT 关键字与 SELECT 查询结合使用以删除所有重复记录并仅返回唯一记录。有时一个表可能有多个重复记录。 SQL 中的 DISTINCT 子句用于从 SELECT 语句的结果集中消除重复项。
Q72。COALESCE 函数的语法和用法是什么?
从一系列表达式中,COALESCE 函数返回第一个非 NULL 值。表达式按照它们提供的顺序进行计算,函数的结果是第一个非空值。只有当所有输入都为空时,COALESCE 方法才会返回 NULL。
COALESCE 函数的语法是 COALESCE (exp1, exp2, .... expn)
ACID 代表原子性、一致性、隔离性、持久性。它用于确保在数据库系统中可靠地处理数据事务。
原子性: 原子性是指完全完成或失败的事务,其中事务是指数据的单个逻辑操作。这意味着如果任何事务的一部分失败,则整个事务都会失败,并且数据库状态保持不变。
一致性: 一致性确保数据必须满足所有验证规则。简而言之,您可以说您的事务在未完成其状态的情况下永远不会离开数据库。
隔离:隔离 的主要目标是并发控制。
持久性: 持久性意味着如果事务已提交,它将发生任何介于两者之间的情况,例如断电、崩溃或任何类型的错误。
想要提升自己的技能以在职业生涯中取得成功吗?在此SQL 面试问题中查看此视频
该eDureka视频在中将向您介绍市场上所有流行和流行的技术,您应该在2022年专注于这些技术。这是您需要学习的趋势技术,以便在成功的职业中获得成功的职业生涯2022年..
SQL 中的触发器是一种特殊类型的存储过程,被定义为在原地或数据修改后自动执行。它允许您在针对特定表执行插入、更新或任何其他查询时执行一批代码。
SQL中提供了三个运算符,即:
算术运算符
逻辑运算符
比较运算符
除了这个 SQL 面试问题博客之外,如果您想从专业人士那里获得有关该技术的培训,您可以选择 edureka 的结构化培训!
NULL 值与零或空格的值完全不同。NULL 值表示不可用、未知、已分配或不适用的值,而零是数字,空格是字符。
交叉连接产生两个表的叉积或笛卡尔积,而自然连接基于两个表中具有相同名称和数据类型的所有列。
子查询是另一个查询中的查询,其中定义了一个查询以从数据库中检索数据或信息。在子查询中,外部查询称为主查询,而内部查询称为子查询。总是先执行子查询,然后将子查询的结果传递给主查询。它可以嵌套在 SELECT、UPDATE 或任何其他查询中。子查询还可以使用任何比较运算符,例如 >、< 或 =。
有两种类型的子查询,即相关和非相关。
相关子查询:这些查询从外部查询中引用的表中选择数据。它不被视为独立查询,因为它引用另一个表并引用表中的列。
非相关子查询:此查询是一个独立查询,其中子查询的输出在主查询中被替换。
让我们转到此 SQL 面试问题中的下一个问题。
要在 SQL 中计算表中的记录数,可以使用以下命令:
选择 * 从表 1 从表 1 中选择计数(*) 从 sysindexes 中选择行 WHERE id = OBJECT_ID(table1) AND indid < 2
除了这个 SQL 面试问题博客之外,如果您想从专业人士那里获得有关该技术的培训,您可以选择edureka 的结构化培训!
要显示以“A”开头的员工姓名,请输入以下命令:
SELECT * FROM Table_name WHERE EmpName like 'A%'
SELECT TOP 1 salary FROM( SELECT TOP 3 salary FROM employee_table ORDER BY salary DESC) AS emp ORDER BY salary ASC;
Group functions work on the set of rows and return one result per group. Some of the commonly used group functions are: AVG, COUNT, MAX, MIN, SUM, VARIANCE.
Relation or links are between entities that have something to do with each other. Relationships are defined as the connection between the tables in a database. There are various relationships, namely:
One to One Relationship.
One to Many Relationship.
Many to One Relationship.
Self-Referencing Relationship.
NULL values in SQL can be inserted in the following ways:
Implicitly by omitting column from column list.
通过在 VALUES 子句中明确指定 NULL 关键字
BETWEEN 运算符用于根据行中的值范围显示行,而 IN 条件运算符用于检查特定值集中包含的值。
SELECT * FROM Students where ROLL_NO BETWEEN 10 AND 50;
输入示例:
SELECT * FROM students where ROLL_NO IN (8,15,25);
SQL 函数用于以下目的:
对数据执行一些计算
修改单个数据项
操纵输出
格式化日期和数字
转换数据类型
此语句允许有条件地更新或将数据插入到表中。如果行存在则执行 UPDATE,如果行不存在则执行 INSERT。
递归存储过程是指一个存储过程,它自己调用,直到它达到某个边界条件。这个递归函数或过程帮助程序员使用同一组代码 n 次。
SQL 子句通过为查询提供条件来帮助限制结果集。子句有助于过滤整个记录集中的行。
例如——WHERE、HAVING 子句。
除了这个 SQL 面试问题博客之外,如果您想从专业人士那里获得有关该技术的培训,您可以选择 edureka 的结构化培训!点击下方了解更多。
HAVING 子句只能与 SELECT 语句一起使用。它通常用在 GROUP BY 子句中,每当不使用 GROUP BY 时,HAVING 的行为就像 WHERE 子句。拥有子句仅与查询中的 GROUP BY 函数一起使用,而 WHERE 子句在每行成为查询中的 GROUP BY 函数的一部分之前应用于每一行。
以下是可以执行动态 SQL 的方式:
编写带参数的查询。
使用执行。
使用 sp_executesql。
约束是用于强制数据实体和一致性的列的表示。有两个级别的约束,即:
列级约束
表级约束
您可以使用 INTERSECT 从两个表中获取公共记录。例如:
从学生中选择学生ID。INTERSECT 从考试中选择 StudentID
SQL中有三个case操作函数,分别是:
LOWER:此函数以小写形式返回字符串。它将一个字符串作为参数并通过将其转换为小写来返回它。句法:
LOWER('字符串')
UPPER:此函数以大写形式返回字符串。它接受一个字符串作为参数,并通过将其转换为大写来返回它。句法:
UPPER('字符串')
INITCAP:此函数返回第一个字母为大写,其余字母为小写的字符串。句法:
INITCAP('字符串')
除了这个 SQL 面试问题博客之外,如果您想从专业人士那里接受有关该技术的培训,您可以选择 edureka 的结构化培训!点击下方了解更多。
一些可用的集合运算符是 - Union、Intersect 或 Minus 运算符。
SQL 中的 ALIAS 命令是可以赋予任何表或列的名称。可以在 WHERE 子句中引用此别名来标识特定的表或列。
例如-
选择emp.empID, dept.Result from employee emp, department as dept where emp.empID=dept.empID
在上面的例子中,emp 指的是employee 表的别名,dept 指的是department 表的别名。
让我们转到此 SQL 面试问题中的下一个问题。
聚合函数用于评估数学计算并返回单个值。这些计算是从表中的列完成的。例如 - max(),count() 是根据数字计算的。
标量函数根据输入值返回单个值。例如 – UCASE()、NOW() 是针对字符串计算的。
让我们转到此 SQL 面试问题中的下一个问题。
您可以获取备用记录,即奇数和偶数行号。例如 - 要显示偶数,请使用以下命令:
选择 studentId from (Select rowno, studentId from student) where mod(rowno,2)=0
现在,显示奇数:
选择 studentId from (Select rowno, studentId from student) where mod(rowno,2)=1
LIKE 运算符用于模式匹配,可以用作-。
% - 它匹配零个或多个字符。
例如 - select * from students where studentname like 'a%'
(下划线)——它只匹配一个字符。例如 - select * from student where studentname like 'abc'
除了这个 SQL 面试问题博客之外,如果您想从专业人士那里获得有关该技术的培训,您可以选择edureka 的结构化培训!
您可以使用 DISTINCT 关键字从表中选择唯一记录。
从学生中选择不同的学生ID
使用此命令,它将打印学生表中唯一的学生 ID。
有很多方法可以从字符串中获取字符。例如:
从学生中选择 SUBSTRING(StudentName,1,5) 作为学生名
SQL 是一种查询语言,允许您发出单个查询或执行单个插入/更新/删除,而 PL/SQL 是 Oracle 的“过程语言”SQL,它允许您编写完整的程序(循环、变量等)完成多项操作,例如选择/插入/更新/删除。
视图是一个虚拟表,它由表中包含的数据子集组成。由于视图不存在,因此存储空间更少。视图可以将一个或多个表的数据组合在一起,这取决于关系。
让我们转到此 SQL 面试问题中的下一个问题。
视图是指基于表或另一个视图的逻辑快照。使用它的原因如下:
限制对数据的访问。
使复杂的查询变得简单。
确保数据独立性。
提供相同数据的不同视图。
存储过程是由许多 SQL 语句组成的函数,用于访问数据库系统。将多个 SQL 语句合并到一个存储过程中,并随时随地执行它们,从而节省时间并避免一次又一次地编写代码。
存储过程可以用作模块化编程,这意味着在需要时创建一次,存储和调用多次。这支持更快的执行。它还可以减少网络流量并为数据提供更好的安全性。
存储过程的唯一缺点是它只能在数据库中执行,并且在数据库服务器中使用更多的内存。
用户自定义函数分为三种类型,分别是:
标量函数
内联表值函数
多语句值函数
标量返回单位,变体定义返回子句。其他两种类型的定义函数返回表。
让我们转到此 SQL 面试问题中的下一个问题。
排序规则定义为一组规则,这些规则确定如何对数据进行排序和比较。使用定义正确字符序列的规则以及用于指定区分大小写、字符宽度等的选项对字符数据进行排序。
让我们转到此 SQL 面试问题中的下一个问题。
以下是不同类型的校对敏感度:
区分大小写:A 和 a 以及 B 和 b。
假名敏感度:日文假名字符。
宽度敏感度:单字节字符和双字节字符。
口音敏感度。
除了这个 SQL 面试问题博客之外,如果您想从专业人士那里获得有关该技术的培训,您可以选择edureka 的结构化培训!
这些变量只能在函数内部使用或存在。这些变量不被任何其他函数使用或引用。
这些变量是可以在整个程序中访问的变量。每当调用该函数时,都无法创建全局变量。
Autoincrement 关键字允许用户创建一个唯一编号,以便在将新记录插入表时生成。每当使用 SQL 中的 PRIMARY KEY 时,通常都需要此关键字。
Oracle中可以使用AUTO INCREMENT关键字,SQL SERVER中可以使用IDENTITY关键字。
数据仓库是指数据的中央存储库,其中数据是从多个信息源组装而成的。这些数据被整合、转换并可供挖掘和在线处理使用。仓库数据也有一个称为数据集市的数据子集。
Windows 模式和混合模式 – SQL 和 Windows。您可以按照以下步骤更改 SQL Server 中的身份验证模式:
单击开始 > 程序 > Microsoft SQL Server,然后单击 SQL Enterprise Manager 从 Microsoft SQL Server 程序组运行 SQL Enterprise Manager。
然后从“工具”菜单中选择服务器。
选择 SQL Server 配置属性,然后选择安全页面。
STUFF 功能:此功能用于覆盖现有字符或将字符串插入另一个字符串。句法:
东西(字符串表达式,开始,长度,替换字符)
其中, string_expression:它将替换字符的字符串
start:这是指起始位置 长度:它是指字符串中被替换的字符数。
replacement_string:它们是注入字符串中的新字符。
REPLACE 函数:此函数用于替换所有出现的现有字符。句法:
替换(字符串表达式、搜索字符串、替换字符串)
这里 string_expression 中的每个 search_string 都将被替换为 replacement_string。
所以这将我们带到 SQL 面试问题博客的结尾。我希望这组 SQL 面试问题能帮助你在工作面试中取得好成绩。 祝你面试顺利!
除了这个 SQL 面试问题博客,如果你想接受SQL专业人士的培训,你可以选择 edureka 的结构化培训!点击下方了解更多。
查看Edureka 的MySQL DBA 认证培训,这是一家值得信赖的在线学习公司,其网络由遍布全球的 250,000 多名满意的学习者组成。 本课程培训您管理数据和管理 MySQL 数据库的核心概念和高级工具和技术。它包括对 MySQL 工作台、MySQL 服务器、数据建模、MySQL 连接器、数据库设计、MySQL 命令行、MySQL 函数等概念的实践学习。培训结束后,您将能够创建和管理自己的 MySQL 数据库和管理数据。