SQL面试题



亲爱的读者,这些SQL面试题专为帮助您熟悉面试中可能遇到的关于SQL的问题而设计。根据我的经验,优秀的采访者在面试过程中很少会预先计划好要问哪些具体问题,通常问题会从该主题的一些基本概念开始,然后根据进一步的讨论以及您的回答继续下去。

SQL或结构化查询语言是一种语言;这种语言与关系数据库通信,从而提供操作和创建数据库的方法。MySQL和Microsoft的SQL Server都是使用SQL作为其标准关系数据库语言的关系数据库管理系统。

PL/SQL是SQL的一种方言,它在SQL中添加了编程语言的过程特性。它是由Oracle公司在90年代初期开发的,以增强SQL的功能。

以下是SQL中各种DDL或数据定义语言命令:

  • CREATE −它创建一个新的表、表的视图或数据库中的其他对象。

  • ALTER −它修改现有的数据库对象,例如表。

  • DROP −它删除整个表、表的视图或数据库中的其他对象。

以下是SQL中各种DML或数据操作语言命令:

  • SELECT −它从一个或多个表中检索某些记录。

  • INSERT −它创建记录。

  • UPDATE −它修改记录。

  • DELETE −它删除记录。

以下是SQL中各种DCL或数据控制语言命令:

  • GRANT −它赋予用户权限。

  • REVOKE −它收回已授予用户的权限。

可以。列别名可以在ORDER BY子句中使用。

NULL值与零或空格不同。NULL值是一个“不可用、未分配、未知或不适用”的值。而零是一个数字,空格是一个字符。

正确。

查询结果显示所有行,包括重复行。要消除结果中的重复行,在SELECT子句中使用DISTINCT关键字。

BETWEEN运算符根据值的范围显示行。IN条件运算符检查特定值集中包含的值。

在这种情况下,使用LIKE条件运算符来选择与字符模式匹配的行。这也被称为“通配符”搜索。

默认排序顺序是升序。可以使用DESC关键字在ORDER BY子句中列名之后更改它。

SQL函数具有以下用途:

  • 对数据进行计算

  • 修改单个数据项

  • 操作输出

  • 格式化日期和数字

  • 转换数据类型

LOWER、UPPER、INITCAP

MOD函数返回除法运算中的余数。

NVL函数将NULL值转换为实际值。

NVL(exp1, exp2)函数将源表达式(或值)exp1转换为目标表达式(或值)exp2,如果exp1包含NULL。返回值与exp1的数据类型相同。

NVL2(exp1, exp2, exp3)函数检查第一个表达式exp1,如果它不是null,则返回第二个表达式exp2。如果第一个表达式exp1为null,则返回第三个表达式exp3。

NULLIF函数比较两个表达式。如果它们相等,则函数返回null。如果它们不相等,则返回第一个表达式。

COALESCE函数的表达式为COALESCE(exp1, exp2, … expn)

它返回参数列表中给定的第一个非空表达式。

有两种方法可以在SQL语句中实现条件处理或IF-THEN-ELSE逻辑。

  • 使用CASE表达式

  • 使用DECODE函数

结果将是两个表的笛卡尔积,共有20 x 10 = 200行。

交叉连接产生两个表的交叉积或笛卡尔积。自然连接基于两个表中所有名称和数据类型相同的列。

SQL 中的组函数作用于行集,并为每个组返回一个结果。组函数的示例包括 AVG、COUNT、MAX、MIN、STDDEV、SUM、VARIANCE。

默认情况下,组函数考虑所有值,包括重复值。(This sentence contradicts p2. Consider clarifying in the source document.)

正确。

正确。

错误。COUNT(*) 返回表中的行数。

它没有 GROUP BY 子句。subject_code 应该在 GROUP BY 子句中。

   SELECT subject_code, count(name)
   FROM students
   GROUP BY subject_code;

不能使用 WHERE 子句来限制分组。应该使用 HAVING 子句。

   SELECT subject_code, AVG (marks)
   FROM students
   HAVING AVG(marks) > 75
   GROUP BY subject_code;

错误。组函数可以嵌套到两层深度。

子查询是嵌入另一个 SELECT 语句的子句中的 SELECT 语句。当内部查询(或子查询)返回外部查询使用的值时,它就会被使用。它在使用取决于同一表中包含的一些数据的条件选择表中某些行时非常有用。

错误。单行子查询只从内部 SELECT 语句返回一行。

正确。

正确。

这里,单行运算符 = 与多行子查询一起使用。

IN、ANY、ALL。

DML 语句用于向表中添加新行、更新或修改现有行中的数据或从表中删除现有行。

INSERT INTO 语句。

正确。

可以通过以下方法之一将空值插入表中:

  • 通过从列列表中省略列来隐式插入。
  • 通过在 VALUES 子句中指定 NULL 关键字来显式插入。

错误。INSERT 语句允许通过复制现有表中的行来向表中添加行。

INSERT 语句可用于通过从另一个表复制来向表中添加行。在这种情况下,子查询用于代替 VALUES 子句。

表中的所有行都将被修改。

可以。在 UPDATE 语句中使用子查询允许你根据另一个表中的值更新表中的行。

错误。DELETE 语句用于从表中删除现有行。

表中的所有行都将被删除。

可以,子查询可用于根据另一个表中的值从表中删除行。

正确。

正确。

MERGE 语句允许有条件地更新或插入数据到数据库表中。如果行存在,则执行 UPDATE;如果行不存在,则执行 INSERT。

正确。

VARCHAR2 表示可变长度字符数据,而 CHAR 表示固定长度字符数据。

错误。DROP TABLE 语句不能回滚。

ALTER TABLE 语句。

视图是基于表或其他视图的逻辑快照。它用于:

  • 限制对数据的访问;
  • 使复杂的查询简单化;
  • 确保数据独立性;
  • 提供相同数据的不同视图。

正确。

下一步是什么?

接下来,你可以回顾一下你以前完成的作业,确保你能自信地谈论它们。如果你刚毕业,面试官不会期望你能回答非常复杂的问题,而是要确保你的基础概念非常扎实。

其次,如果你无法回答几个问题,其实并不重要,重要的是,无论你回答了什么,你都必须自信地回答。所以在面试中要自信。Tutorialspoint 祝你找到一位好面试官,并祝你未来的努力一切顺利!干杯 :-)

sql_questions_answers.htm
广告
© . All rights reserved.