SQL笔试题通常考察应聘者对于SQL语言的理解和实际应用能力,尤其是查询语句的编写、SQL函数的使用,以及多表连接操作等。本次整理的SQL题目覆盖了这些基础而又核心的知识点。基础查询语句的编写是考察的重点。例如,通过SELECT * FROM employees语句可以从employees表中获取所有列的所有数据,这是最基础的数据检索操作。

当需要限定特定条件进行查询时,例如筛选出雇佣日期最新的员工,可以使用子查询配合比较操作符来实现,即

SELECT * FROM employees WHERE hire_date = (SELECT MAX(hire_date) FROM employees)。

再如,若想选择雇佣日期排在第二位的员工,可以使用排序与限制输出行数的组合,即

SELECT * FROM employees WHERE hire_date = (SELECT DISTINCT hire_date FROM employees ORDER BY hire_date DESC LIMIT 1, 1)。

多表关联查询是SQL面试中的另一大考点。当需要同时获取两个或更多表中的数据时,就需要用到SQL的连接(JOIN)操作。例如,要求根据员工编号联合查询员工信息和当前薪水,可以使用INNER JOIN来实现,语句如下:

SELECT salaries.emp_no, salaries.salary, salaries.from_date, salaries.to_date, dept_manager.dept_no FROM salaries INNER JOIN dept_manager ON dept_manager.emp_no = salaries.emp_no WHERE dept_manager.to_date = '9999-01' AND salaries.to_date = '9999-01'。

连接类型的区别在面试中常被问到:

- INNER JOIN:要求两边表同时有对应的数据才会被显示;

- LEFT JOIN:会读取左边数据表的全部数据,即便右边表无对应数据;

- RIGHT JOIN:则读取右边数据表的全部数据,即便左边表无对应数据。

理解这些连接类型的不同,可以更好地设计查询语句。