文章目录

  • 1.组合两个表
    • 基本信息
    • 要求
    • 答案
  • 2.第二高的薪水
    • 基本信息
    • 要求
    • 答案
  • 3.查找重复的电子邮箱
    • 基本信息
    • 要求
    • 答案
  • 4.超过经理收入的员工
    • 基本信息
    • 要求
    • 答案:
  • 5.超过5名学生的课
    • 信息:
    • 要求
    • 答案
  • 6.有趣的电影
    • 信息
    • 要求
    • 答案
  • 7.交换工资(updeta,条件判断)
    • 基本信息
    • 要求
    • 答案
  • 8从不订购的客户
    • 信息
    • 要求
    • 答案
      • 使用的not in
      • 使用的not exists
  • 9.上升的温度(mysql函数to_days)
    • 信息
    • 要求
    • 答案
  • 10.删除重复的邮箱
    • 信息
    • 要求
    • 答案
  • 11.员工奖金(null的应用)
    • 信息
    • 要求
  • 12.查找订单最多的用户

1.组合两个表

基本信息

表1: Person

列名 类型
PersonId int
FirstName varchar
LastName varchar
  • PersonId 是上表主键
    表2: Address
列名 类型
AddressId int
PersonId int
City varchar
State varchar
  • AddressId 是上表主键

要求

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

FirstName, LastName, City, State

答案

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

2.第二高的薪水

基本信息

编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。

Id Salary
1 100
2 200
3 300

要求

例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

SecondHighestSalary
200

答案

select (select DISTINCT  Salary from Employee ORDER BY Salary DESC limit 1 offset 1
) as SecondHighestSalary;

3.查找重复的电子邮箱

基本信息

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

示例:

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

要求

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

Email
a@b.com

说明:所有电子邮箱都是小写字母。

答案

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

4.超过经理收入的员工

基本信息

Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。

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

要求

给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。

Employee
Joe

答案:

Select e1.Name as Employee
from Employee e1 join Employee e2  on e1.ManagerId = e2.Id and e1.Salary > e2.Salary

5.超过5名学生的课

信息:

有一个courses 表 ,有: student (学生) 和 class (课程)。

请列出所有超过或等于5名学生的课。

例如,表:

student class
A Math
B English
C Math
D Biology
E Math
F Computer
G Math
H Math
I Math

要求

应该输出:

class
Math
  • Note:
    学生在每个课中不应被重复计算。

答案

select class
from courses
group by class
having count(DISTINCT student) >= 5;

6.有趣的电影

信息

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

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

例如,下表 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

要求

对于上面的例子,则正确的输出是为:

id movie description rating
5 House card Interesting 9.1
1 War great 3D 8.9

答案

select id,movie, description, rating
from cinema
where description  !='boring' and id %2=1
order by rating desc;

7.交换工资(updeta,条件判断)

基本信息

给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。

注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。

例如:

id name sex salary
1 A m 2500
2 B f 1500
3 C m 5500
4 D f 500

要求

运行你所编写的更新语句之后,将会得到以下表:

id name sex salary
1 A f 2500
2 B m 1500
3 C f 5500
4 D m 500

答案

UPDATE salary
SET sex=IF(sex='f','m','f');

8从不订购的客户

信息

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

Customers 表:

Id Name
1 Joe
2 Henry
3 Sam
4 Max

Orders 表:

Id CustomerId
1 3
2 1

要求

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

Customers
Henry
Max

答案

使用的not in

select Name as Customers
from Customers
where Customers.Id not in (select Customers.Id from Orders where Customers.Id = Orders.CustomerId);

使用的not exists

select Name as Customers
from Customers
where  not exists (select * from Orders where Customers.Id = Orders.CustomerId);

9.上升的温度(mysql函数to_days)

信息

给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 Id。

Id(INT) RecordDate(DATE) Temperature(INT)
1 2015-01-01 10
2 2015-01-02 25
3 2015-01-03 20
4 2015-01-04 30

例如,根据上述给定的 Weather 表格,返回如下 Id:

要求

Id
2
4

答案

select w1.Id
from weather as w1,weather as w2
where w1.Temperature > w2.Temperature and to_days(w1.RecordDate)-to_days(w2.RecordDate)=1;

10.删除重复的邮箱

信息

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

Id Email
1 john@example.com
2 bob@example.com
3 john@example.com
  • Id 是这个表的主键。

要求

例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行:

Id Email
1 john@example.com
2 bob@example.com

答案

delete p1
from Person p1, Person p2
where p1.Id>p2.Id and p1.Email = p2.Email;

11.员工奖金(null的应用)

信息

select all employee’s name and bonus whose bonus is < 1000.

Table:Employee

empId name supervisor salary
1 John 3 1000
2 Dan 3 2000
3 Brad null 4000
4 Thomas 3 4000

empId is the primary key column for this table.
Table: Bonus

empId bonus
2 500
4 2000
  • empId is the primary key column for this table.

要求

Example ouput:

name bonus
John null
Dan 500
Brad null

选出所有奖金<1000元的雇员姓名及奖金数额

答案:

select name, bonus
from Employee e left join Bonus b
on e.empId = b.empId
where bonus < 1000 or bonus is null

12.查找订单最多的用户

数据库 CURD测试题【简单】相关推荐

  1. 数据库 CURD测试题【中等】

    文章目录 1.换座位(交换相邻的id) 基本信息 要求 答案[case when] 2.分数排名(分组,排序) 基本信息 要求 答案 3.连续出现的数字(连接) 信息 要求 答案 4.第N高的薪水(函 ...

  2. 权限管理系统数据库设计的简单构思

    最近在工作中接触到权限管理的设计,于是,自己在网上查阅了部分资料,再加上自己的一些思考,构思了一个简单的权限管理系统的数据库设计. RBAC与Tag 说到权限管理,一般都会想到基于角色的访问控制(Ro ...

  3. MyBatis-Plus实现数据库curd操作

    文章目录 MyBatis-Plus 2.1.mp入门 MP主键策略 2.2.curd 2.3.自动填充 3.乐观锁 3.1.场景 MP实现乐观锁. 4.MP查询 4.1.多个ID批量查询 4.2.简单 ...

  4. php过滤数据库就报错,php过滤掉emoji等无法存入MySQL数据库的字符简单示例

    这篇文章主要为大家详细介绍了php过滤掉emoji等无法存入MySQL数据库的字符简单示例,具有一定的参考价值,可以用来参考一下. 对php过滤掉emoji等无法存入MySQL数据库的字符简单示例感兴 ...

  5. ocbase 数据库 蚂蚁_iOS开发数据库篇—FMDB简单介绍

    iOS开发数据库篇-FMDB简单介绍 一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来 ...

  6. mysql数据库基础的简单操作指南

    最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益.mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据 ...

  7. node+express项目链接MySQL数据库(最简单版)

    node+express项目链接MySQL数据库(最简单版) (假定你node+express项目已创建完成,可参照这里) 第一步.安装mysql驱动 npm install mysql --save ...

  8. sqlserver还原到mysql_SQLSERVER完整数据库还原(简单恢复模式)

    完整数据库还原(简单恢复模式) 数据库完整还原的目的是还原整个数据库. 整个数据库在还原期间处于脱机状态. 在数据库的任何部分变为联机之前,必须将所有数据恢复到同一点,即数据库的所有部分都处于同一时间 ...

  9. oracle数据库基础测试,ORACLE数据库基础测试题oracle数据库复习题.docx

    <ORACLE数据库基础测试题oracle数据库复习题.docx>由会员分享,可在线阅读,更多相关<ORACLE数据库基础测试题oracle数据库复习题.docx(18页珍藏版)&g ...

最新文章

  1. 避免资源死锁:识别已打开的事务
  2. 32位汇编语言条件伪指令和win32汇编关于windows.inc的error A2004
  3. oracle linux 配置本地yum,oracle linux配置本地光盘yum源
  4. Spring MVC上传文件原理和resolveLazily说明
  5. 敏捷开发的6个实战经验
  6. 【转】VS技巧—任务列表Task List(ToDoList)
  7. Git实战(二)原理
  8. 客座编辑:杜小勇(1963‒),中国人民大学信息学院教授,博士生导师。
  9. 墨迹天气回应IPO失败:不会因一次失利而止步
  10. python----iter\next
  11. mysql注入如何读取本地文件_如何通过SQL注入获取服务器本地文件
  12. ant design pro(二)布局
  13. Java IO3:字符流
  14. 计算机保研-中科大计算机
  15. 西门子S7系列中间人攻击:PLC探测和流量分析(二)
  16. 海量图片存储解决方案
  17. android电话本导入iphone,如何将Android电话簿导入iPhone手机
  18. 电力行业DC-DC电源模块的选型
  19. 阿里云天池大数据长期赛:金融风控-贷款违约预测(含代码)
  20. NEFU 大一寒假训练六(二分查找)题目预测

热门文章

  1. boost解析info文件
  2. 正则表达式里转义字符_五分钟搞定正则表达式,如果没搞定,再加两分钟
  3. Java中常用的测试工具JUnit
  4. 130242014022 蓝宏铮 第2次实验
  5. java中范型的限定
  6. NEC学习 ---- 模块 - 带点文字链接列表
  7. Android中用GridView实现九宫格的两种方法(转)
  8. openfire修改服务器名称方法
  9. SVN:“SVN”不是内部命令,解决方法
  10. 使用说明 思迅收银系统_便利店收银使用的收银系统应该取决于什么?