数据库面试常见问题解析

需积分: 9 1 下载量 33 浏览量 更新于2024-09-11 收藏 102KB DOC 举报
"这篇资料包含了数据库面试中常见的一些问题,涉及了SQL查询、聚合函数的使用、大小写敏感性处理、数据删除与截断的区别、PL/SQL语法元素以及对NULL值的理解。" 1. SQL查询中的聚合函数使用:原始问题涉及到在查询未达到平均工资的员工时,错误地将`AVG()`函数放到了`WHERE`子句中。正确做法是将聚合函数放在子查询中,并在父查询的`WHERE`子句中进行比较。选项C提供了正确的解决方案: ```sql SELECT last_name, first_name FROM employee WHERE salary < (SELECT AVG(salary) FROM employee); ``` 2. 大小写不敏感的查询:在查找姓氏为"Smith"的员工时,考虑到数据库中可能存在的大小写不一致,使用`UPPER()`或`LOWER()`函数可以确保查询的大小写无关性。正确选项B和D都是可行的,但通常推荐使用`LOWER()`,因为它在大多数情况下更通用,因为名字通常被视为文本,而文本通常在数据库中以小写存储或处理。例如: ```sql SELECT last_name, first_name FROM emp WHERE LOWER(last_name) = 'smith'; ``` 3. `DELETE FROM`与`TRUNCATE TABLE`的区别:`DELETE FROM`删除表中的所有行,但保留表结构,并记录每条删除操作,可能会消耗大量日志空间;而`TRUNCATE TABLE`删除所有行,但不记录单个行的删除,速度更快,但不适用于有外键约束的表。 4. PL/SQL的组成部分:PL/SQL是Oracle数据库的编程语言,`DECLARE`用于声明变量和游标,`EXCEPTION`用于处理异常,而`CATCH`和`THROW`是SQL Server中的异常处理关键字,不在PL/SQL中。所以,B、C、D都不是PL/SQL的组成部分。 5. 修改表结构的SQL命令:正确的命令是`ALTER TABLE`,用于修改已存在表的结构,如添加、删除或修改列。 6. 对NULL值的理解:`NULL`表示未知或无值,它不等同于任何数值,包括零。在进行运算时,任何操作与`NULL`结合都会得到`NULL`结果。比较时,`NULL`与任何值的比较(包括`NULL`自身)都不成立,因此不能使用"="或"!="来判断两个`NULL`是否相等。 这些面试题覆盖了数据库基础操作、SQL查询优化、PL/SQL编程以及数据库理论知识,是准备数据库面试的重要参考资料。