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

原创
2021/01/15 12:00
阅读数 376

1.什么是数据库?

数据库是组织形式的信息的集合,用于替换,更好地访问,存储和操纵。也可以将其定义为表,架构,视图和其他数据库对象的集合。

2.什么是数据仓库?

数据仓库是指来自多个信息源的中央数据存储库。这些数据经过整合,转换,可用于采矿和在线处理。

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

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

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

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

5.什么是数据库中的记录?

记录(也称为数据行)是表中相关数据的有序集合。


6.什么是表中的列?

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

7.什么是DBMS?

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

8. 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),执行查询,针对数据库检索,插入,更新,删除数据。


12. SQL命令有哪些不同类型?

SQL命令分为以下几种类型:DDL –数据定义语言DML –数据处理语言DQL –数据查询语言DCL –数据控制语言TCL –交易控制语言


13. SQL中有哪些不同的DDL命令?

DDL命令用于定义或更改数据库的结构。CREATE:创建数据库和数据库对象ALTER:更改现有的数据库对象DROP:删除数据库和数据库对象TRUNCATE:从表中删除所有记录,但不删除其数据库结构RENAME:重命名数据库对象


14. SQL中有哪些不同的DML命令?

DML命令用于管理数据库中存在的数据。SELECT:从数据库中选择特定数据INSERT:将新记录插入表中UPDATE:更新现有记录DELETE:从表中删除现有记录

15. SQL中有哪些不同的DCL命令?

DCL命令用于创建角色,授予权限以及控制对数据库对象的访问。GRANT:提供用户访问权限DENY:拒绝用户权限REVOKE:删除用户访问权限


16. 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.RenameAlias有什么区别?

Rename”是赋予表或列的永久名称Alias”是赋予表或列的临时名称。


32.什么是Join

join是一个查询,它从多个表中检索相关的列或行。

33.联接的类型有哪些?

联接的类型如下:内部联接左联接正确加入外连接


35.内部联接和外部联接之间有什么区别?

内部联接:当正在比较的两个(或多个)表之间至少有一些匹配数据时,内部联接将返回行。外部联接:外部联接从两个表返回行,这些行包括与一个或两个表不匹配的记录。


36.什么是SQL约束?

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

37. SQL中可用的约束有哪些?

SQL中的一些约束包括–主键,外键,唯一键,SQL非空,默认,检查和索引约束。


38.什么是唯一约束?

使用唯一约束来确保字段/列中没有重复值。

39.什么是主键?

一个PRIMARY KEY 约束唯一标识数据库表中的记录。参与主键约束的所有列均不得包含NULL值。


40.一个表可以包含多个PRIMARY  KEY吗?

简短的答案是“否”,一个表不允许包含多个主键,但是它允许一个包含两个或更多列的复合主键。


41.什么是复合 主键

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


42.什么是外

一个FOREIGN KEY是用于两个表连接在一起的关键。一个FOREIGN KEY 的表与链接的PRIMARY KEY 另一个表。

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

一个表可以有许多 FOREIGN  KEY。


44. UNIQUEPRIMARY KEY约束有什么区别?

一个表中应该只有一个PRIMARY KEY,而可以有任意数量的UNIQUE键。PRIMARY KEY 不允许使用 NULL值,而Unique键则允许使用NULL值。


45.什么是NULL值?

用字段NULL值是没有值的字段。甲NULL值是从零值或包含空格的字段不同。具有NULL值的字段是在记录创建过程中留为空白的字段。假设表中有一个字段是可选的,并且可以在不向可选字段添加值的情况下插入记录则该字段将以NULL值保存。


46. 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 &gt; 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数据字段中存储哪些可能的值?

  

  真与假


58. BYTE数据字段中可以存储的最大值是多少?

一个字节中可以表示的最大数字是11111111或255。可能的值的数目是256(即255(最大的可能值)加上1(零)或2 8)。



59. SQL中有哪些运算符?

SQL Operator是保留字,主要在SQL语句的WHERE子句中使用,以执行诸如算术运算和比较之类的操作。这些用于在SQL语句中指定条件。共有三种类型的运算符。算术运算符、比较运算符、逻辑运算符


60. SQL Server运行哪个TCP / IP端口?

默认情况下为1433


61.列出ACID属性并解释? 

以下是ACID的四个属性。这些保证了数据库事务的可靠处理。原子性一致性隔离耐用性



62.定义SELECT INTO语句。

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



SELECT * INTO newtable FROM oldtable WHERE condition;

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


DeleteTruncateDrop命令之间的区别是Delete命令是DML命令,用于从表中删除行。可以回滚。TruncateDDL命令,用于删除表中的所有行并释放包含表的空间。它不能回滚。DropDDL命令,它会删除完整的数据以及表结构(与truncate命令仅删除行不同)。所有表的行,索引和特权也将被删除。

64. Delete和Truncate有什么区别?

Delete和Truncate之间的区别是


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


65. Union和Union All命令之间有什么区别?


这是棘手的SQL面试问题之一。采访者可能以另一种方式问您这个问题,因为“全联盟”优于“全联盟”有什么优势。Union和Union All都将两个表的结果连接在一起,但是这两个查询处理重复表的方式不同。联合:省略重复的记录,仅返回两个或多个select语句的不同结果集。全部合并: 返回不同选择语句结果集中的所有行,包括重复项。在性能方面,Union AllUnion更快,因为Union All不会删除重复项。联合查询检查重复值,这会花费一些时间来删除重复记录。假定:表110条记录,表2 有10条记录。两个表中的最后一条记录是相同的。如果运行联合查询。SELECT * FROM Table1UNIONSELECT * FROM Table2    输出:共19条记录如果运行联合查询。SELECT * FROM Table1UNION ALLSELECT * FROM Table2    输出:共20条记录两个表中所有列的数据类型应相同。

66. SQL中的CLAUSE是什么?


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


67. Have和Where子句有什么区别?


Where子句用于从指定特定条件的数据库中获取数据,而Haveing子句与“ GROUP BY”一起使用以获取符合Aggregate函数指定的特定条件的数据。Where子句不能与Aggregate函数一起使用,但是Haveing子句可以。


68. SQL中的聚合函数是什么?

SQL聚合函数返回单个值,该值是根据列中的值计算得出的。SQL中的一些汇总函数如下
AVG()–此函数返回平均值COUNT()–此函数返回行数MAX()–此函数返回最大值MIN()–此函数返回最小值ROUND()–此函数将数字字段舍入为指定的小数位数SUM()–此函数返回总和


69. 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 EmployeeSELECT 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;


88. 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,NewTableNamesp_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注释?


单行注释:单行注释以两个连续的连字符(–)开头,并以该行的结尾结束。多行注释:多行注释以/*开头,并以*/结尾。/*和*/之间的任何文本都将被忽略。

102. NVL函数,IFNULL函数和ISNULL函数有什么区别?


这三个功能以相同的方式工作。这些函数用于将NULL值替换为另一个值。Oracle开发人员使用NVL函数,MySQL开发人员使用IFNULL函数,而SQL Server开发人员使用ISNULL函数。假设列中的某些值是NULL。如果在下面的语句中运行,则结果为NULLSELECT 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 ServerSELECT col1 * (col2 + ISNULL(col3,0)) FROM Table1

103.什么是数据库测试?


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


104. GUI测试和数据库测试有什么区别?


GUI测试是AKA用户界面测试或前端测试。数据库测试是AKA后端测试或数据测试。GUI测试处理向用户开放以进行交互的所有可测试项目,例如菜单,窗体等。数据库测试处理通常对用户隐藏的所有可测试项目。正在执行GUI测试的测试人员无需了解结构化查询语言正在执行数据库测试的测试人员无需了解结构化查询语言GUI测试包括使文本框,复选框,按钮,下拉菜单,表单等无效,主要是整个应用程序的外观数据库测试涉及验证前端数据的完整性和后端数据的完整性结束。它验证架构,数据库表,列,索引,存储过程,触发器,数据重复,孤立记录,垃圾记录。它涉及更新数据库中的记录并在前端进行验证。


往期推荐


刷完500道高频面试题,我能去面试大厂了吗?(持续更新)

SeleniumWebDriver运行数据库测试?

Selenium Webdriver上传文件,别傻傻的分不清得3种方法

如何将功能测试用例转为自动化脚本?

为什么集成测试被人瞧不起?我不理解还是?

微软开源最强自动化工具-Playwright

如何使用Selenium WebDriver查找错误的链接?

测试自动化框架的类型| 您应该知道的一切-软件测试材料



本文分享自微信公众号 - 软件测试test(gh_d29759b02f67)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部