有图有真相!20个经典面试题(基础版),全部答对月薪10k+!

共 3424字,需浏览 7分钟

 ·

2021-08-31 09:39

文 | 酷头来源:印象python「ID: python_logic」
嗨!大家好,我是酷头
欢迎来到学习python的宝藏基地~~~
923944945fb3d74aea96fc4f69b3c215.webp
长按下方二维码可以添加我为好友哦

94e9ec65c4298a957c468bba7a0bce4e.webp



本文主要使用三个示例表:员工表(employee)、部门表(department)和职位表(job)。下面是这些示例表的结构图:5e3db510da357f67c2b09c55644112b9.webp
部门表(department)包含部门编号(dept_id)和部门名称(dept_name)字段,主键为部门编号。

532ad2527a220ddfed912c9333da1ccb.webp



职位表(job)包含职位编号(job_id)和职位名称(job_title)字段,主键为职位编号。

e81d3b08e4f1dc9842982edfc8e347d3.webp



员工表(employee)包含员工编号(emp_id)、员工姓名(emp_name)、性别(sex)、部门编号(dept_id)、经理编号(manager)、入职日期(hire_date)、职位编号(job_id)、月薪(salary)、奖金(bonus)以及电子邮箱(email)。
主键为员工编号,部门编号字段是引用部门表的外键,职位编号字段是引用职位表的外键,经理编号字段是引用员工表自身的外键。

c1c09f8b71c9e5819ac5bd11266c1e5c.webp



8ec81a9b134a597472b4be96ab5e7905.webp

什么是 SQL?SQL 有哪些功能?


答案:SQL 代表结构化查询语言,它是访问关系数据库的通用语言,支持数据的各种增删改查操作。


SQL 语句可以分为以下子类:


DQL,数据查询语言。这个就是 SELECT 语句,用于查询数据库中的数据和信息。


DML,数据操作语言。包括 INSERT、UPDATE、DELETE 和 MERGE 语句,主要用于数据的增加、修改和删除。


DDL,数据定义语言。主要包括 CREATE、ALTER 和 DROP 语句,用于定义数据库中的对象,例如表和索引。


TCL,事务控制语言;主要包括 COMMIT、ROLLBACK 和 SAVEPOINT 语句,用于管理数据库的事务。


DCL,数据控制语言。主要包括 GRANT 和 REVOKE 语句,用于控制对象的访问权限。

ca58b9dff25fc94d577e551f908c253e.webp



SQL 是一种声明性的编程语言,只需要告诉计算机想要什么内容(what),不需要指定具体怎么实现(how)。通过几个简单的英文单词,

例如 SELECT、INSERT、UPDATE、CREATE、DROP 等,就可以完成大部分的数据操作。



8ec81a9b134a597472b4be96ab5e7905.webp

如何查看员工表中的姓名和性别?



SELECT emp_name, sex FROM employee

fdf410af5c15d4a001b6e4f7fcc17498.webp




8ec81a9b134a597472b4be96ab5e7905.webp

如何查看员工表中的所有字段?


SELECT * FROM employee

656727a9cf2fcaddcf12e50fcaa190ed.webp




8ec81a9b134a597472b4be96ab5e7905.webp

查询每个员工一年的总收入?



SELECT emp_name, (salary * 12 + COALESCE(bonus, 0))  Income FROM employee;


1df7739329053abc751b5362db1d0f3c.webp


COALESCE函数从值列表中返回第一个非NULL的值,当遇到NULL值时将其替换为0。


8ec81a9b134a597472b4be96ab5e7905.webp

如何查询不同性别的员工的信息?



SELECT * FROM employee WHERE sex = '女';

24eb61bffa4929020f79e5a39f41df75.webp




8ec81a9b134a597472b4be96ab5e7905.webp

如何查看月薪范围位于 8000 到 12000 之间的员工?


SELECT * 
FROM employee 
WHERE salary BETWEEN 8000 AND 120000

b8d2b01b1057f0050820eb140f5ad132.webp




8ec81a9b134a597472b4be96ab5e7905.webp

确认员工中有没有叫做“张三”、“李四” 或“张飞”的人,有的话查出他们的信息。


SELECT * 
FROM employee 
WHERE emp_name IN('张三''李四''张飞')

0c1c9835923d53b1a337a6a9054d32df.webp





8ec81a9b134a597472b4be96ab5e7905.webp

查询姓名里带“云”字的员工信息


SELECT * 
FROM employee 
WHERE emp_name LIKE '%云%'

2ecbcb12b19379bfedaf0e8bad362786.webp




8ec81a9b134a597472b4be96ab5e7905.webp

查询有奖金的员工信息


SELECT * 
FROM employee 
WHERE bonus <>''

82b7416957ccb6cfb7950924551ccb78.webp




8ec81a9b134a597472b4be96ab5e7905.webp

查询2010 年 1 月 1 日之后入职的女员工


SELECT * 
FROM employee 
WHERE sex='女' 
AND hire_date<'2010-1-1'

3abc3d0bbd0d5862a4195c2cf6faa2f9.webp




8ec81a9b134a597472b4be96ab5e7905.webp

去重查询性别


SELECT DISTINCT sex
  FROM employee;

924199c35150dd76391f2dbc67da8394.webp




8ec81a9b134a597472b4be96ab5e7905.webp

员工薪水从高到低排序


SELECT *
FROM employee
ORDER BY salary DESC

36884a264432f3385a8579db4f16cd50.webp




8ec81a9b134a597472b4be96ab5e7905.webp

若薪水一致则按照奖金重新排序


SELECT *
FROM employee
ORDER BY salary DESC,  bonus DESC

按照多个字段排序时,使用逗号分隔;排序时先按照第一个条件排列,对于排名相同的数据,再按照第二个条件排列,以此类推。


8ec81a9b134a597472b4be96ab5e7905.webp

查询薪水最高的 3 位员工


SELECT emp_name, salary
FROM employee
ORDER BY salary DESC LIMIT 3

42910f4107a3e5107c9d6237438d4a1a.webp




8ec81a9b134a597472b4be96ab5e7905.webp

查询第 21 名到 25 名员工信息


SELECT emp_name, salary
 FROM employee
ORDER BY salary DESC LIMIT 3

278e2374e23a250dfa722e5c3380aeea.webp




8ec81a9b134a597472b4be96ab5e7905.webp

查询员工邮箱长度


SELECT email,LENGTH(email)
FROM employee

de333234eee83d48a5804ecc1db0fd25.webp




8ec81a9b134a597472b4be96ab5e7905.webp

查询邮箱名称是“GUANXING@SHUGUO.COM”的用户信息


SELECT emp_name, email
FROM employee
WHERE UPPER(email) = 'GUANXING@SHUGUO.COM'

25940cc4af6e3bbaa0aa477fa559da8f.webp





8ec81a9b134a597472b4be96ab5e7905.webp

以-格式显示员工的姓名、性别、薪水信息


SELECT CONCAT_WS('-', emp_name, sex, salary)
FROM employee

d0ac56981b4d08eb2b4bff0b9cfff523.webp


CONCAT_WS - 用分隔符连接字符串。

 用分隔符连接字符串,是CONCAT()的一种特殊形式。 

第一个参数是其余参数的分隔符。分隔符被添加到要连接的字符串之间。 

分隔符可以是字符串,其余参数也可以。

如果分隔符为NULL,则结果为NULL。 




8ec81a9b134a597472b4be96ab5e7905.webp

如何获取员工邮箱中的用户名部分( @ 符号之前的字符串)?



SELECT emp_name, email,SUBSTRING_INDEX(email, '@'1)
FROM employee
8b6e63d9db2e2ac659de7ae8385715f7.webp
substring_index(input,split,index):input为要截取的字符,split为分隔符,Index为要截取第index个分隔符左(index为正)或右(index为负)的字符串。




8ec81a9b134a597472b4be96ab5e7905.webp

将员工邮箱中的“.com”替换为“.net”



SELECT emp_name, email,REPLACE(email, 'com','net')
FROM employee

e0da3578c80532ab368c8dbcf7a2968e.webp




8ec81a9b134a597472b4be96ab5e7905.webp

查看每个员工的工作年限


SELECT emp_name, EXTRACT( YEAR FROM CURRENT_DATE) - EXTRACT( YEAR FROM HIRE_DATE)
 FROM employee;

28555211fc751ed6d709971adfa4062d.webp

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;

91246635d0c20ca0a2de939fc819d8a3.webp




8ec81a9b134a597472b4be96ab5e7905.webp

 统计员工的数量、平均月薪、最高月薪、最低月薪以及月薪的总和?


SELECT COUNT(*), AVG(salary),MAX(salary),MIN(salary),SUM(salary)
 FROM employee;

081e22156d21fe02a769fb756df2e242.webp


聚合函数针对一组数据计算出单个结果值。常见的聚会函数包括:


AVG - 计算一组值的平均值。

COUNT - 统计某个字段的行数。

MIN - 返回一组值中的最小值。

MAX - 返回一组值中的最大值。

SUM - 计算一组值的和值。



8ec81a9b134a597472b4be96ab5e7905.webp

 以下两个 COUNT 函数返回的结果是否相同?


SELECT COUNT(*), COUNT(bonus)
  FROM employee;

5bb5f89c21114ab9e2594702ae401519.webp

除了 COUNT (*) 之外,其他聚合函数都会忽略字段中的 NULL 值。另外,聚合函数中的 DISTINCT 选项可以在计算之前排除重复值。
OK,基础版本的Mysql今天的分享就到这里啦!下一期我们看进阶版的Mysql语句实战
印象python】交流群正式开放啦!欢迎扫码添加老邓好友,通过后拉你入群。
浏览 14
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报