SQL面
题面
题 100
SQL 常见面试题解析常见面试题解析
内容简介内容简介
本文介绍并分析了 100 道常见 SQL 面试题,主要分为三个模块:SQL 初级查询、SQL 高级查询以及数据库设计与开发。文
章内容结构如下图所示:
本文主要使用三个示例表:员工表(employee)、部门表(department)和职位表(job)。下面是这些示例表的结构图:
部门表部门表(department),包含部门编号(dept_id)和部门名称(dept_name)字段,主键为部门编号。
职位表职位表(job),包含职位编号(job_id)和职位名称(job_title)字段,主键为职位编号。
员工表员工表(employee),包含员工编号(emp_id)、员工姓名(emp_name)、性别(sex)、部门编号(dept_id)、经理编
号(manager)、入职日期(hire_date)、职位编号(job_id)、月薪(salary)、奖金(bonus)以及电子邮箱(email)。
主键为员工编号,部门编号字段是引用部门表的外键,职位编号字段是引用职位表的外键,经理编号字段是引用员工表自身的
外键。
所有示例都可以在 Oracle 12c 和 MySQL 8.0 中通用,除非另有说明。
SQL 初级查询初级查询
1. 什么是 SQL?SQL 有哪些功能?
答案答案:SQL 代表结构化查询语言,它是访问关系数据库的通用语言,支持数据的各种增删改查操作。SQL 语句可以分为以下
子类:
DQL,数据查询语言。这个就是 SELECT 语句,用于查询数据库中的数据和信息。
DML,数据操作语言。包括 INSERT、UPDATE、DELETE 和 MERGE 语句,主要用于数据的增加、修改和删除。
DDL,数据定义语言。主要包括 CREATE、ALTER 和 DROP 语句,用于定义数据库中的对象,例如表和索引。
TCL,事务控制语言;主要包括 COMMIT、ROLLBACK 和 SAVEPOINT 语句,用于管理数据库的事务。
DCL,数据控制语言。主要包括 GRANT 和 REVOKE 语句,用于控制对象的访问权限。
解析解析:SQL 是一种声明性的编程语言,只需要告诉计算机想要什么内容(what),不需要指定具体怎么实现(how)。通过
几个简单的英文单词,例如 SELECT、INSERT、UPDATE、CREATE、DROP 等,就可以完成大部分的数据操作。
2. 如何查看员工表中的姓名和性别?
答案答案:
SELECT emp_name, sex FROM employee;
解析解析:SQL 使用 SELECT 和 FROM 查询表中的字段,多个字段使用逗号分隔。
3. 如何查看员工表中的所有字段?
答案答案:
SELECT * FROM employee;
或者:
SELECT emp_id, emp_name, sex, dept_id, manager, hire_date, job_id, salary, bonus, email
FROM employee;
解析解析:SQL 查询中的星号(*)表示查询所有字段,可以方便快速查询数据;但是在产品中不推荐使用,因为星号可能带来不
确定性。
4. 如何知道每个员工一年的总收入?
答案答案:
SELECT emp_name, salary * 12 + COALESCE(bonus, 0)
FROM employee;
解析解析:查询结果中可以使用各种运算、函数以及表达式。COALESCE 函数用于将空值转换为 0。
5. 如何为查询结果指定一个容易理解标题?
答案答案:
评论