Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

11 Commits

Repository files navigation

🐂牛客网数据库SQL 实战答案解析

🚩目录

[TOC]

🍭OJ刷题 地址

题解🔥目录

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

🚅急速零基础入门数据库

🛴基本概念

  1. 就是数据表中的列或者列的组合。
  2. 主键 表中可以唯一确定本表中某行记录的列或者列的组合。 例如或者身份证号码唯一确定一个人;用户ID+发票号码唯一确认某次交易。
  3. 外键 表中的某列或者某些列的组合是其他表的主键。 其作用是为了建立和其他表的关联关系。
  4. 连接 将几个个有关联的表(其中一个表的主键是其他表的外键)建立连接关系,形成一个临时表以供它用。 建立连接的主键/外键是建立连接的依据。
  5. 内连接 将进行连接的表以建立连接的依据为中心,将这些表取交集,交集就是内连接的结果。 作用就是找出在两张表中都有的记录。
  6. 外连接 连接的动作和内连接一样,结果不同。将表进行交集之后,取交集中的记录以及某表中除交集之外的所有记录。包括左连接和右连接。 例如A表左连接B表,实际上就是取交集在B表中所有字段的值+A表内容。
  7. 自连接 连接动作同上,只不过是在一张表中进行。 这样的情况适用于表中的2个字段互相有关联,并且要对这种关联进行处理时。

🚲基本SQL语句

  • Select FromWhere 从某些表中选取符合某条件的记录 Select Distinct name,id From table Where Num=6 选取名为table的表中所有Num字段等于6的记录,并且只显示name、id列的内容。如果要全部显示,可以使用Select *。Distict是表示重复的结果只保留一个。
  • Join进行表的各种连接 Select name,id FROM table1 [INNER|LEFT OUTER|RIGHT OUTER] JOIN table2 ON table1.id [>|<|>=|<=|=] table2.id 这是进行内连接/左外联/右外联的表示方式,其中id就是建立连接的依据,on后面的部分是选择对象的筛选条件。例如,如果是“=”,表示在两个表中id相同的记录中进行查询
  • Order By将查询结果进行排序格式order by table.name Desc,将结果按照表table中的字段name进行降序排序。默认不标明排序方式的是升序。
  • Group ByHaving将查询结果按照Group By的条件进行分组,Having 增加结果显示的约束条件,即在上述查询结果中符合某条件的记录才能显示。 Group By table.name Having tabel.number>2,即将结果中table的name字段相同的记录合为一条记录,并且只有table.number大于2的分组符合显示条件。

🛵基本常用函数

  • Sum()计算某些记录的和
  • AVG()计算某些记录的平均值
  • Count()计算符合某些条件的记录的个数
  • Max()筛选出某些值中的最大值
  • Min()筛选出某些值中的最小值

📫联系方式

  1. 代码仓库

  2. 个人博客

  3. 邮箱

About

【零基础数据库入门】牛客网数据库SQL实战答案解析https://www.nowcoder.com/ta/sql/

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors