mysql查表中员⼯姓名性别_SQL常见⾯试题解析
内容简介
vb基础知识视频本⽂介绍并分析了 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)。主键为员⼯编号,部门编号字段是引⽤部门表的外键,职位编号字段是引⽤职位表的外键,经理编号字段是引⽤员⼯表⾃⾝的外键。
创建⽰例表和初始化数据的脚本可以从 GitHub 上进⾏下载。
所有⽰例都可以在 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. 如何查看员⼯表中的姓名和性别?
mysql面试题sql答案:
SELECT emp_name, sex FROM employee;
解析:SQL 使⽤ SELECT 和 FROM 查询表中的字段,多个字段使⽤逗号分隔。
3. 如何查看员⼯表中的所有字段?
答案:一i一一高考 新闻 视频
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,
membershipbonus
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
ppt模板网免费下载WHERE sex = '⼥'
AND hire_date > DATE '2010-01-01';
解析:AND、OR 和 NOT 表⽰逻辑与、逻辑或和逻辑⾮,可以⽤于构造复杂的查询条件。
12. 以下查询会不会出错,为什么?
SELECT *
FROM employee
WHERE 1 = 0 AND 1/0 = 1;
答案:不会出错,但是查不到任何数据。
解析:因为 SQL 对于逻辑运算符 AND 和 OR 使⽤短路运算(short-circuit evaluation)。也就是说,只要前⾯的表达式能够决定最终的结果,不执⾏后⾯的计算。
13. 如何去除查询结果中的重复记录,⽐返回如员⼯性别的不同取值?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论