MySQL你掌握了多少?这些SQL题你能作对几道?

这篇具有很好参考价值的文章主要介绍了MySQL你掌握了多少?这些SQL题你能作对几道?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL你掌握了多少?这些SQL题你能作对几道?

MySQL是工作中常用数据库,必须掌握,但小伙伴们又掌握了多少呢,今天一起来测试一下吧~


力扣SQL

⭐组合两个表

⭐第二高的薪水

⭐超过经理收入的员工

⭐查找重复的电子邮箱

⭐从不订购的客户

⭐大的国家

⭐删除重复的电子邮箱

⭐有趣的电影


MySQL你掌握了多少?这些SQL题你能作对几道?


⭐组合两个表

表1: Person

+-------------+---------+
| 列名        |  类型      |
+-------------+---------+
| PersonId    | int       |
| FirstName   | varchar   |
| LastName    | varchar   |
+-------------+---------+
PersonId 是Person表主键

表2: Address

+-------------+---------+
| 列名         | 类型    |
+-------------+---------+
| AddressId   | int     |
| PersonId    | int     |
| City        | varchar |
| State       | varchar |
+-------------+---------+
AddressId 是Address表主键
PersonId 是表 Person 的外键

题目:

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于表1和表2两表提供 person 的以下信息:

FirstName, LastName, City, State


 有思路了嘛,先别着急往下看,先自己想想思路解决它~

这里我们使用的是左外连接

代码实现

select FirstName, LastName, City, State from Person left join Address on Person.PersonId = Address.PersonId;

 恭喜第一题通过我们接着做第二道题!


⭐第二高的薪水

Employee 表

Employee 表
+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

题目

  • 📃编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary),如果不存在第二高的薪水,那么查询应返回 null
  • 例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200                 |
+---------------------+

 是不是也难不倒你呢~ 加油做出来他!

代码实现

方法1

select ifnull((
select max(salary) from Employee 
where 
salary < (select max(salary) from Employee)),null)
as SecondHighestSalary;

方法2

select
    ifnull(
      (select distinct Salary
       from Employee
       order by Salary desc
        limit 1,1), 
    null) as SecondHighestSalary;


 文章来源地址https://www.toymoban.com/news/detail-409053.html

⭐超过经理收入的员工

Employee 表

+----+-------+--------+-----------+
| Id | Name  | Salary | ManagerId |
+----+-------+--------+-----------+
| 1  | Joe   | 70000  | 3         |
| 2  | Henry | 80000  | 4         |
| 3  | Sam   | 60000  | NULL      |
| 4  | Max   | 90000  | NULL      |
+----+-------+--------+-----------+

题目

Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。查询出的结果如下所示。
 

+----------+
| Employee |
+----------+
| Joe      |
+----------+

  是不是也难不倒你呢~ 加油做出来他!

代码实现

SELECT  staff.Name AS 'Employee'  FROM
    Employee AS staff,
    Employee AS manager
WHERE
    staff.ManagerId = manager.Id
AND staff.Salary > manager.Salary

 

⭐查找重复的电子邮箱

Person表

+----+---------+
| Id | Email   |
+----+---------+
| 1  | a@b.com |
| 2  | c@d.com |
| 3  | a@b.com |
+----+---------+

题目:

编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。

根据以上输入,你的查询应返回以下结果:

+---------+
| Email   |
+---------+
| a@b.com |
+---------+

代码实现

方法一

select Email from
(select Email, count(Email) as num from Person group by Email) as temporary
where num > 1;

方法二

select Email from Person group by Email having count(Email) > 1;

 

⭐从不订购的客户

Customers 表:

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Joe   |
| 2  | Henry |
| 3  | Sam   |
| 4  | Max   |
+----+-------+

Orders 表:

+----+------------+
| Id | CustomerId |
+----+------------+
| 1  | 3          |
| 2  | 1          |
+----+------------+

题目:

某网站包含两个表CustomersOrders。编写一个 SQL 查询,找出所有从不订购任何东西的客户

例如给定上述表格,你的查询应返回:

+-----------+
| Customers |
+-----------+
| Henry     |
| Max       |
+-----------+

代码实现

方法一

select customers.name as 'Customers'
from customers
where customers.id not in
(select customerid from orders);

方法二

select c.name as Customers from Customers c left join Orders o on c.id = o.CustomerId where o.id is null;

 

⭐大的国家

World 表:

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| name        | varchar |
| continent   | varchar |
| area        | int     |
| population  | int     |
| gdp         | int     |
+-------------+---------+
World 表:
+-------------+-----------+---------+------------+--------------+
| name        | continent | area    | population | gdp          |
+-------------+-----------+---------+------------+--------------+
| Afghanistan | Asia      | 652230  | 25500100   | 20343000000  |
| Albania     | Europe    | 28748   | 2831741    | 12960000000  |
| Algeria     | Africa    | 2381741 | 37100000   | 188681000000 |
| Andorra     | Europe    | 468     | 78115      | 3712000000   |
| Angola      | Africa    | 1246700 | 20609294   | 100990000000 |
+-------------+-----------+---------+------------+--------------+

name 是这张表的主键
这张表的每一行提供:国家名称、所属大陆、面积、人口和 GDP 值。


如果一个国家满足下述两个条件之一,则认为该国是 大国 :

    面积至少为 300 平方公里(即,3000000 km2),或者
    人口至少为 2500 万(即 25000000)

编写一个 SQL 查询以报告 大国 的国家名称、人口和面积。按 任意顺序 返回结果表。

查询结果格式如下例所示。
 

输出:
+-------------+------------+---------+
| name        | population | area    |
+-------------+------------+---------+
| Afghanistan | 25500100   | 652230  |
| Algeria     | 37100000   | 2381741 |
+-------------+------------+---------+

代码实现

方法一

SELECT
    name, population, area
FROM
    world
WHERE
    area >= 3000000 OR population >= 25000000;

方法二

SELECT name, population, area FROM world WHERE area > 3000000
 
UNION
 
SELECT name, population, area FROM world WHERE population > 25000000;

⭐删除重复的电子邮箱

Person 表

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+

Id 是这个表的主键。

题目:

编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

代码实现

DELETE 
    pson1
FROM 
    Person pson1,Person pson2
WHERE 
    pson1.Email = pson2.Email AND pson1.Id > pson2.Id
 

 

⭐有趣的电影

cinema:

+---------+-----------+--------------+-----------+
|   id    | movie     |  description |  rating   |
+---------+-----------+--------------+-----------+
|   1     | War       |   great 3D   |   8.9     |
|   2     | Science   |   fiction    |   8.5     |
|   3     | irish     |   boring     |   6.2     |
|   4     | Ice song  |   Fantacy    |   8.6     |
|   5     | House card|   Interesting|   9.1     |
+---------+-----------+--------------+-----------+

题目:

某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述。

作为该电影院的信息部主管,您需要编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating 降序排列。

代码实现

select * from cinema
 
where mod(id, 2) = 1 and description != 'boring'
 
order by rating DESC;

 

 

到了这里,关于MySQL你掌握了多少?这些SQL题你能作对几道?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HR:面试官最爱问的linux问题,看看你能答对多少

    本文介绍了Linux系统的常见面试题,主要包括文件系统管理、环境配置、进程管理、系统资源使用情况、网络设置、任务调度器、软件包管理和系统日志查看,希望对你有所帮助。当然,在面试中,你可能会遇到更多针对具体工作和岗位的问题,要做好充分准备。祝你面试成功

    2023年04月16日
    浏览(26)
  • 【leetcode合集】如何知道自己是否掌握了数组与链表?试试这几道题目吧!

      目录 1.数组题目合集 1.1 leetcode.27 移除元素 1.2 leetcode.26 删除有序数组中的重复项 1.3 leetcode.88 合并两个有数数组 2.链表题目合集 2.1 leetcode.203 移除链表元素 2.2 leetcode.206 反转链表 2.3 leetcode.876 链表的中间结点 2.4 牛客 链表中倒数第k个结点 2.5 leetcode.21 合并两个有序链表 2.

    2024年01月25日
    浏览(30)
  • 怎么制作AI绘画?学会这几个技巧就能制作AI绘画,这些Python高级必会知识点你能答出来几个

    大家知道AI绘画吗?这是最近很火的一种绘画方式,我有时候能在社交平台上看到别人发出来的图画。问了才知道,这是通过人工智能软件制作出来的,只要提供画面的描述,AI就能根据这些词汇进行创作。所以即使是不会绘画的小伙伴也不用担心啦,我们通过这些软件

    2024年04月16日
    浏览(32)
  • 这些常用的IC专业术语,你了解多少?

    IC工程师在日常的学习和工作中或多或少会都遇到一些专业的IC词汇。下面就来为大家盘点一下各个岗位的专业高频名词。 (文档内持续更新,全文档文末可领) CIN (Carry INput) :进位输入 COUT(Carry OUTput) :进位输出 counter top :顶层 Binary :进制数,一种只有0和1两个数字的数制

    2024年02月08日
    浏览(29)
  • 什么是鉴权?这些postman鉴权方式你又知道多少?

    一、什么是鉴权? 鉴权也就是身份认证,就是验证您是否有权限从服务器访问或操作相关数据。发送请求时,通常必须包含相应的检验参数以确保请求具有访问权限并返回所需数据。通俗的讲就是一个门禁,您想要进入室内,必须通过门禁验证身份,这就是鉴权,如打开一个

    2024年02月05日
    浏览(36)
  • 一文读懂AI框架——这些关于AI框架的事,你知道多少?

    随着数智化进程的加快 多元化、复杂化的场景持续涌现 大模型俨然成为 当下产 业、甚至整个智能时代 的支柱力量 越来越多的企业开始 构建AI大模型 以应对全新的业务需求和挑战 作为 实现大 模型的重要工具 AI框架也逐渐进入了发展繁荣期 开始收获越来越多的关注 在中国

    2024年02月04日
    浏览(30)
  • 【Mysql】万字长文带你快速掌握数据库基础概念及SQL基本操作

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月15日
    浏览(45)
  • 这些vue基本语法,你掌握了吗

    1. 单页面应用程序 单页面应用程序指的是一个应用程序中只有唯一的一个 HTML 页面,所有的功能与交互都在这唯一的一个页面内完成。 单页面应用程序将所有的功能局限在一个HTML页面中,仅在该HTML页面初始化时加载相应的资源(HTML、JavaScript、CSS)。一旦页面加载完成了,

    2024年02月01日
    浏览(71)
  • 掌握了这些,才算真正了解C语言数组

    也许你认为,C语言中的数组非常好理解,就是把一组相同类型的元素存储在同一块空间里。但是你可能并没有真正理解数组的本质,不信的话请回答一下下面的几个小问题,如果你能非常清晰的回答这些问题,那么你对C语言中的数组的理解就入门了。 一维数组和二维数组在

    2024年02月02日
    浏览(29)
  • 你们心目中程序员满意的薪资需要达到多少?只需做到这些拿到20K没问题

    算法:技术面试笔试都考算法题,所以LeetCode至少得刷两三百道,坚持做过所有题目都练习一遍。做过ACM更好。算法虽然是程序员的基础技能,却也是最难的一部分,因为算法题目往往涉及到很多细节,需要耐心思考和总结。但是,掌握好算法对于提高编程能力和获得更好的

    2023年04月23日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包