1 Star 0 Fork 143

wangorgrace / 数据库SQL实战

forked from xuthus / 数据库SQL实战 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

数据库SQL实战

选项 说明
:monkey_face: 通过
:see_no_evil: 未通过或不符合MySQL5.7语法规范
编号 分类 标题 提交
1 过滤 查找最晚入职员工的所有信息 :monkey_face:
2 过滤 查找入职员工时间排名倒数第三的员工所有信息 :monkey_face:
3 连接 查找当前薪水详情以及部门编号dept_no :monkey_face:
4 连接 查找所有已经分配部门的员工的last_name和first_name :monkey_face:
5 连接 查找所有员工的last_name和first_name以及对应部门编号dept_no :monkey_face:
6 连接 查找所有员工入职时候的薪水情况 :monkey_face:
7 分组 查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t :monkey_face:
8 过滤 找出所有员工当前薪水salary情况 :monkey_face:
9 连接 获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date=9999-01-01 :monkey_face:
10 过滤 获取所有非manager的员工emp_no :monkey_face:
11 连接 获取所有员工当前的manager :monkey_face:
12 分组聚合 获取所有部门中当前员工薪水最高的相关信息 :see_no_evil:
13 分组聚合 从titles表获取按照title进行分组 :monkey_face:
14 分组聚合 从titles表获取按照title进行分组 :monkey_face:
15 过滤 查找employees表 :monkey_face:
16 分组聚合 统计出当前各个title类型对应的员工当前薪水对应的平均工资 :monkey_face:
17 过滤 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary :monkey_face:
18 连接 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary,不准使用order by :monkey_face:
19 连接 查找所有员工的last_name和first_name以及对应的dept_name :monkey_face:
20 过滤 查找员工编号emp_no为10001其自入职以来的薪水salary涨幅值growth :monkey_face:
21 连接 查找所有员工自入职以来的薪水涨幅情况 :monkey_face:
22 分组聚合 统计各个部门对应员工涨幅的次数总和 :monkey_face:
23 排名 对所有员工的薪水按照salary进行按照1-N的排名 :see_no_evil:
24 连接 获取所有非manager员工当前的薪水情况 :monkey_face:
25 连接 获取员工其当前的薪水比其manager当前薪水还高的相关信息 :monkey_face:
26 连接和分组 汇总各个部门当前员工的title类型的分配数目 :monkey_face:
27 连接 给出每个员工每年薪水涨幅超过5000的员工编号emp_no :see_no_evil:
28 连接 查找描述信息中包括robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部 :monkey_face:
29 连接 使用join查询方式找出没有分类的电影id以及名称 :monkey_face:
30 子查询 使用子查询的方式找出属于Action分类的所有电影对应的title,description :monkey_face:
31 优化 获取 select * from employees 对应的执行计划 :monkey_face:
32 字符串处理 将employees表的所有员工的last_name和first_name拼接起来作为Name :see_no_evil:
33 表操作 创建一个actor表,包含如下列信息 :see_no_evil:
34 数据操作 批量插入数据 :monkey_face:
35 数据操作 批量插入数据,不使用replace操作 :see_no_evil:
36 表和数据操作 创建一个actor_name表 :monkey_face:
37 索引 对first_name创建唯一索引uniq_idx_firstname :monkey_face:
38 视图 针对actor表创建视图actor_name_view :monkey_face:
39 索引 针对上面的salaries表emp_no字段创建索引idx_emp_no :see_no_evil:
40 表操作 在last_update后面新增加一列名字为create_date :see_no_evil:
41 触发器 构造一个触发器audit_log :monkey_face:
42 数据操作 删除emp_no重复的记录,只保留最小的id对应的记录 :monkey_face:
43 数据操作 将所有to_date为9999-01-01的全部更新为NULL :monkey_face:
44 数据操作 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005 :monkey_face:
45 表操作 将titles_test表名修改为titles_2017 :monkey_face:
46 外键 在audit表上创建外键约束,其emp_no对应employees_test表的主键id :monkey_face:
47 连接 如何获取emp_v和employees有相同的数据no :monkey_face:
48 数据操作 将所有获取奖金的员工当前的薪水增加10% :monkey_face:
49 字符串处理 针对库中的所有表生成select count(*)对应的SQL语句 :see_no_evil:
50 字符串处理 将employees表中的所有员工的last_name和first_name通过(')连接起来 :see_no_evil:
51 字符串处理 查找字符串'10,A,B' 中逗号','出现的次数cnt :monkey_face:
52 字符串处理 获取Employees中的first_name :monkey_face:
53 聚合函数 按照dept_no进行汇总 :monkey_face:
54 聚合函数 查找排除当前最大、最小salary之后的员工的平均工资avg_salary :monkey_face:
55 关键字 分页查询employees表,每5行一页,返回第2页的数据 :monkey_face:
56 连接 获取所有员工的emp_no :monkey_face:
57 子查询 使用含有关键字exists查找未分配具体部门的员工的所有信息 :monkey_face:
58 视图 获取employees中的行数据,且这些行也存在于emp_v中 :monkey_face:
59 条件语句 获取有奖金的员工相关信息 :monkey_face:
60 表的复用 统计salary的累计和running_total :monkey_face:
61 表的复用 对于employees表中,给出奇数行的first_name :see_no_evil:

答案全部在牛客网测试通过。语法规格SQLite3.7.9

题解主要有参考牛课网论坛

本地测试使用MySQL5.7,部分语法与SQLite存在差异,对于MySQL5.7+,请设置sql_mode,正确使用group by(解决ONLY_FULL_GROUP_BY导致的group by查询条件严苛问题,此方法只做临时修改)

set sql_mode=(select replace(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 

详情参考:MySQL的sql_mode解析与设置

离线练习数据集配置

牛客网的数据结构几乎与MySQL测试用的数据集相通,可以先在本地测试后,再在牛客网提交结果

  1. 前往 https://launchpad.net/test-db/employees-db-1/1.0.6 下载文件 employees_db-full-1.0.6.tar.bz2

  2. 解压缩下载的文件

    tar jxvf employees_db-full-1.0.6.tar.bz2
    cd employees_db-full-1.0.6
  3. 修改文件 employees.sql

    # 38行 set storage_engine = InnoDB; 替换
    set default_storage_engine = InnoDB;
    # 44行 select CONCAT('storage engine: ', @@storage_engine) as INFO; 替换
    select CONCAT('storage engine: ', @@default_storage_engine) as INFO;
  4. 导入数据库

    mysql -uroot -p -t < employees.sql

参考:https://blog.csdn.net/appleyuchi/article/details/79439387

GitHub:https://github.com/datacharmer/test_db

MIT License Copyright (c) 2019 xuthus Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

牛客网数据库SQL实战题目汇总 展开 收起
SQL
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
SQL
1
https://gitee.com/wangorgrace/Database-SQL-Actual-Combat.git
git@gitee.com:wangorgrace/Database-SQL-Actual-Combat.git
wangorgrace
Database-SQL-Actual-Combat
数据库SQL实战
master

搜索帮助

14c37bed 8189591 565d56ea 8189591