最好的 SQL 问题,可以增强你对下一次数据库开发人员工作面试的信心。嗯,还有更多,但是这组提炼的问题涵盖了所有 SQL 功能,这将使你能够更好地准备面对面试。你还可以通过为你推荐的最佳SQL 教程来提高你的 SQL 技能。
最佳SQL常见的面试题和答案合集
在这里,我们列出了面试官经常问到的顶级 SQL 面试问题和答案。
初级面试问题
问:DBMS 和 RDBMS 有什么区别?
答: DBMS 是帮助你构建和维护数据库的软件应用程序。RDBMS 是 DBMS 的子集,是基于 DBMS 关系模型的数据库管理系统。
问题:我们可以在 SQL 中嵌入 Pl/SQL 吗?证明你的答案
SQL面试题解析: PL/SQL 是一种过程语言,其中包含一个或多个 SQL 语句。所以 SQL 可以嵌入到一个 PL/SQL 块中;但是,PL/SQL 不能嵌入到 SQL 中,因为 SQL 一次执行一个查询。
DECLARE /* this is a PL/SQL block */
qty_on_hand NUMBER(5);
BEGIN
SELECT quantity INTO qty_on_hand FROM inventory /* this is the SQL statement embedded in the PL/SQL block */
WHERE product = 'TENNIS RACKET';
END;
问题:你所说的数据操作语言 - DML 是什么意思?
答: DML 包括用于存储、修改、删除和检索数据的最常见的 SQL 语句。它们是选择、更新、插入和删除。
INSERT INTO table_name /* Insert 是一个 DML 语句 */
VALUES ( value , value , value ...)
INSERT INTO customers /* 数据被插入到表中customers */
VALUES ('George' , 'Washington' , 'Connecticut' )
SQL常见的面试题有哪些:SQL 中的联接是什么?联接的类型有哪些?
答: join 用于根据字段之间的关系从多个表中查询数据。
有四种类型的联接:
- 内联接
当表之间至少有一个行匹配时,将返回行。
select first_name, last_name, order_date, order_amount
from customers c
inner join orders o
on c.customer_id = o.customer_id
/* 客户和订单是两张表。数据将从两个表中显示,其中客户表中的 customer_id匹配订单表中
的 customer_id。*/
- 右连接
对,join 返回右表中的所有行以及表之间共享的行。如果左表中没有匹配的行,它仍然会返回右表中的所有行。
select first_name, last_name, order_date, order_amount
from customers c
left join orders o
on c.customer_id = o.customer_id
/* 客户和订单是两张表。Orders 表中的所有行都返回,以及 Customers 表中的匹配行(如果有)*/
- 左连接
左联接返回左表中的所有行以及表之间共享的行。如果右表中没有匹配的行,它仍然会返回左表中的所有行。
select first_name, last_name, order_date, order_amount
from customers c
left join orders o
on c.customer_id = o.customer_id
/* 客户和订单是两张表。返回客户表中的所有行以及订单表中的匹配行(如果有)*/
- 全连接
当任一表中存在匹配的行时,全联接返回行。这意味着它返回左侧表中的所有行和右侧表中的所有行。
select first_name, last_name, order_date, order_amount
from customers c
full join orders o
on c.customer_id = o.customer_id
/* 客户和订单是两张表。返回 Orders 表和 customer 表中的所有行 */
问题:SQL 中的 CHAR 和 VARCHAR2 数据类型有什么区别?
答: CHAR用于存储定长字符串,VARCHAR2用于存储变长字符串。
例如,假设你将字符串 'Database' 存储在 CHAR(20) 字段和 VARCHAR2(20) 字段中。
CHAR 字段将使用 22 个字节(前导长度为2 个字节 )。该VARCHAR2场将使用10个字节仅(8为所述字符串,2个字节用于主要长度)。
问题:解释 SQL 约束?
答:约束用于指定表中数据类型的规则。
它们可以在创建和更改表时指定。
以下是 SQL 中的约束:
- NOT NULL - 限制将 NULL 值插入到列中。
- CHECK - 验证字段中的所有值是否满足条件。
- DEFAULT - 如果没有为该字段指定值,则自动分配一个默认值。
- UNIQUE - 确保将唯一值插入到字段中。
- INDEX - 索引一个字段,提供更快的记录检索。
- PRIMARY KEY - 唯一标识表中的每条记录。
- FOREIGN KEY - 确保另一个表中记录的参照完整性。
问题: 什么是主键、外键和唯一键
回答:
- 主键是表中唯一标识一行的字段。不能为NULL
- 外键是一个表中的一个字段,它是另一个表中的主键。通过引用一个表的外键和另一个表的主键来在两个表之间创建关系。
在下面的例子中,salary 表中的employee_id_ref 是外键。
- 唯一键唯一标识表中的记录。一个表上可以定义许多唯一的键约束。
EMP_ID | EMP_NAME | Government_ID |
222 | Harry | 111-203-987 |
333 | Stephan | 789-456-123 |
444 | Lan | 745-562-321 |
#BBD0E0 »
在上表中,Emp_id 是主键,而 Government_id 是唯一键。你可能希望 Government_id 对于每个员工都是唯一的。由于数据属于政府,你可能不希望它成为主键。
问题:什么是触发器?
答:触发器是存储的程序,当诸如 INSERT、DELETE、UPDATE(DML) 语句之类的事件发生时,它们会自动执行。触发器也可以被调用以响应数据定义语句 (DDL) 和数据库操作,例如,SERVER ERROR、LOGON。
create trigger dbtrigger
on database
for
create_table,alter_table,drop_table
as
print'you can not create ,drop and alter table in this database'
rollback;
create trigger emptrigger
on emp
for
insert,update,delete
as
print'you can not insert,update and delete this table i'
rollback;
中级面试题
问题:事务中的 ACID 属性是什么
回答:为了保持数据库“前后”事务的一致性,需要遵循某些属性。他们是
- 原子性:这意味着事务必须完全发生,不能中途离开。
- 一致性:保持完整性约束,因此有效数据进入数据库
- 隔离:控制并发
- 持久性:一旦提交事务,它就会保持提交状态
问题:Dateadd SQL 是什么?
答: Dateadd 是一个函数,用于在日期的指定部分添加一个数字并返回修改后的日期。语法- DATEADD (date_part, value, input_date); 日期部分可以如下-
date_part | 缩写 |
Year | yy, yyyy |
Quarter | qq, q |
Month | mm, m |
dayofyear | dy, y |
Day | dd, d |
Week | wk, ww |
Hour | hh |
Minute | mi, n |
Second | ss, s |
millisecond | ms |
microsecond | mcs |
nanosecond | ns |
SQL常见的面试题和答案合集:事务控制中的 SAVEPOINT 是什么?
答: SAVEPOINT 是事务中的一个点,你可以将事务回滚到某个点,而无需回滚整个事务。
SQL> SAVEPOINT A
SQL> INSERT INTO TEST VALUES (1,'Savepoint A');
1 row inserted.
SQL> SAVEPOINT B
SQL> INSERT INTO TEST VALUES (2,'Savepoint B');
1 row inserted.
SQL> ROLLBACK TO B;
Rollback complete.
SQL> SELECT * FROM TEST;
ID MSG
-------- -----------
1 Savepoint A
问题:什么是自然连接?
答案:默认情况下,自然连接是内部连接,它根据要连接的两个表中的公共列创建隐式连接:
NATURAL JOIN 可以是 INNER 连接、LEFT OUTER 连接或 RIGHT OUTER 连接。默认为内部连接。
如果表 COUNTRIES 和 CITIES 有两个名为 COUNTRY 和 COUNTRY_ISO_CODE 的公共列,则以下两个 SELECT 语句是等效的:
SELECT * FROM COUNTRIES NATURAL JOIN CITIES
SELECT * FROM COUNTRIES JOIN CITIES
USING (COUNTRY, COUNTRY_ISO_CODE)
问题:什么是交叉连接?
SQL面试题解析:在 SQL 交叉联接中,两个表中每一行的组合都包含在结果集中。这也称为跨产品联接。例如,如果表 A 有 10 行,表 B 有 20 行,则结果集将有 10 * 20 = 200 行,前提是 SQL 语句中有 NOWHERE 子句。
问题:SQL 的子集是什么?
回答:
以下是SQL的子集
- DDL(数据定义语言):包括 CREATE、ALTER 和 DELETE 等 SQL 命令。
- DML(Data Manipulation Language):访问和操作数据使用INSERT、UPDATE命令
- DCL(数据控制语言):控制对数据库的访问。使用像 GRANT 和 REVOKE 这样的命令。
问题:SQL 中的标量函数是什么?举个例子?
答:标量函数用于根据输入值返回单个值。标量函数如下:
- UCASE():将指定字段转换为大写
SELECT UCASE("SQL Tutorial is FUN!") AS UppercaseText;
UppercaseText
SQL TUTORIAL IS FUN!
- LCASE():将指定字段转换为小写
SQL常见的面试题有哪些:什么是游标,什么时候使用?
答:游标是一个数据库对象,用于通过在结果集中逐行遍历来操作数据。当你需要从结果集中一次检索一行数据以及需要一次更新一行记录时,将使用游标。
DECLARE @CustomerId INT
,@Name VARCHAR(100)
,@Country VARCHAR(100)
--DECLARE AND SET COUNTER.
DECLARE @Counter INT
SET @Counter = 1
--DECLARE THE CURSOR FOR A QUERY.
DECLARE PrintCustomers CURSOR READ_ONLY
FOR
SELECT CustomerId, Name, Country
FROM Customers
--OPEN CURSOR.
OPEN PrintCustomers
--FETCH THE RECORD INTO THE VARIABLES.
FETCH NEXT FROM PrintCustomers INTO
@CustomerId, @Name, @Country
--LOOP UNTIL RECORDS ARE AVAILABLE.
WHILE @@FETCH_STATUS = 0
BEGIN
IF @Counter = 1
BEGIN
PRINT 'CustomerID' + CHAR(9) + 'Name' + CHAR(9) + CHAR(9) + CHAR(9) + 'Country'
PRINT '------------------------------------'
END
--PRINT CURRENT RECORD. PRINT CAST(@CustomerId AS VARCHAR(10)) + CHAR(9) + CHAR(9) + CHAR(9) + @Name + CHAR(9) + @Country
--INCREMENT COUNTER.
SET @Counter = @Counter + 1
--FETCH THE NEXT RECORD INTO THE VARIABLES.
FETCH NEXT FROM PrintCustomers INTO
@CustomerId, @Name, @Country
END
--CLOSE THE CURSOR.
CLOSE PrintCustomers
DEALLOCATE PrintCustomers
问题:什么是基于集合的解决方案?
回答:游标对单个行进行操作,在集合的情况下,它对结果数据集起作用,该数据集可以是表/视图或两者的连接。结果集是 SQL 查询的输出。
问题:什么是前向游标?
答:前向游标支持从结果集中从头到尾获取行。你不能转到结果集中的前一行。
问题:陈述一种基于集合的解决方案优于基于游标的解决方案的情况
答:基于集合的解决方案可提供更好的性能,因为它们处理结果集而不是一次处理一行。它们简洁且更具可读性。
问题:什么是归一化,什么是范式
答: 规范化是数据库设计中的一个过程,目的是最大限度地减少数据冗余和依赖性。数据库被分成两个或多个表,并在它们之间定义关系。
- 第一范式:表中的每条记录都是唯一的,并由主键或组合键标识
StudiD Name Phonenum
-----------------------
1 John 9176612345,9176645698
2 Susie 9176645789
3 Jim 9176696325
在上表中,“phonenum”字段是一个多值属性,因此它不在 1NF 中。
下表在 1NF 中,因为没有多值属性
StudiD Name Phonenum
------------------
1 John 9176612345
1 John 9176645698
2 Susie 9176645789
3 Jim 9176696325
- 第二范式:表必须是第一范式,并且它应该有一个单列作为它的主键。2NF 试图减少存储在内存中的冗余数据。为了将上表引入 2NF,我们将表拆分为两个表
StudiD Name /* student table */
1. John
2 Susie
3. Jim
StudiD Phonenum /* studentphonenumber table */
------------------
1 9176612345
1 9176645698
2 9176645789
3 9176696325
- 第三范式:表格必须是第二范式,并且必须没有传递函数依赖。即,非键列不得依赖于同一表中的另一个非键列。
考虑 EMPLOYEE_DETAIL 表:该表不是第三范式,因为字段 emp_state
emp_city 依赖于 emp_zip 而不是主键 emp_id。
EMP_ID | EMP_NAME | EMP_ZIP | EMP_STATE | EMP_CITY |
222 | Harry | 201010 | CT | Monroe |
333 | Stephan | 02228 | TX | Dallas |
444 | Lan | 060007 | IL | Chicago |
上表被拆分为 2 个表,现在这些表处于第三范式。
员工表:
EMP_ID | EMP_NAME | EMP_ZIP |
222 | Harry | 201010 |
333 | Stephan | 02228 |
444 | Lan | 060007 |
EMPLOYEE_ZIP 表:
EMP_ZIP | EMP_STATE | EMP_CITY |
201010 | CT | Monroe |
02228 | TX | Dallas |
060007 | IL | Chicago |
问题:什么是去规范化,你什么时候开始使用它?
答:反规范化是一种有时用于提高性能的技术,因此表设计允许冗余数据以避免复杂的连接。如果应用程序涉及大量读取操作,则以写入操作性能为代价使用反规范化。
问题:什么是聚集索引和非聚集索引?
答:一张表只能有一个聚集索引。在这种类型的索引中,它根据键值对表重新排序并按该顺序物理存储它们。
非聚集索引没有表中数据的物理顺序,它具有逻辑顺序。
CREATE CLUSTERED INDEX IX_tblStudent_Gender_Score
ON student(gender ASC , total_score DESC )
上面的脚本在学生表上创建了一个名为“IX_tblStudent_Gender_Score”的聚集索引。该索引是在“gender”和“total_score”列上创建的。在多个列上创建的索引称为“复合索引”。
非聚集索引不对表内的物理数据进行排序。非聚集索引存放在一处,表数据存放在另一处。这允许每个表有多个非聚集索引。
CREATE NONCLUSTERED INDEX IX_tblStudent_Name
ON student( name ASC )
上面的脚本在学生表的“姓名”列上创建了一个非聚集索引——索引按姓名升序排序。表数据和索引将存储在不同的地方。
问题:什么是 T-SQL?
答:它是由 Sybase 开发并被 Microsoft 使用的 SQL(结构化查询语言)的扩展。
问题:什么是系统函数并举例说明
答:系统函数是在数据库服务器上执行的操作,并相应地返回值。示例@@ERROR - 如果前一个 Transact-SQL 语句没有遇到错误,则返回 0。否则返回错误号。
@@ERROR -如果前一个 Transact-SQL 语句没有遇到错误,则返回0 。
否则返回错误号。
问题:什么是事务日志?
答:日志是一个审计跟踪文件,其中存储了 DBMS 执行的操作的历史记录。
问题:如果从一个表中删除会自动导致另一个表中的删除,你如何维护数据库完整性?
答: ON DELETE CASCADE是父表发生删除时使用的命令,所有子记录自动删除,子表由父表中的外键引用。
CREATE TABLE products
( product_id INT PRIMARY KEY,
product_name VARCHAR(50) NOT NULL,
category VARCHAR(25)
);
CREATE TABLE inventory
( inventory_id INT PRIMARY KEY,
product_id INT NOT NULL,
quantity INT,
min_level INT,
max_level INT,
CONSTRAINT fk_inv_product_id
FOREIGN KEY (product_id)
REFERENCES products (product_id)
ON DELETE CASCADE
);
Products 表是父表,而inventory 表是子表。如果从父表中删除了 productid,则该 productid 的所有库存记录都将从子表中删除
问:SQL 和 MySQL 有什么区别?
答: SQL 是一种用于访问 DBMS 的结构化查询语言,而 MYSQL 是一种开源关系 DBMS。
问题:我们可以将 TRUNCATE 与 WHERE 子句一起使用吗?
答:不可以,我们不能将 TRUNCATE 与 WHERE 子句一起使用。
问题:定义 COMMIT
答:当在事务中使用 COMMIT 时,事务中所做的所有更改都会永久写入数据库。
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION;
上面的示例删除 SQL 服务器中的作业候选者。
问题:CHECK CONSTRAINT 有什么作用?
答: Check Constraint 限制了可以在数据库表中输入一列的值。它用作完整性约束检查。
创建“Persons”表时,以下 SQL 在“Age”列上创建 CHECK 约束。CHECK 约束确保你不能拥有任何 18 岁以下的人:
下面的语法在 MySQL 中。
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);
SQL常见的面试题和答案合集:什么是模式?
答:模式是数据库中特定用户/所有者的数据库对象的集合。对象可以是表、视图、索引等。
问题:如何从现有表创建一个空表?
一个答案:
CREATE TABLE NEW_TABLE_NAME AS SELECT [column1, column2 ……column]
FROM EXISTING_TABLE_NAME [WHERE ]
问题:什么是组合键?
答:当多列用于定义主键时,称为组合键。
这是在 MySQL 中创建复合键的 SQL 语法
CREATE TABLE SAMPLE_TABLE
(COL1 integer,
COL2 varchar(30),
COL3 varchar(50),
PRIMARY KEY (COL1, COL2));
问题:如何对表中的记录进行排序?
答: ORDER BY 子句用于对表中的记录进行排序。
SELECT * FROM Emp ORDER BY salary;
默认情况下,记录按升序返回。
问题:什么是共享锁?
答:当两个事务被授予对相同数据的读访问权限时,它们将被授予一个共享锁。这使得读取相同的数据成为可能,并且在共享锁被释放之前不会更新数据。
问题:什么是死锁?
回答:两个或多个事务无限期地等待彼此释放锁是一种不希望出现的情况。
下面是一个死锁情况的例子
问题:什么是锁升级?
答:锁升级是将行锁或页锁转换为表锁的过程。它是 RDBMS(如 SQL Server)动态使用的一种优化技术。
问题: 什么是 SQL 注入?
答: SQL 注入是一种代码注入技术,用于破解数据驱动的应用程序。
问题: 什么是视图,为什么使用它们?
答: SQL 视图是从一个或多个表创建的虚拟表。视图是数据的子集;因此,它可以限制表中数据的暴露程度。
以下 SQL 创建一个视图,显示来自巴西的所有客户:
CREATE VIEW Brazil_Customers_view AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = "Brazil" ;
你可以按如下方式查询上面的视图:
SELECT * FROM Brazil_Customers_view;
SQL常见的面试题有哪些:我们如何避免在查询中获得重复的条目?
答案: Select DISTINCT 用于使用查询从表中获取不同的数据
以下 SQL 语句仅从“Customers”表的“Country”列中选择 DISTINCT 值:
SELECT DISTINCT Country FROM Customers;
问题:举一个SQL中比较运算符的例子
答: EQUAL TO 写成 = 用于比较数据值
问题: 什么是子查询?
答:子查询是嵌套在更大查询中的 SQL 查询。
SELECT
employee_id, first_name, last_name
FROM
employees
WHERE
department_id IN (SELECT
department_id
FROM
departments
WHERE
location_id = 1700)
ORDER BY first_name , last_name;
括号内的查询称为子查询。它也称为内部查询或内部选择。包含子查询的查询称为外部查询或外部选择。
问题:什么是非相关子查询
答:非相关子查询是一个独立的查询,子查询的输出在主查询中被替换。
提前面试问题
问题:什么是系统权限?
回答:通常由 DBA 授予用户对数据库模式对象执行特定操作(例如创建表空间)的权限。
以下是可以授予用户的系统权限示例:
- CREATE TABLE 允许受赠者在受赠者的模式中创建表。
- CREATE USER 允许被授权者在数据库中创建用户。
- CREATE SESSION 允许受让人连接到 Oracle 数据库以创建用户会话。
问题:什么是对象特权?
SQL面试题解析:对象级权限是授予数据库用户帐户或角色对数据库对象执行某些操作的权限。这些对象权限包括对表的 SELECT、INSERT、UPDATE、DELETE、ALTER、INDEX 等。
以下示例是可以授予用户的对象权限:
- SELECT ON hr.employees TO myuser
- 将 hr.employees 插入到 myuser
问题:BCP 命令有什么作用?
答: BCP(批量复制)是一种实用程序或工具,可将表中的数据导出/导入到文件中,反之亦然
问题:什么是空值字段?
答案: NULL 值是一个没有值的字段。
问题:VARIANCE 函数有什么作用?
答案:此函数返回一组数字的 VARIANCE:
CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
SAL NUMBER(7, 2),
DEPTNO NUMBER(2));
INSERT INTO EMP VALUES (1, 'SMITH', 'CLERK', 800, 20);
INSERT INTO EMP VALUES (2, 'ALLEN', 'SALESMAN', 1600, 30);
INSERT INTO EMP VALUES (3, 'WARD', 'SALESMAN', 1250, 30);
INSERT INTO EMP VALUES (4, 'JONES', 'MANAGER', 2975, 20);
INSERT INTO EMP VALUES (5, 'MARTIN','SALESMAN', 1250, 30);
INSERT INTO EMP VALUES (6, 'BLAKE', 'MANAGER', 2850, 30);
INSERT INTO EMP VALUES (7, 'CLARK', 'MANAGER', 2850, 10);
INSERT INTO EMP VALUES (8, 'SCOTT', 'ANALYST', 3000, 20);
INSERT INTO EMP VALUES (9, 'KING', 'PRESIDENT',3000, 10);
INSERT INTO EMP VALUES (10,'TURNER','SALESMAN', 1500, 30);
INSERT INTO EMP VALUES (11,'ADAMS', 'CLERK', 1500, 20);
SQL> SELECT VARIANCE(sal)
2 FROM emp;
VARIANCE(SAL)
-------------
759056.818
问题:GRANT 和 REVOKE 命令的作用是什么?
答案: GRANT 命令启用对数据库对象的权限,而 REVOKE 命令删除它们。它们是 DCL 命令
GRANT CREATE ANY TABLE TO username
GRANT sysdba TO username
GRANT DROP ANY TABLE TO username
REVOKE CREATE TABLE FROM username
问题:什么是 UNION 运算符?
答案: UNION 运算符通过删除重复行来组合两个或多个 Select 语句的结果。SELECT 语句中的列和数据类型必须相同。
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
问题:存储过程存储在数据库中的什么位置?
答: 存储过程存储在数据库的数据字典中。
问题:我们可以在存储过程中调用存储过程吗?
答:是的,我们可以从另一个存储过程调用一个存储过程。例如,Procedure2 是名为Procedure1 的过程。Procedure1 和 Procedure2 都可以在其中实现业务逻辑。
Create PROCEDURE Procedure1
AS BEGIN
Exec Procedure2
END
问题:存储过程中存储的数据是否会增加访问时间或执行时间?解释
答:存储在存储过程中的数据的检索速度比 SQL 数据库中存储的数据快得多。数据可以预编译并存储在存储过程中。这减少了查询和编译之间的时间间隔,因为数据已被预编译并存储在过程中。
问题:存储过程可以包含返回值吗?
答:过程可能会或可能不会返回值。
问题:如果删除基表,视图是否可以处于活动状态?
Ans:否,视图不能在父表中处于活动状态被删除。
问题:SQL 中的一对多关系是什么?
答:在一对多关系中,一个表中的记录可以关联或关联到另一个表中的许多记录。
问题:区分 SQL 中的表和字段。
答:以列和行的形式组织的数据集合指的是表。表中的列数是指字段。
Table: Employee_Details
Fields: Emp_id, Emp_name, Emp_dept, Emp_salary
问题:什么是数据完整性?
答:数据完整性定义了存储在数据库中的数据的准确性、一致性和可靠性。
有四种数据完整性:
- 行完整性
- 色谱柱完整性
- 参照完整性
- 用户定义的完整性
问题:什么是实体和关系
回答:
- 实体:可以表示为表格的人、地点或任何现实世界的事物都称为实体。
示例:员工表表示组织中员工的详细信息。
- 关系:关系定义了实体之间共享的依赖关系。
示例:员工姓名、id、薪水可能属于相同或不同的表。
问题:编写 SQL 查询以获取当前日期。
回答:
SELECT CURDATE();
问题:什么是 TRUNCATE 命令?它与 DELETE 命令有何不同?
回答:
删除 | 截短 |
DML 命令 | DDL 命令 |
我们可以使用 WHERE 子句 | 我们不能使用 WHERE 子句 |
从表中删除一行。 | 从表中删除所有行。 |
我们可以回滚。 | 我们无法回滚。 |
问题:空、零和空格有什么区别?
答: NULL 是指未知、不可用、不适用或未分配的值。零是数字,空格被视为字符。
问题:SQL 中的除法运算符使用哪个函数返回余数?
答: MOD 函数返回除法运算中的余数。
问题:什么是大小写操作函数?
答案:大小写操作函数将表中的现有数据转换为小写、大写或混合大小写字符。
问题:SQL 中有哪些不同的大小写操作函数?
回答:
- LOWER:将所有字符转换为小写。
- UPPER:将所有字符转换为大写。
- INITCAP:将每个单词的首字母转换为大写
问:字符操作函数有哪些?
答:字符操作函数改变、提取和改变字符串。
SQL常见的面试题和答案合集:有哪些不同的字符操作功能?
回答:
- CONCAT:连接两个或多个字符串值。
- SUBSTR:提取特定长度的字符串。
- LENGTH:返回字符串的长度
- INSTR:返回特定字符的位置。
- LPAD:右对齐值的左侧字符值的填充。
- RPAD:左对齐值的右侧字符值的填充。
- TRIM:从开头和结尾或两者中删除定义的字符。
- REPLACE:用另一个字符序列替换特定的字符序列。
问题:定义不一致的依赖。
答:由于路径可能被破坏或丢失而访问数据的难度定义了不一致的依赖关系。不一致的依赖性使用户能够在错误的不同表中搜索数据,然后导致输出错误。
问题:SQL 中有哪些不同的运算符?
回答:
- 算术
- 比较
- 逻辑
问题:什么是 GROUP 函数?我们为什么需要它们?
答案:组函数处理一组行并为每个组返回一个结果。常用的组函数有 AVG、MAX、MIN、SUM、VARIANCE、COUNT
问题:区分 BETWEEN 和 IN 条件运算符。
答案: BETWEEN-根据值范围显示行
IN- 检查包含在一组特定值中的值。
例子:
SELECT * FROM Students where ROLL_NO BETWEEN 10 AND 50;
SELECT * FROM students where ROLL_NO IN (8,15,25);
问题:MERGE 语句是什么?
答案:该语句启用条件更新或插入到表中。如果该行存在则更新该行,如果该行不存在则插入该行。
问题:解释递归存储过程。
答案:调用自身直到达到某个边界条件的存储过程是递归存储过程。它使程序员能够使用一组代码 n 次。
问题:如何执行动态SQL?
答:可以通过以下方式执行:
- 通过执行带参数的查询。
- 通过使用 EXEC
- 通过使用 sp_executesql
问题:定义光标
答: Cursor 是一个控件,它允许遍历表的行和记录。它充当指向一组行中的一行的指针。它用于遍历数据库记录的检索、添加和删除。
问题:什么是存储过程?
SQL面试题解析:它是一个由许多SQL语句组成的访问数据库系统的函数。多个 SQL 语句被合并到一个存储过程中,并在需要时随时随地执行。
问题:你对自动增量的理解是什么?
回答:该关键字允许在表中插入新记录时生成新的唯一编号。它可以用于我们需要 PRIMARY KEY 的地方。
问题:什么是数据仓库?
答:来自多个信息源的数据存储在称为数据仓库的中央存储库中。数据仓库具有称为数据集市的数据子集。存储的数据被转换并用于在线挖掘和处理。
问题:什么是用户定义函数?
答:在需要时使用特定逻辑编写的函数是用户定义的函数。它通过避免再次编写相同的逻辑来避免冗余。
问题:提到用户定义函数的类型?
答:用户自定义函数分为三种:
- 标量函数
- 内联表值函数
- 多语句值函数
SQL常见的面试题有哪些:ALIAS 命令是什么?
回答:此命令为表或列提供另一个名称。它可以用在使用as关键字的 SQL 查询的 WHERE 子句中。
例子:
SELECT S.StudentID, E.Result from student S, Exam as E where S.StudentID = E.StudentID
S 和 E 分别是学生表和考试表的别名。
问题:什么是整理?
答:整理被定义为决定如何存储和比较数据的规则集。
问题:提及不同类型的校对敏感性。
答:以下是归类敏感度的类型:
- Case
- Kana
- Width
- Accent
问题:什么是 STUFF 和 REPLACE 函数?
回答:
STUFF:覆盖现有字符或将字符串插入另一个字符串。
句法:
STUFF(string_expression,start, length, replacement_characters)
REPLACE:替换所有出现的现有字符。
句法:
REPLACE (string_expression, search_string, replacement_string)
结论
结构化查询语言或 SQL 用于管理和操作数据库中的数据。借助上述最佳SQL面试题,你可以尝试面试数据库管理员、SQL开发人员,甚至破解SQL Server认证。