有图有真相!20个经典面试题(基础版),全部答对月薪10k+!
文 | 酷头来源:印象python「ID: python_logic」
嗨!大家好,我是酷头
欢迎来到学习python的宝藏基地~~~
长按下方二维码可以添加我为好友哦
本文主要使用三个示例表:员工表(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)。
主键为员工编号,部门编号字段是引用部门表的外键,职位编号字段是引用职位表的外键,经理编号字段是引用员工表自身的外键。
什么是 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 等,就可以完成大部分的数据操作。
如何查看员工表中的姓名和性别?
SELECT emp_name, sex FROM employee
如何查看员工表中的所有字段?
SELECT * FROM employee
查询每个员工一年的总收入?
SELECT emp_name, (salary * 12 + COALESCE(bonus, 0)) Income FROM employee;
COALESCE函数从值列表中返回第一个非NULL的值,当遇到NULL值时将其替换为0。
如何查询不同性别的员工的信息?
SELECT * FROM employee WHERE sex = '女';
如何查看月薪范围位于 8000 到 12000 之间的员工?
SELECT *
FROM employee
WHERE salary BETWEEN 8000 AND 120000
确认员工中有没有叫做“张三”、“李四” 或“张飞”的人,有的话查出他们的信息。
SELECT *
FROM employee
WHERE emp_name IN('张三', '李四', '张飞')
查询姓名里带“云”字的员工信息
SELECT *
FROM employee
WHERE emp_name LIKE '%云%'
查询有奖金的员工信息
SELECT *
FROM employee
WHERE bonus <>''
查询2010 年 1 月 1 日之后入职的女员工
SELECT *
FROM employee
WHERE sex='女'
AND hire_date<'2010-1-1'
去重查询性别
SELECT DISTINCT sex
FROM employee;
员工薪水从高到低排序
SELECT *
FROM employee
ORDER BY salary DESC
若薪水一致则按照奖金重新排序
SELECT *
FROM employee
ORDER BY salary DESC, bonus DESC
按照多个字段排序时,使用逗号分隔;排序时先按照第一个条件排列,对于排名相同的数据,再按照第二个条件排列,以此类推。
查询薪水最高的 3 位员工
SELECT emp_name, salary
FROM employee
ORDER BY salary DESC LIMIT 3
查询第 21 名到 25 名员工信息
SELECT emp_name, salary
FROM employee
ORDER BY salary DESC LIMIT 3
查询员工邮箱长度
SELECT email,LENGTH(email)
FROM employee
查询邮箱名称是“GUANXING@SHUGUO.COM”的用户信息
SELECT emp_name, email
FROM employee
WHERE UPPER(email) = 'GUANXING@SHUGUO.COM'
以-格式显示员工的姓名、性别、薪水信息
SELECT CONCAT_WS('-', emp_name, sex, salary)
FROM employee
CONCAT_WS - 用分隔符连接字符串。
用分隔符连接字符串,是CONCAT()的一种特殊形式。
第一个参数是其余参数的分隔符。分隔符被添加到要连接的字符串之间。
分隔符可以是字符串,其余参数也可以。
如果分隔符为NULL,则结果为NULL。
如何获取员工邮箱中的用户名部分( @ 符号之前的字符串)?
SELECT emp_name, email,SUBSTRING_INDEX(email, '@', 1)
FROM employee
substring_index(input,split,index):input为要截取的字符,split为分隔符,Index为要截取第index个分隔符左(index为正)或右(index为负)的字符串。
将员工邮箱中的“.com”替换为“.net”
SELECT emp_name, email,REPLACE(email, 'com','net')
FROM employee
查看每个员工的工作年限
SELECT emp_name, EXTRACT( YEAR FROM CURRENT_DATE) - EXTRACT( YEAR FROM HIRE_DATE)
FROM employee;
CURRENT_DATE 函数返回当前日期,EXTRACT 函数可以提取日期数据中的各个部分,本例中使用 year 参数获取年份信息。小于 10000 显示为“低收入”,大于等于 10000 并且小于 20000 显示为“中等收入”,大于 20000 显示为“高收入”。
SELECT emp_name,
CASE WHEN salary < 10000 THEN '低收入'
WHEN 10000<= salary <20000 THEN '中收入'
ELSE '高收入'
END "薪水等级"
FROM employee;
统计员工的数量、平均月薪、最高月薪、最低月薪以及月薪的总和?
SELECT COUNT(*), AVG(salary),MAX(salary),MIN(salary),SUM(salary)
FROM employee;
聚合函数针对一组数据计算出单个结果值。常见的聚会函数包括:
AVG - 计算一组值的平均值。
COUNT - 统计某个字段的行数。
MIN - 返回一组值中的最小值。
MAX - 返回一组值中的最大值。
SUM - 计算一组值的和值。
以下两个 COUNT 函数返回的结果是否相同?
SELECT COUNT(*), COUNT(bonus)
FROM employee;
除了 COUNT (*) 之外,其他聚合函数都会忽略字段中的 NULL 值。另外,聚合函数中的 DISTINCT 选项可以在计算之前排除重复值。OK,基础版本的Mysql今天的分享就到这里啦!下一期我们看进阶版的Mysql语句实战
【印象python】交流群正式开放啦!欢迎扫码添加老邓好友,通过后拉你入群。