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

2021-04-07 10:19:51 浏览数 (1)

Q1。SQL和MySQL有什么区别?

SQL

MySQL

SQL是一种标准语言,代表基于英语的结构化查询语言

MySQL是一个数据库管理系统。

SQL是关系数据库的核心,用于访问和管理数据库

MySQL是RDMS(关系数据库管理系统),例如SQL Server,Informix等。

Q2。SQL有哪些不同的子集?

  • DDL(数据定义语言)– 它允许您对数据库执行各种操作,例如CREATE,ALTER和DELETE对象。
  • DML(数据处理语言) –它允许您访问和处理数据。它可以帮助您从数据库中插入,更新,删除和检索数据。
  • DCL(数据控制语言) –它允许您控制对数据库的访问。示例–授予,撤消访问权限。

Q3。DBMS是什么意思?有哪些不同类型?

数据库是数据的结构化集合。

一个 数据库管理系统DBMS)是一个软件应用程序与用户,应用程序和数据库本身交互,以捕获和分析数据。

DBMS允许用户与数据库进行交互。可以修改,检索和删除存储在数据库中的数据,并且可以是任何类型,例如字符串,数字,图像等。

DBMS有两种类型:

  • 关系数据库管理系统:数据存储在关系(表)中。示例– MySQL。
  • 非关系数据库管理系统:没有关系,元组和属性的概念。示例– Mongo

Q4。SQL中的表和字段是什么意思?

表是指以行和列的形式组织的数据集合。字段是指表中的列数。例如:

:StudentInformation 字段:Stu ID,Stu名称,Stu标记

Q5。什么是SQL中的连接?

JOIN子句用于根据两个或多个表之间的相关列来组合它们。它用于合并两个表或从中检索数据。SQL中有4个连接,即:

  • 内连接
  • 右连接
  • 左连接
  • 全连接

Q6。 SQL中CHAR和VARCHAR2数据类型有什么区别?

Char和Varchar2均用于字符数据类型,而varchar2用于可变长度的字符串,而Char用于固定长度的字符串。例如,char(10)只能存储10个字符,而不能存储任何其他长度的字符串,而varchar2(10)可以存储任何长度,即此变量中的6,8,2。

Q7。什么是主键?

  • 主键 是一列(或列的集合)或一组列的唯一标识表中的每一行。
  • 唯一标识表中的一行
  • 不允许为空值

示例-在学生表中,Stu_ID是主键。

Q8。 什么是约束?

约束用于指定表数据类型的限制。可以在创建或更改表语句时指定它。约束示例为:

  • NOT NULL
  • CHECK
  • DEFAULT
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY

Q9。DELETE和TRUNCATE语句有什么区别?

DELETE

TRUNCATE

Delete命令用于删除表中的一行。

截断用于删除表中的所有行。

您可以在使用delete语句后回滚数据。

您无法回滚数据。

这是DML命令。

这是DDL命令。

它比截断语句慢。

它更快。

Q10。什么是唯一键?

  • 唯一标识表中的一行。
  • 每个表允许多个值。
  • 允许为空值。

Q11。什么是外键?

  • 外键通过强制两个表中的数据之间的链接来维护引用完整性。
  • 子表中的外键引用父表中的主键。
  • 外键约束可防止会破坏子表与父表之间的链接的操作。

Q12。您所说的数据完整性是什么意思?

数据完整性定义了存储在数据库中的数据的准确性和一致性。它还定义了完整性约束,以在将数据输入到应用程序或数据库中时对数据执行业务规则。

Q13。SQL中的聚集索引和非聚集索引有什么区别?

SQL中的聚集索引和非聚集索引之间的区别是:

  1. 聚集索引用于轻松地从数据库中检索数据,并且速度更快,而从非聚集索引中读取数据则相对较慢。
  2. 聚簇索引会更改记录在数据库中的存储方式,因为它会按设置为聚簇索引的列对行进行排序,而在非聚簇索引中,它不会更改存储方式,但会在数据库中创建一个单独的对象搜索后指向原始表行的表。
  3. 一个表只能有一个聚集索引,而它却可以有许多非聚集索引。

Q14。编写SQL查询以显示当前日期?

在SQL中,有一个名为GetDate()的内置函数,该函数有助于返回当前时间戳/日期。

Q15。列出不同类型的联接?

有多种类型的联接用于检索表之间的数据。有四种类型的联接,即:

内部联接:MySQL中的内部联接是最常见的联接类型。它用于从满足联接条件的多个表中返回所有行。

左连接: MySQL中的左连接用于返回左表中的所有行,但仅返回右表中满足连接条件的匹配行。

右连接: MySQL中的右连接用于返回右表中的所有行,但仅返回满足连接条件的左表中的匹配行。

完全联接: 当任何表中都存在匹配项时,完全联接将返回所有记录。因此,它将返回左侧表中的所有行和右侧表中的所有行。

Q16。您所说的非规范化是什么意思?

非规范化是指一种用于从数据库的较高形式到较低形式访问数据的技术。当将冗余引入表中时,它可以帮助数据库管理员提高整个基础架构的性能。它通过合并数据库查询将冗余数据添加到表中,这些查询将来自不同表的数据组合到一个表中。

Q17。什么是实体和关系?

实体:现实世界中可以在数据库中存储有关数据的人,地方或事物。表存储代表一种实体类型的数据。例如–银行数据库有一个客户表来存储客户信息。客户表将此信息存储为每个客户的一组属性(表中的列)。

关系:实体之间有关联的关系或链接。例如–客户名称与客户帐号和联系信息相关,它们可能在同一表中。各个表之间也可能存在关系(例如,客户到帐户)。

Q18。什么是指数?

索引是一种性能调整方法,它允许从表中更快地检索记录。索引为每个值创建一个条目,因此检索数据会更快。

19.解释不同类型的索引。

索引分为三种:

唯一索引:

如果列是唯一索引的,则此索引不允许字段具有重复的值。如果定义了主键,则可以自动应用唯一索引。

聚集索引:

该索引对表的物理顺序进行重新排序,并根据键值进行搜索。每个表只能有一个聚集索引。

非聚集索引:

非聚集索引不会更改表的物理顺序,并且会保持数据的逻辑顺序。每个表可以具有许多非聚集索引。

Q20。什么是规范化及其优点?

规范化是组织数据以避免重复和冗余的过程。一些优点是:

  • 更好的数据库组织
  • 表格越多行越少
  • 高效的数据访问
  • 更大的查询灵活性
  • 快速查找信息
  • 实施安全性更容易
  • 易于修改
  • 减少冗余和重复数据
  • 更紧凑的数据库
  • 修改后确保数据一致

Q21。DROP和TRUNCATE命令有什么区别?

DROP命令删除表,并且不能从数据库回滚,而TRUNCATE命令删除表中的所有行。

Q22。解释不同类型的规范化。

有许多连续的标准化级别。这些称为范式。每个连续的范式都取决于前一个范式。前三个范式通常就足够了。

  • 第一范式(1NF) –行内没有重复的组
  • 第二范式(2NF) –每个非键(支持)列的值都取决于整个主键。
  • 第三范式(3NF) –仅取决于主键,而没有其他非键(支持)列值。

Q23。数据库中的ACID属性是什么?

ACID代表原子性,一致性,隔离性,耐久性。它用于确保在数据库系统中可靠地处理数据事务。

原子性: 原子性是指完全完成或失败的事务,其中事务是指数据的单个逻辑操作。这意味着,如果任何事务的一部分失败,则整个事务都会失败,并且数据库状态将保持不变。

一致性: 一致性可确保数据必须符合所有验证规则。简而言之,您可以说您的事务永远都不会离开数据库而不完成其状态。

隔离:隔离 的主要目标是并发控制。

持久性: 持久性意味着如果事务已提交,则它将发生之间可能发生的任何事情,例如断电,崩溃或任何类型的错误。

Q24。在SQL中,”触发”是什么意思?

SQL中的触发器是一种特殊的存储过程,已定义为在适当位置或在数据修改后自动执行。当对特定表执行插入,更新或任何其他查询时,它允许您执行一批代码。

Q25。SQL中有哪些不同的运算符?

SQL中提供了三种运算符,分别是:

  1. 算术运算符
  2. 逻辑运算符
  3. 比较运算符

Q26。NULL值是否等于零或空格?

NULL值与零或空格完全不同。NULL值表示不可用,未知,已分配或不适用的值,而零是数字,空格是字符。

Q27。交叉联接和自然联接有什么区别?

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

Q28。什么是SQL中的子查询?

子查询是另一个查询中的查询,其中定义了查询以从数据库中检索数据或信息。在子查询中,外部查询称为主查询,而内部查询称为子查询。总是先执行子查询,然后将子查询的结果传递给主查询。它可以嵌套在SELECT,UPDATE或任何其他查询中。子查询也可以使用任何比较运算符,例如>,<或=。

Q29。子查询有哪些不同类型?

子查询有两种类型,即”相关”和”不相关”。

相关子查询:这些查询从外部查询中引用的表中选择数据。它不被视为独立查询,因为它引用另一个表并引用一个表中的列。

不相关的子查询:此查询是一个独立的查询,在主查询中替换了子查询的输出。

Q30。列出获取表中记录计数的方法?

要计算表中的记录数,可以使用以下命令:

代码语言:javascript复制
SELECT * FROM table1
SELECT COUNT(*) FROM table1
SELECT rows FROM sysindexes WHERE id = OBJECT_ID(table1) AND indid < 2

Q31。编写SQL查询以查找以’A’开头的员工的姓名?

要显示以” A”开头的员工的姓名,请输入以下命令:

代码语言:javascript复制
SELECT * FROM Table_name WHERE EmpName like 'A%'

Q32。编写SQL查询以从employee_table获取雇员的第三高薪水?

代码语言:javascript复制
SELECT TOP 1 salary
    FROM(
        SELECT TOP 3 salary
        FROM employee_table
        ORDER BY salary DESC
    ) AS emp
ORDER BY salary ASC;

Q33。SQL中的组功能有什么需求?

组函数在一组行上工作,并且每个组返回一个结果。一些常用的组函数是:AVG,COUNT,MAX,MIN,SUM,VARIANCE。

Q34。什么是关系,它们是什么?

关系或链接是在相互关联的实体之间。关系定义为数据库中表之间的连接。存在各种关系,即:

  • 一对一关系。
  • 一对多关系。
  • 多对一关系。
  • 自引用关系。

Q35。插入数据时如何在列中插入NULL值?

可以通过以下方式插入NULL值:

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

Q36。” BETWEEN”和” IN”条件运算符之间的主要区别是什么?

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

BETWEEN的示例:

代码语言:javascript复制
SELECT * FROM Students where ROLL_NO BETWEEN 10 AND 50;

IN的示例:

代码语言:javascript复制
SELECT * FROM students where ROLL_NO IN (8,15,25);

Q37。为什么要使用SQL函数?

SQL函数用于以下目的:

  • 对数据进行一些计算
  • 修改单个数据项
  • 操纵输出
  • 格式化日期和数字
  • 转换数据类型

Q38。MERGE语句需要什么?

该语句允许条件更新或将数据插入表中。如果存在一行,则执行UPDATE;如果不存在,则执行INSERT。

Q39。递归存储过程是什么意思?

递归存储过程是指一个存储过程,它会自行调用直到达到某个边界条件。此递归函数或过程可帮助程序员多次使用同一组代码。

Q40。什么是SQL中的CLAUSE?

SQL子句通过为查询提供条件来帮助限制结果集。子句有助于从整个记录集中过滤行。

例如– WHERE,HAVING子句。

Q41。”拥有”条款和”何处”条款有什么区别?

HAVING子句只能与SELECT语句一起使用。通常在GROUP BY子句中使用它,并且每当不使用GROUP BY时,HAVING的行为就像WHERE子句。拥有子句仅与查询中的GROUP BY函数一起使用,而WHERE子句在它们成为查询中GROUP BY函数的一部分之前应用于每行。

Q42。列出执行动态SQL的方式?

以下是执行动态SQL的方式:

  • 用参数编写查询。
  • 使用EXEC。
  • 使用sp_executesql。

Q43。约束的各个级别是什么?

约束是用于强制执行数据实体和一致性的列的表示。约束有两个级别,即:

  • 列级约束
  • 表级约束

Q44。如何从两个表中获取公用记录?

您可以使用INTERSECT从两个表中获取公用记录。例如:

代码语言:javascript复制
Select studentID from student.INTERSECT Select StudentID from Exam

Q45。列出一些SQL中的大小写操作函数?

SQL中有三种大小写处理函数,分别是:

  • LOWER:此函数以小写形式返回字符串。它以字符串作为参数,并将其转换为小写形式返回。句法:
代码语言:javascript复制
 LOWER('字符串')
  • UPPER:此函数以大写形式返回字符串。它以字符串作为参数,并将其转换为大写形式返回。句法:
代码语言:javascript复制
UPPER('字符串')
  • INITCAP:此函数返回首字母大写,其余字母小写的字符串。句法:
代码语言:javascript复制
 INITCAP('字符串')

Q46。SQL中有哪些不同的集合运算符?

一些可用的集合运算符是–联合,相交或减运算符。

Q47。什么是ALIAS命令?

ALIAS名称可以赋予任何表或列。可以在WHERE子句中引用此别名,以标识特定的表或列。

例如-

代码语言:javascript复制
Select emp.empID, dept.Result from employee emp, department as dept where emp.empID=dept.empID

在上面的示例中,emp表示employee表的别名,而dept表示部门表的别名。

Q48。什么是合计和标量函数?

聚合函数用于评估数学计算并返回单个值。这些计算是从表中的列进行的。例如-max(),count()是针对数字计算的。

标量函数根据输入值返回单个值。例如– UCASE(),NOW()是针对字符串计算的。

Q49。如何从表中获取备用记录?

您可以获取备用记录,即奇数和偶数行号。例如,要显示偶数,请使用以下命令:

从(选择行号,从学生中选择studentId)中选择studentId,其中mod(rowno,2)= 0

现在,要显示奇数:

代码语言:javascript复制
Select studentId from (Select rowno, studentId from student) where mod(rowno,2)=1

Q50。命名查询中用于模式匹配的运算符?

LIKE运算符用于模式匹配,可以用作-。

  1. %–匹配零个或多个字符。

例如-从学生姓名为’a%’的学生中选择*

(下划线)–恰好匹配一个字符。例如-从学生中选择*,其中学生姓名为” abc

Q51。如何从表中选择唯一记录?

您可以使用DISTINCT关键字从表中选择唯一记录。

代码语言:javascript复制
Select DISTINCT studentID from Student

使用此命令,它将从表Student中打印唯一的学生ID。

Q52。如何获取字符串的前5个字符?

有很多方法可以从字符串中提取字符。例如:

从学生中选择SUBSTRING(StudentName,1,5)作为学生名

Q53。SQL和PL / SQL之间的主要区别是什么?

SQL是一种查询语言,允许您发出单个查询或执行单个插入/更新/删除操作,而PL / SQL是Oracle的”过程语言” SQL,它允许您编写完整的程序(循环,变量等)。完成多项操作,例如选择/插入/更新/删除。

Q54。什么是视图?

视图是一个虚拟表,由表中包含的数据子集组成。由于不存在视图,因此占用的空间更少。视图可以合并一个或多个表的数据,这取决于关系。

Q55。视图的用途是什么?

视图是指基于表或另一个视图的逻辑快照。使用它的原因如下:

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

Q56。什么是存储过程?

存储过程是一个由许多SQL语句组成的函数,用于访问数据库系统。几个SQL语句被合并到一个存储过程中,并在需要时随时随地执行它们,从而节省了时间并避免了重复编写代码。

Q57。列出存储过程的一些优点和缺点?

优点:

可以将存储过程用作模块化编程,这意味着一次创建,存储并在需要时多次调用。这支持更快的执行。它还可以减少网络流量,并为数据提供更好的安全性。

缺点:

存储过程的唯一缺点是它只能在数据库中执行,并占用数据库服务器中更多的内存。

Q58。列出所有类型的用户定义函数?

用户定义的函数有三种类型,即:

  • 标量函数
  • 内联表值函数
  • 多语句有价值的函数

标量返回单位,变体定义了return子句。其他两种类型的已定义函数返回表。

Q59。归类是什么意思?

归类定义为一组规则,这些规则确定如何对数据进行排序和比较。字符数据使用定义正确字符序列的规则以及用于指定区分大小写,字符宽度等的选项进行排序。

Q60。排序规则敏感性有哪些不同类型?

以下是排序规则敏感性的不同类型:

  • 区分大小写:A和a以及B和b。
  • 假名敏感性:日语假名字符。
  • 宽度灵敏度:单字节字符和双字节字符。
  • 口音敏感度。

Q61。什么是局部变量和全局变量?

局部变量:

这些变量只能在函数内部使用或存在。这些变量未被任何其他函数使用或引用。

全局变量:

这些变量是可以在整个程序中访问的变量。每当调用该函数时就无法创建全局变量。

Q62。什么是SQL中的自动增量?

自动递增关键字使用户可以创建一个唯一的数字,只要将新记录插入表中就可以生成该数字。每当使用PRIMARY KEY时,通常都需要此关键字。

在Oracle中可以使用AUTO INCREMENT关键字,在SQL SERVER中可以使用IDENTITY关键字。

Q63。什么是数据仓库?

数据仓库是指数据的中央存储库,其中数据是从多种信息源中组合而成的。这些数据经过整合,转换,可用于采矿和在线处理。仓库数据也有一个数据子集,称为数据集市。

Q64。SQL Server中有哪些不同的身份验证模式?如何更改?

Windows模式和混合模式– SQL和Windows。您可以转到以下步骤来更改SQL Server中的身份验证模式:

  • 单击开始>程序> Microsoft SQL Server,然后单击SQL企业管理器以从Microsoft SQL Server程序组运行SQL企业管理器。
  • 然后从”工具”菜单中选择服务器。
  • 选择” SQL Server配置属性”,然后选择”安全性”页面。

Q65。什么是STUFF和REPLACE函数?

STUFF函数:此函数用于覆盖现有字符或将一个字符串插入另一个字符串。句法:

代码语言:javascript复制
STUFF(字符串表达式,开始,长度,替换字符)

其中, string_expression:将替换字符的字符串

start:指起始位置 长度:指字符串中要替换的字符数。

replace_string:它们是注入字符串中的新字符。

REPLACE函数:此函数用于替换所有出现的现有字符。句法:

代码语言:javascript复制
REPLACE(string_expression,search_string,replacement_string)

在这里,string_expression中的每个search_string将被替换为replace_string。

0 人点赞