面试了无数公司,我总结了这些 Mysql 面试题(内附答案)

1.什么是数据库?

数据库是组织形式的信息的集合,用于替换,更好地访问,存储和操纵。

也可以将其定义为表,架构,视图和其他数据库对象的集合。

2.什么是数据仓库?

数据仓库是指来自多个信息源的中央数据存储库。

这些数据经过整合,转换,可用于采矿和在线处理

3.什么是数据库中的表?

表是一种数据库对象,用于以保留数据的列和行的形式将记录存储在并行中。

4.什么是数据库中的细分?

数据库表中的分区是分配用于在表中存储特定记录的空间。

5.什么是数据库中的记录?
记录(也称为数据行)是表中相关数据的有序集合。

6.什么是表中的列?
列是表中的垂直实体,包含与表中特定细分关联的所有信息。

7.什么是 DBMS?
数据库管理系统是程序的集合,使用户能够存储,检索,更新和删除数据库中的信息。

  1. DBMS 的类型是什么?
    DBMS 有两种类型:

1.关系数据库管理系统(RDBMS)

2.非关系数据库管理系统

9.什么是 RDBMS?
RDBMS 代表- [R elational d atabase 中号 anagement 小号 ystem。

RDBMS 是基于关系模型的数据库管理系统(DBMS)。

可以使用结构化查询语言(SQL)访问关系数据库中的数据

10.在 IT 行业中流行的数据库管理系统是什么?
Oracle,MySQL,Microsoft SQL Server,PostgreSQL,

Sybase,MongoDB,DB2 和 Microsoft Access 等,

11.什么是 SQL?
SQL 概述:SQL 代表结构化查询语言。它是美国国家标准协会(ANSI)的标准。

它是用于访问和操作数据库的标准语言。

使用 SQL,我们可以做的一些动作是创建数据库,表,存储过程(SP),

执行查询,针对数据库检索,插入,更新,删除数据。

  1. SQL 命令有哪些不同类型?
    SQL 命令分为以下几种类型:

DDL –数据定义语言

DML –数据处理语言

DQL –数据查询语言

DCL –数据控制语言

TCL –交易控制语言

  1. SQL 中有哪些不同的 DDL 命令?
    DDL 命令用于定义或更改数据库的结构。

CREATE:创建数据库和数据库对象

ALTER:更改现有的数据库对象

DROP:删除数据库和数据库对象

TRUNCATE:从表中删除所有记录,但不删除其数据库结构

RENAME:重命名数据库对象

  1. SQL 中有哪些不同的 DML 命令?
    DML 命令用于管理数据库中存在的数据。

SELECT:从数据库中选择特定数据

INSERT:将新记录插入表中

UPDATE:更新现有记录

DELETE:从表中删除现有记录

  1. SQL 中有哪些不同的 DCL 命令?
    DCL 命令用于创建角色,授予权限以及控制对数据库对象的访问。

GRANT:提供用户访问权限

DENY:拒绝用户权限

REVOKE:删除用户访问权限

  1. SQL 中的 TCL 命令有哪些不同?
    TCL 命令用于管理 DML 语句所做的更改。

COMMIT:将更改写入并存储到数据库

ROLLBACK:自上次提交以来还原数据库

17.什么是索引?
索引用于加快查询的性能。它可以更快地从表中检索数据。

可以在一个列或一组列上创建索引。

18.所有不同类型的索引是什么?
索引有三种类型

1.唯一索引:唯一索引通过确保表中没有两行数据具有相同的键值来帮助维护数据完整性。定义主键时,可以自动应用唯一索引。它确保索引键列中的值是唯一的。

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

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

19.群集索引和非群集索引有什么区别?
SQL 中的聚集索引和非聚集索引之间的区别如下:

聚集索引:

  用于从数据库中轻松检索数据,并且速度更快。

  一个表只能有一个聚集索引

  它改变了记录在数据库中的存储方式,因为它通过设置为聚集索引的列对行进行排序。

非聚集索引:

  与聚集索引相比,它更慢。

  一个表可以具有多个非聚集索引。

  它不会改变其排序方式,但是会在一个表内创建一个单独的对象,该对象在搜索后指向原始表行。

20.什么是 SQL 视图?
视图就像逻辑上存储在数据库中的表的子集。视图是一个虚拟表。

它包含类似于真实表的行和列。视图中的字段是来自一个或多个实际表的字段。

视图不包含自己的数据。它们用于限制对数据库的访问或隐藏数据复杂性。

21.视图的优点是什么?
视图的一些优点是

视图不占空间

视图用于简单地检索需要经常执行的复杂查询的结果。

视图用于限制对数据库的访问或隐藏数据复杂性。

22.什么是关系,它们是什么?
数据库关系定义为数据库中表之间的连接。有各种数据库关系,即

1.一对一的关系

2.一对多的关系

3.多对一的关系

4.自指关系

23.什么是查询?
数据库查询是从数据库表或表组合中获取数据或信息的请求。

数据库查询可以是选择查询或动作查询。

24.什么是子查询?
子查询是另一个查询中的 SQL 查询。它是 Select 语句的子集,

其返回值用于过滤主查询的条件。

25.子查询的类型是什么?
子查询有两种类型:

1.关联的:在 SQL 数据库查询中,关联的子查询是使用外部查询中的值来完成的子查询。因为相关子查询要求首先执行外部查询,所以相关子查询必须为外部查询中的每一行运行一次。也称为同步子查询。

2.不相关:不相关子查询是其中外部查询和内部查询都彼此独立的子查询。 

26.局部变量和全局变量有什么区别?
局部变量:

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

这些是其他功能未知的。只要调用该函数就可以创建变量。

全局变量:

全局变量可以在整个程序中使用或存在。在全局中声明的相同变量不能在函数中使用。

每当调用该函数时就无法创建全局变量。

27.什么是数据完整性?
数据完整性定义了存储在数据库中的数据的准确性和一致性。

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

28.什么是 SQL 中的自动增量?
这是重要的 Oracle DBA 面试问题之一。

自动增量关键字使用户可以创建一个唯一的数字,以便在将新记录插入表中时生成该数

字。每当使用主键时,都可以使用自动递增关键字。在 Oracle 中使用自动递增关键字

在 SQL Server 中使用 IDENTITY 关键字。

29.什么是临时表?
临时表是用于临时存储数据的临时存储结构。

30.如何避免查询中重复记录?
SQL SELECT DISTINCT 查询仅用于返回唯一值。它消除了所有重复的值。

31.Rename 和 Alias 有什么区别?
“Rename”是赋予表或列的永久名称

“Alias”是赋予表或列的临时名称。

32.什么是 Join?
join 是一个查询,它从多个表中检索相关的列或行。

33.联接的类型有哪些?
联接的类型如下:

内部联接

左联接

正确加入

外连接

35.内部联接和外部联接之间有什么区别?
内部联接:当正在比较的两个(或多个)表之间至少有一些匹配数据时,内部联接将返回行。

外部联接:外部联接从两个表返回行,这些行包括与一个或两个表不匹配的记录。

36.什么是 SQL 约束?
SQL 约束是在数据库中插入,删除或更新数据时实施一些约束的一组规则。

  1. SQL 中可用的约束有哪些?
    SQL 中的一些约束包括–主键,外键,唯一键,SQL 非空,默认,检查和索引约束。

38.什么是唯一约束?
使用唯一约束来确保字段/列中没有重复值。

39.什么是主键?
一个 PRIMARY KEY 约束唯一标识数据库表中的记录。

参与主键约束的所有列均不得包含 NULL 值。

40.一个表可以包含多个 PRIMARY KEY 吗?
简短的答案是“否”,一个表不允许包含多个主键,

但是它允许一个包含两个或更多列的复合主键。

41.什么是复合 主键?
复合主键是在表中的多个列(多个字段的组合)上创建的主键。

42.什么是外键?
一个 FOREIGN KEY 是用于两个表连接在一起的关键。

一个 FOREIGN KEY 的表与链接的 PRIMARY KEY 另一个表。

43.一个表可以包含多个 FOREIGN KEY 吗?
一个表可以有许多 FOREIGN KEY。

  1. UNIQUE 和 PRIMARY KEY 约束有什么区别?
    一个表中应该只有一个 PRIMARY KEY,而可以有任意数量的 UNIQUE 键。

PRIMARY KEY 不允许使用 NULL 值,而 Unique 键则允许使用 NULL 值。

45.什么是 NULL 值?
用字段 NULL 值是没有值的字段。甲 NULL 值是从零值或包含空格的字段不同。

具有 NULL 值的字段是在记录创建过程中留为空白的字段。

假设表中有一个字段是可选的,并且可以在不向可选字段添加值的情况下插入记录

则该字段将以 NULL 值保存。

  1. NULL 值,零和空白之间有什么区别?
    如前所述,空值是没有值的字段,该值不同于零值和空格。

空值是没有值的字段。

零是数字,

空格是我们提供的值。space 的 ASCII 值为 CHAR(32)。

47.如何测试 NULL 值?
用字段 NULL 值是没有值的字段。NULL 值不能与其他 NULL 值进行比较。

因此,不可能使用比较运算符(例如=,<或<>)测试 NULL 值。

为此,我们必须使用 IS NULL 和 IS NOT NULL 运算符。

SELECT column_names FROM table_name WHERE column_name IS NULL;

SELECT column_names FROM table_name WHERE column_name IS NOT NULL;

48.什么是 SQL NOT NULL 约束?
NOT NULL 约束用于确保字段中的值不能为 NULL

49.什么是 CHECK 约束?
CHECK 约束用于限制一列或多列接受的值。

例如,“年龄”字段应仅包含大于 18 的值。

CREATE TABLE EMP_DETAILS(EmpID int NOT NULL, NAME VARCHAR (30) NOT NULL, Age INT CHECK (AGE > 18), PRIMARY KEY (EmpID));

50.什么是默认 约束?
如果在插入记录时未提供任何值,则 DEFAULT 约束用于在列中包括默认值。

51.什么是标准化?
规范化是表设计的过程,以最大程度地减少数据冗余。

53.什么是非正规化?
非规范化是一种数据库优化技术,用于提高数据库基础结构的性能。

它涉及将冗余数据添加到一个或多个表的过程。

在规范化的数据库中,我们将数据存储在单独的逻辑表中,并尝试最小化冗余数据。

54.什么是存储过程?
存储过程是已创建并存储在数据库中以执行特定任务的 SQL 语句的集合。

该存储过程接受输入参数并对其进行处理,并返回单个值,

例如数字或文本值或结果集(行集)。

55.什么是扳机?
触发器是一个 SQL 过程,用于响应事件(插入,删除或更新)而启动操作。

当新雇员添加到 Employee_Details 表中时,新记录将在相关表中创建,

例如 Employee_Payroll,Employee_Time_Sheet 等,

56.解释 SQL 数据类型?
在 SQL Server 中,数据库表中的每一列都有一个名称和一种数据类型。

在创建 SQL 表时,我们需要决定在表的每一列中存储哪种数据类型。

57.可以在 BOOLEAN 数据字段中存储哪些可能的值?
真与假

  1. BYTE 数据字段中可以存储的最大值是多少?
    一个字节中可以表示的最大数字是 11111111 或 255。

可能的值的数目是 256(即 255(最大的可能值)加上 1(零)或 2 8)。

  1. SQL 中有哪些运算符?
    SQL Operator 是保留字,主要在 SQL 语句的 WHERE 子句中使用,以执行诸如算术运算和比较之类的操作。这些用于在 SQL 语句中指定条件。

共有三种类型的运算符。

算术运算符、比较运算符、逻辑运算符

  1. SQL Server 运行哪个 TCP / IP 端口?
    默认情况下为 1433

61.列出 ACID 属性并解释?
以下是 ACID 的四个属性。这些保证了数据库事务的可靠处理。

原子性

一致性

隔离

耐用性

62.定义 SELECT INTO 语句。
SELECT INTO 语句将数据从一个表复制到新表中。将使用旧表中定义的列名和类型创建新表。您可以使用 AS 子句创建新的列名称。

SELECT * INTO newtable FROM oldtable WHERE condition;

  1. Delete,Truncate 和 Drop 命令之间有什么区别?
    Delete,Truncate 和 Drop 命令之间的区别是

Delete 命令是 DML 命令,用于从表中删除行。可以回滚。

Truncate 是 DDL 命令,用于删除表中的所有行并释放包含表的空间。它不能回滚。

Drop 是 DDL 命令,它会删除完整的数据以及表结构(与 truncate 命令仅删除行不同)。所有表的行,索引和特权也将被删除。

  1. Delete 和 Truncate 有什么区别?
    Delete 和 Truncate 之间的区别是

删除截短 Delete 语句用于从表中删除行。可以回滚。Truncate 语句用于删除表中的所有行并释放包含表的空间。它不能回滚。我们可以在 DELETE 语句中使用 WHERE 条件,并可以删除所需的行我们不能在 TRUNCATE 语句中使用 WHERE 条件。因此,我们不能仅删除必需的行我们可以使用 DELETE 删除特定的行我们只能使用 TRUNCATE 一次删除所有行删除是 DML 命令截断是 DDL 命令删除维护日志,并且性能比截断慢截断可最大限度地减少日志并提高性能我们需要对 Table 具有 DELETE 权限才能使用 DELETE 命令我们至少需要对表具有 ALTER 权限才能使用 TRUNCATE 命令

  1. Union 和 Union All 命令之间有什么区别?
    这是棘手的 SQL 面试问题之一。采访者可能以另一种方式问您这个问题,因为“全联盟”优于“全联盟”有什么优势。

Union 和 Union All 都将两个表的结果连接在一起,但是这两个查询处理重复表的方式不同。

联合:省略重复的记录,仅返回两个或多个 select 语句的不同结果集。

全部合并: 返回不同选择语句结果集中的所有行,包括重复项。

在性能方面,Union All 比 Union 更快,因为 Union All 不会删除重复项。联合查询检查重复值,这会花费一些时间来删除重复记录。

假定:表 1 有 10 条记录,表 2 有 10 条记录。两个表中的最后一条记录是相同的。

如果运行联合查询。

SELECT * FROM Table1UNIONSELECT * FROM Table2

输出:共 19 条记录

如果运行联合查询。

SELECT * FROM Table1UNION ALLSELECT * FROM Table2

输出:共 20 条记录

两个表中所有列的数据类型应相同。

  1. SQL 中的 CLAUSE 是什么?
    SQL CLAUSE 通过为 SQL 查询提供条件来帮助限制结果集。

CLAUSE 有助于从整个记录集中过滤行。SQL 子句在哪里和拥有。

  1. Have 和 Where 子句有什么区别?
    Where 子句用于从指定特定条件的数据库中获取数据,而 Haveing 子句

与“ GROUP BY”一起使用以获取符合 Aggregate 函数指定的特定条件的数据。

Where 子句不能与 Aggregate 函数一起使用,但是 Haveing 子句可以。

  1. SQL 中的聚合函数是什么?
    SQL 聚合函数返回单个值,该值是根据列中的值计算得出的。

SQL 中的一些汇总函数如下

AVG()–此函数返回平均值

COUNT()–此函数返回行数

MAX()–此函数返回最大值

MIN()–此函数返回最小值

ROUND()–此函数将数字字段舍入为指定的小数位数

SUM()–此函数返回总和

  1. SQL 中的字符串函数是什么?
    SQL 字符串函数主要用于字符串操作。

一些广泛使用的 SQL 字符串函数是

LEN()–返回文本字段中值的长度

LOWER()–将字符数据转换为小写

UPPER()–将字符数据转换为大写

SUBSTRING()–它从文本字段中提取字符

LTRIM()–从字符串开头删除所有空格

RTRIM()–删除字符串末尾的所有空格

CONCAT()–串联函数将多个字符串组合在一起

REPLACE()–更新字符串的内容。

70.什么是用户定义的功能?
顾名思义,这些是由用户根据其要求编写的。

用户定义的函数是编写为在需要时使用逻辑的函数。

71.什么是用户定义功能的所有类型?
用户定义的函数有三种类型,即

•标量函数

•内联表值函数

•多语句值函数

标量函数返回单位,变体定义了 return 子句。

内联表值函数和多语句值函数以返回表的形式返回表。

72.什么是自加入?
自联接是表与自身联接的联接,特别是当表具有引用其自己的主键的外键时。

73.什么是交叉加入?
如果未与交叉联接一起使用 WHERE 子句,则交叉联接将产生一个结果集

该结果集是第一个表中的行数乘以第二个表中的行数。

这种结果称为笛卡尔积。如果假设在交叉联接中使用 Where 子句

则查询将像内部联接一样工作。

74.什么是整理?
归类定义为一组规则,这些规则确定如何对字符数据进行排序和比较。

使用定义正确字符序列的规则以及用于指定区分大小写,字符宽度,重音符号,

假名字符类型的选项对字符数据进行排序。

75.归类敏感性有哪些不同类型?
排序规则敏感性的不同类型如下

:区分大小写:A 和 a 以及 B 和 b。

假名敏感性:日语假名字符。

宽度灵敏度:单字节字符和双字节字符。

口音敏感度。

实用的 SQL 查询面试问题(带有答案的 SQL Server 查询示例)

在这一部分中,我们将看到 SQL 实践问题,其中包含复杂的 SQL 查询面试问题和基本的 SQL 面试问题。

让我们看一下重要的 SQL 查询以进行面试

76.如何从表中获取唯一记录?
通过使用 DISTINCT 关键字,我们可以从表中获得唯一记录

SELECT DISTINCT Col1, Col2 from Table1

77.用于获取字符串的前 5 个字符的命令是什么?
提取字符串的前 5 个字符的一些方法如下:

SELECT RIGHT(EmpName,5) AS EmployeeName FROM Employee

SELECT SUBSTRING(EmpName,1,5) AS EmployeeName FROM Employee

78.如何在 Employee_Details 表中添加具有以下详细信息的新 Employee 详细信息
Employee_Name:yuhan,工资:5500,年龄:29?

INSERT into Employee_Details (Employee_Name, Salary, Age) VALUES (‘yuhan’, 5500 , 29);

79.如何在表 Employee_Details 中添加“工资”列?
ALTER TABLE Employee_Details ADD (Salary);

80.对于表 Employee_Details 中的 Employee_Name’yuhan’,如何将’Salary’字段的值更改为 7500?
UPDATE Employee_Details set Salary = 7500 where Employee_Name = ‘yuhan’;

81.编写 SQL 查询以从表中选择所有记录?
Select * from table_name;

82.如何从数据库中获取所有表的列表?
查看特定数据库上可用的表

USE TestDBGOSELECT * FROM sys.TablesGO

83.定义 SQL Delete 语句。
SQL Delete 语句用于从表中删除记录。

DELETE FROM table_name WHERE some_column=some_value;

84.编写命令以从“玩家”表中删除所有名为 Sachin 的玩家。
DELETE from Players WHERE Player_Name = ‘Sachin’

86.如何从一个 employee 表中仅一次获取每个名字?
通过使用 DISTINCT 关键字,我们每个名字只能获得一次。

SELECT DISTINCT employee_name FROM employee_table;

87.如何在 SQL 查询输出中重命名列?
通过使用 SQL AS 关键字

SELECT column_name AS new_name FROM table_name;

  1. SQL SELECT 的顺序是什么?
    SQL SELECT 语句的顺序如下

选择,从,在哪里,分组依据,拥有,订购依据。

89.如何在 SQL 中显示当前日期?
在 SQL 中,有一个名为 GetDate()的内置函数,该函数有助于返回当前日期。

90.编写 SQL SELECT 查询,该查询从 Employee_Details 表返回名字和姓氏。
SELECT FirstName, LastName FROM Employee_Details;

93.如何重命名表?
SP_RENAME TABLE ‘SCOREBOARD’, ‘OVERALLSCORE’

重命名表名和列名

sp_rename OldTableName,NewTableName

sp_rename ‘TableName.OldColumnName’, ‘NewColumnName’

94.如何从表中选择所有偶数记录?
要从表中选择所有偶数记录:

Select * from table where id % 2 = 0

95.如何从表中选择所有奇数记录?
要从表中选择所有奇数记录:

Select * from table where id % 2 != 0

96.什么是 SQL CASE 语句?
SQL Case 语句允许在 SELECT 语句中嵌入 if-else like 子句。

98.下面的查询结果是什么?
select case when null = null then ‘True’ else ‘False’ end as Result;

该查询返回“ False”。在上述问题中,我们可以看到 null = null 不是比较 null 值的正确方法。为了将一个值与 null 进行比较,我们在 SQL 中使用 IS 运算符。

所以正确的方法如下

select case when null is null then ‘True’ else ‘False’ end as Result;

99.下面的查询结果是什么?
select case when null is null then ‘Queries In SQL Server’ else ‘Queries In MySQL’ end as Result;

该查询将返回“ SQL Server 中的查询”。

101.描述 SQL 注释?
单行注释:单行注释以两个连续的连字符(–)开头,并以该行的结尾结束。

多行注释:多行注释以/开头,并以/结尾。//之间的任何文本都将被忽略。

  1. NVL 函数,IFNULL 函数和 ISNULL 函数有什么区别?
    这三个功能以相同的方式工作。这些函数用于将 NULL 值替换为另一个值。Oracle 开发人员使用 NVL 函数,MySQL 开发人员使用 IFNULL 函数,而 SQL Server 开发人员使用 ISNULL 函数。

假设列中的某些值是 NULL。

如果在下面的语句中运行,则结果为 NULL

SELECT col1 * (col2 + col3) FROM Table1

假设 col3 中的任何值为 NULL,那么正如我所说的,您的结果将为 NULL。

为了克服这个问题,我们使用 NVL()函数,IFNULL()函数,ISNULL()函数。

甲骨文:

SELECT col1 * (col2 + NVL(col3,0)) FROM Table1

MySQL:

SELECT col1 * (col2 + IFNULL(col3,0)) FROM Table1

另外,您可以使用 COALESCE()函数

SELECT col1 * (col2 + COALESCE(col3,0)) FROM Table1

SQL Server:

SELECT col1 * (col2 + ISNULL(col3,0)) FROM Table1

103.什么是数据库测试?
它是 AKA 后端测试或数据测试。

数据库测试涉及验证前端数据与后端数据的完整性。

它验证架构,数据库表,列,索引,存储过程,触发器,数据重复,孤立记录,垃圾记录。

它涉及更新数据库中的记录并在前端进行验证。

  1. GUI 测试和数据库测试有什么区别?
    GUI 测试是 AKA 用户界面测试或前端测试。

数据库测试是 AKA 后端测试或数据测试。

GUI 测试处理向用户开放以进行交互的所有可测试项目,例如菜单,窗体等。

数据库测试处理通常对用户隐藏的所有可测试项目。

正在执行 GUI 测试的测试人员无需了解结构化查询语言

正在执行数据库测试的测试人员无需了解结构化查询语言

GUI 测试包括使文本框,复选框,按钮,下拉菜单,表单等无效,主要是整个应用程序的外观

数据库测试涉及验证前端数据的完整性和后端数据的完整性结束。它验证架构,数据库表,列,索引,存储过程,触发器,数据重复,孤立记录,垃圾记录。它涉及更新数据库中的记录并在前端进行验证。

如果文章对你有帮助,别忘记点赞、评论、Get!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值