ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

MySQL(题目讲解)

MySQL(题目讲解) ༺ 个人主页 · 纪念229 ༻我的博客主页༒专栏目录《数据结构》༒༒专栏目录《算法》༒༒专栏目录《MySQL数据库》༒༒其它有趣的计算机知识༒༺世上本没有路走的人多了自然就有了༻这篇文章讲述的是我在LeetCode和牛客网做的一些MySQL的题个人见解感谢观看。以下是网址链接批量插入数据找出所有员工当前薪水salary情况查找最晚入职员工的所有信息查找入职员工时间排名倒数第三的员工所有信息查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t牛客获取所有部门当前manager的当前薪水情况给出dept_no, emp_no以及salary当前表示to_date‘9999-01-01’从titles表获取按照title进行分组Duplicate Emails大国第N高的薪水接下来将是MySQL题的讲解环节文章目录1.批量插入数据2.找出所有员工当前薪水salary情况3.查找最晚入职员工的所有信息4.查找入职员工时间排名倒数第三的员工所有信息1.批量插入数据题目如下由图可知题目要求我们向表里插入数据语法如下insert into actorvalues(1,PENELOPE,GUINESS,2006-02-15 12:34:33),(2,NICK,WAHLBERG,2006-02-15 12:34:33);题目简单就是要插入表里的内容语法构成insert into 表名可加列名字可不加 values(加对应列名字类型的数据有几个列名字就加几个数据);2.找出所有员工当前薪水salary情况题目如下语法如下select distinct salary from salaries order by salary desc;我们知道请你找出所有员工具体的薪水salary情况对于相同的薪水只显示一次,并按照逆序显示讲解一下select 列名(*) from 表名;这样就可以展示该表里的内容(这里列名可以用星号代替表示所有列名)select distinct 列名(*) from 表名;这里distinct的意思是只展示该列名不同的数据distinct salaryxxxx, xxxx from 表名select distinct 列名(*) from 表名 order by 列名 asc/desc;order by 列名 asc(desc)的意思是将该列升序排序降序排序同一行的跟着走如果不加asc(desc) 就默认是asc(升序排序)接下来我将讲述有关selec …的优先级问题比如这个select distinct salary from salaries order by salary desc;第一步先执行 from salaries说明先用这个表然后select distinct salary 然后展示salary这一列salary中不会有相同的数据之后执行by salary desc再将表中该列的数据去进行降序排序简洁来讲from select order by3.查找最晚入职员工的所有信息题目如下具体题目在链接上看这里我就不展示全了题目要求请你查找employees里最晚入职员工的所有信息语法展示select*from employees order by hire_date desc limit1;简单讲一下执行顺序 from select order by limit讲解limitselect * from employees order by hire_date desc limit 数字;limit 数字 意思就是只展示第几行数据 数字为几就展示几行数据limit 数字数字跳过第几行读取几行列如limit 6,3 跳过第六行读取3行题目要的是 所有信息则 select * from最晚入职员工则 降序排序 第一个就是最大的数据及最晚入职员工则有 by hire_date desc limit 1;4.查找入职员工时间排名倒数第三的员工所有信息题目如图其它图与第三题无异就不说了题目要求请你查找employees里入职员工时间升序排名的情况下倒数第三的员工所有信息语法展示select*from employees where hire_date(select distinct hire_date from employees order by hire_date desc limit2,1);这里先讲一下为什么这么写 我们写语法时要有分行写执行顺序的习惯这样看得明白也容易OJ个人观点仅供参考题目讲解先讲一下where它是一种限制条件列如where 列名xxxxx(数字)/‘xxxxxx’(字符或日期或时间)如果这样那展示的数据在该列只会有该数据当然该列没选中的数据也会影响其它列数据的展示再补充一点distinct这里我就感到疑惑了这个 distinct 如果把重复的数据只保留一个的话就是这一行嘛那肯定会有两个重复的数据就是这一列。然后但是它其他列不同它会保留哪一一行的数据SELECT DISTINCT hire_date你只查询了 hire_date 单独这一列只拿一列出来数据库根本不会管其他列语句含义只提取 hire_date 这一列去掉这一列内部重复的值只返回去重后的 hire_date 其他列不会被查询、不会出现在结果里不存在“保留哪一行”这个问题目里用的是where 表名这里我们用了临时建表的方法select distinct hire_date from employees order by hire_date desc limit 2,1这里只解释下临时表其它就不解释了employees里入职员工时间升序排名的情况下倒数第三的员工所有信息正常来说升序排名的情况下倒数第三 看到升序排序我们会想到asc 可是求的是倒数第三入职员工时间的员工信息第一我们不知道一共有几行所以我们找不到可是我们可以逆序(desc) 取第三位的 就是 limit 2,1就可以找到第三倒数第三入职时间的员工可能不止一个不能用limit 要用where 找的话还有第一…的入职员工也不止一个可能要distinct 排序其它元素干扰题目讲到这里就告以段落了其它的题都差不多希望看到这里对你有所帮助,谢谢观看
返回列表