暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
SQL面试必知100问.pdf
661
22页
23次
2023-07-14
5墨值下载
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. 什么是 SQLSQL 有哪些功能?
答案答案SQL 代表结构化查询语言,它是访问关系数据库的通用语言,支持数据的各种增删改查操作SQL 句可以分为以下
子类:
DQL,数据查询语言。这个就是 SELECT 语句,用于查询数据库中的数据和信息
DML,数据操作语言。包括 INSERTUPDATEDELETE MERGE 句,主要用于数据的增加、修改和删除。
DDL,数据定义语言。主要包括 CREATEALTER DROP 句,用于定义数据库中的对象,例如表和索引
TCL,事务控制语言;主要包括 COMMITROLLBACK SAVEPOINT 句,用于管理数据库的事务
DCL,数据控制语言。主要包括 GRANT REVOKE 句,用于控制对象的访问权限。
解析解析SQL 是一种声明性的编程语言,只需要告诉计算机想要什么内容what,不需要指定具体怎么实现how。通过
几个简单的英文单词,例如 SELECTINSERTUPDATECREATEDROP ,就可以完成大部分的数据操作。
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. 如何为查询结果指定一个容易理解标题?
答案答案
SELECT emp_name AS "姓名", salary * 12 + COALESCE(bonus, 0) "年薪"
FROM employee;
解析解析SQL 中的别名可以为查询中的表或结果指定一个临时名称。别名使用关键 AS 表示,可以省略。
6. 怎么查看女性员工的信息
答案答案
SELECT *
FROM employee
WHERE sex = '';
解析解析SQL 中使用 WHERE 子句指定过滤条件,只有满足条件的数据才会返回。除了等于=),还可以使用大于(>)、大
于等于(>=)、小于(<、小于等于(<=)以及不等于(!= 或者 )这些比较运算符作为过滤条件
7. 如何查看月薪范围位于 8000 12000 之间的员工?
答案答案
SELECT *
FROM employee
WHERE salary BETWEEN 8000 AND 12000;
解析解析BETWEEN 用于查找范围值,包含两端的值。
8. 确认员工中有没有叫做的人,有的话查出他们的信息。
答案答案
SELECT *
FROM employee
WHERE emp_name IN ('张三', '李四', '张飞');
解析解析IN 用于查找列表中的任意值
9. 只知道某个员工的姓名里有个字,但不知道具体名字,怎么样查看有哪些这样的员工
答案答案
SELECT *
FROM employee
WHERE emp_name LIKE '%%';
解析解析SQL 中的 LIKE 运算符用于字符串的模式匹配。LIKE 支持两个通配符:% 配任意多个字符,_ 匹配单个字符。
Oracle 分大小写MySQL 不区分大小写。
10. 有些员工有奖金(bonus),另一些没有。怎么查看哪些员工有奖金?
答案答案
SELECT emp_name,
bonus
FROM employee
WHERE bonus IS NOT NULL;
解析解析SQL 中的 NULL 表示空值,意味着缺失或者未知数据。判断空值不能直接使用等于或不等于,而需要使用特殊 IS
NULL IS NOT NULL
11. 在前面我们知道了如何查询女员工,如何查看 2010 1 1 日之后入职的女员工呢?
答案答案
SELECT emp_name, sex, hire_date
FROM employee
WHERE sex = ''
AND hire_date > DATE '2010-01-01';
解析解析ANDOR NOT 示逻辑与、逻辑或和逻辑非,可以用于构造复杂的查询条件。
12. 以下查询会不会出错,为什么?
SELECT *
FROM employee
WHERE 1 = 0 AND 1/0 = 1;
答案答案:不会出错,但是查不到任何数据。
of 22
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜