![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL学习记录
chestnutllin
这个作者很懒,什么都没留下…
展开
-
MySQL必知必会学习-创建样例表
为了能够实验书中的每个栗子,首先需要创建我们需要的几个样例表。为了和书中样例一致,首先创造相同名字的数据源crashcourse(1)创建一个新的数据源create databasecrashcourse; (这里使用书中的数据源名称)(2)选择指定的数据源use crashcourse;(3)执行creat.sql脚本source E:\xxx\xxx\create...原创 2019-04-17 19:01:40 · 390 阅读 · 0 评论 -
SQL编程-汇总各个部门当前员工的title类型的分配数目
26.汇总各个部门当前员工的title类型的分配数目题目内容:代码及思路:首先整理题目中重要信息:1.各部门;2.所有员工的titiles及个数.SELECT de.dept_no,dp.dept_name,titles.title,COUNT(titles.title) AS countFROM titles INNER JOIN dept_emp AS de O...原创 2019-05-24 14:51:18 · 211 阅读 · 0 评论 -
SQL编程-查找所有员工自入职以来的薪水涨幅情况
21.查找所有员工自入职以来的薪水涨幅情况题目内容:代码及思路:因为要计算薪水的涨幅情况,因此需要将当前的salary与from_date的salary进行做差。SELECT sCurrent.emp_no,(sCurrent.salary-sStart.salary) AS growthFROM (SELECT sa.emp_no,sa.salary FROM emp...原创 2019-05-21 14:10:43 · 211 阅读 · 0 评论 -
SQL编程-统计各个部门对应员工涨幅的次数总和
22.统计各个部门对应员工涨幅的次数总和题目内容:代码及思路:SELECT de.dept_no,dp.dept_name,COUNT(sa.salary) AS sumFROM (dept_emp de INNER JOIN salaries sa ON de.emp_no=sa.emp_no)INNER JOIN departments dp on de.dept...原创 2019-05-21 14:29:24 · 272 阅读 · 0 评论 -
SQL编程-从titles表获取按照title进行分组
13.从titles表获取按照title进行分组题目内容:代码及思路:对title里面对应的元素进行计数,选择>=2的部分按照title进行分组。SELECT title,count(title) AS t FROM titles GROUP BY title HAVING t>1; 切记GROUP BY与HAVING搭配!!...原创 2019-05-16 15:39:43 · 128 阅读 · 0 评论 -
SQL编程-从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略
14.从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略题目内容:代码及思路:该题与上题的区别在于对于emp_no重复的进行忽略,因此只要对emp_no进行计数;除此之外观察到t是升序排列的,因此需要在count中加入DISTINCTSELECT title,count(DISTINCT emp_no) AS t FROM titles GR...原创 2019-05-16 15:49:28 · 103 阅读 · 0 评论 -
SQL编程-查找employee表
15.查找employee表题目内容:代码及思路:题目要求:1.emp_no为奇数;2.last_name不为Mary;3.hire_date逆序(大到小)1.emp_no%2=12.last_name!='Mary3.ORDER BY默认是从小到大SELECT *FROM employees WHERE emp_no%2=1AND last_nam...原创 2019-05-16 16:13:56 · 1093 阅读 · 0 评论 -
SQL编程-统计出当前各个title类型对应的员工当前薪水对应的平均工资
16.统计出当前各个title类型对应的员工当前薪水对应的平均工资题目内容:代码及思路:题目漏了一个要求,是需要当前日期的,也就是to_date='9999-01-01'SELECT titles.title,avg(salaries.salary) AS avgFROM titles INNER JOIN salariesON titles.emp_no=salar...原创 2019-05-16 16:25:19 · 243 阅读 · 0 评论 -
SQL编程-对所有员工的当前薪水按照salary进行按照1-N的排名
23.对所有员工的当前薪水按照salary进行按照1-N的排名题目内容:代码及思路:判断排名的时候,salary中肯定有重复的数字,因此需要去除这些重复的,使用DISTINCTSELECT s1.emp_no,s1.salary,COUNT(DISTINCT s2.salary) AS rankFROM salaries AS s1,salaries AS s2W...原创 2019-05-22 09:19:15 · 193 阅读 · 0 评论 -
SQL编程-获取当前薪水第二多的员工的emp_no以及其对应的薪水salary
17.获取当前薪水第二多的员工的emp_no以及其对应的薪水salary题目内容:代码及思路:因为输出是薪水第二多的员工,因此又涉及到ORDER BY ,DESC 和LIMIT的用法了,详见之前的题目SELECT emp_no,salary FROM salariesWHERE to_date='9999-01-01'ORDER BY salary DESC LIMI...原创 2019-05-17 14:06:02 · 200 阅读 · 0 评论 -
SQL编程-查找当前薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by
18.查找当前薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by题目内容:代码及思路:从不是最高薪水的员工中找薪水最高的,就是薪水第二高的。SELECT employees.emp_no,Max(salaries.salary),employees.last_name,employees.fi...原创 2019-05-17 14:28:00 · 1107 阅读 · 0 评论 -
SQL编程-查找所有员工的last_name和first_name以及对应的dept_name
19.查找所有员工的last_name和first_name以及对应的dept_name题目内容:代码及思路:因为包括还没有分部门的员工,因此使用的是employees LEFT JOIN前面两个表SELECT e.last_name,e.first_name,de.dept_name FROM employees AS eLEFT JOIN dept_emp AS ...原创 2019-05-17 15:03:50 · 314 阅读 · 0 评论 -
SQL编程-获取员工其当前的薪水比其manager当前薪水还高的相关信息
25.获取员工其当前的薪水比其manager当前薪水还高的相关信息题目内容:代码及思路:首先要分别整理出员工和manager的emp_no还有对应salary信息。其次在对这两者进行比较.SELECT s1.emp_no AS emp_no, s2.emp_no AS manager_no, s1.salary AS emp_salary, s2.salary ...原创 2019-05-24 14:30:41 · 292 阅读 · 0 评论 -
SQL编程-获取所有非manager员工当前的薪水情况
24.获取所有非manager员工当前的薪水情况题目内容:代码及思路:因为是要非manager,因此肯定需要添加条件emp_no NOT IN (SELECT emp FROM dept_manager)SELECT de.dept_no,de.emp_no,sa.salaryFROM dept_emp de,salaries saWHERE de.to_date...原创 2019-05-24 14:05:26 · 146 阅读 · 0 评论 -
SQL编程-获取所有部门中当前员工薪水最高的相关信息
12.获取所有部门中当前员工薪水最高的相关信息题目内容:代码及思路:题目漏掉一个信息,因为要获取当前员工薪水,因此还有一个to_date的条件SELECT de.dept_no,de.emp_no,MAX(sa.salary)FROM dept_emp de INNER JOIN salaries saON de.emp_no=sa.emp_noWHERE de...原创 2019-05-15 14:41:01 · 1309 阅读 · 1 评论 -
SQL编程-查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
7.查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t题目内容:代码及思路:涉及到GROUP BY语句的使用,GROUP BY通常会和聚合函数一起使用比如说SUM,COUNT等等,此时又应用了HAVING关键字的使用,因为WHERE不能与聚合函数结合,所以需要HAVING代替WHERE筛选分组后的各组数据。SELECT emp_no,count(emp_no...原创 2019-05-13 19:50:51 · 152 阅读 · 0 评论 -
SQL编程-找出所有员工当前薪水salary情况
8.找出所有员工当前薪水salary情况题目内容:代码及思路:因为题目中要求相同的salary只显示一次,因此涉及到使用GROUP BY也是用来整合数据。因为是逆序所以ORDER BY salary加上DESCSELECT salary FROM salaries WHERE to_date='9999-01-01' GROUP BY salary ORDER ...原创 2019-05-13 20:14:07 · 505 阅读 · 0 评论 -
SQL编程-获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary
9.获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary题目内容:代码及思路:SELECT dept_manager.dept_no,dept_manager.emp_no,salaries.salary FROM dept_manager INNER JOIN salaries ON dept_manager.emp_no...原创 2019-05-13 20:26:51 · 273 阅读 · 0 评论 -
SQL编程-查找最晚入职员工的所有信息
1.查找最晚入职员工的所有信息题目内容:代码及思路:SELECT * FROM employees WHERE hire_date=(SELECT max(hire_date) FROM employees);原创 2019-05-06 16:23:47 · 269 阅读 · 0 评论 -
SQL编程-查找入职员工时间排名倒数第三的员工所有信息
2.查找入职员工时间排名倒数第三的员工所有信息题目内容:代码及思路:因为涉及到排名因此要用到ORDER BY语句。因为要找到倒数第三名的员工,因为ORDER BY语句默认是升序排列,因此可以将问题转换为寻找降序排列中的第三个员工信息,所以加上DESC表明是降序排列。SELECT * FROM employees ORDER BY hire_date DESC LIMIT 2,...原创 2019-05-06 16:51:27 · 463 阅读 · 0 评论 -
SQL编程-查找各个部门当前领导当前薪水详情以及其对应部门编号dept_no
3.查找各个部门当前领导当前薪水详情以及其对应部门编号dept_no题目内容:代码及思路:SELECT s.*,d.dept_no FROM salaries s,dept_manager d WHERE s.to_date='9999-01-01'AND d.to_date='9999-01-01'AND s.emp_no=d.emp_no;...原创 2019-05-06 18:05:27 · 535 阅读 · 0 评论 -
SQL编程-查找所有已经分配部门的员工的last_name和first_name
4.查找所有已经分配部门的员工的last_name和first_name题目内容:代码及思路:题目有问题,应该还有一个输出dept_no信息,因此根据题意利用inner join将两个表连接起来,然后返回两个表中联结字段相等的行。INNER JOIN的用法:SELECTcolumn_name(s)FROMtable1INNER JOINtable2ONtabl...原创 2019-05-09 16:01:18 · 191 阅读 · 0 评论 -
SQL编程-查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工
5.查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工题目内容:代码及思路:与上一题不同之处就在于需要将没有分配具体部门的员工也打印出来,因此是所有员工,则可以使用left joinleft join用法如下:SELECTcolumn_name(s)FROMtable1LEFT JOINtable...原创 2019-05-09 16:11:44 · 362 阅读 · 0 评论 -
SQL编程-查找所有员工入职时候的薪水情况
6.查找所有员工入职时候的薪水情况题目内容:代码及思路:需要对emp_no进行降序排列SELECT salaries.emp_no,salaries.salary FROM employees INNER JOIN salaries ON employees.emp_no=salaries.emp_noAND employees.hire_date=salaries.f...原创 2019-05-09 16:29:51 · 490 阅读 · 0 评论 -
SQL编程-获取所有非manager的员工emp_no
10.获取所有非manager的员工emp_no题目内容:代码及思路:因为获取的是非manager的员工的emp_no,因此dept_manager.dept_no应该是空的。除此之外,该题涉及到LEFT JOIN的使用,下面介绍LEFT JOIN用法:LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,...原创 2019-05-15 14:05:32 · 248 阅读 · 0 评论 -
SQL编程-获取所有员工当前的manager
11.获取所有员工当前的manager题目内容:代码及思路:SELECT dept_emp.emp_no,dept_manager.emp_no AS manager_no FROM dept_emp,dept_managerWHERE dept_emp.emp_no <> dept_manager.emp_noAND dept_emp.dept_no = ...原创 2019-05-15 14:27:37 · 154 阅读 · 0 评论 -
SQL编程-查找员工编号emp_no为10001其自入职以来的薪水salary涨幅值growth
20.查找员工编号emp_no为10001其自入职以来的薪水salary涨幅值growth题目内容:代码及思路:要求得到涨幅,就是将最大的salary减去最小的salary。SELECT (MAX(salary)-MIN(salary)) AS growth FROM salariesWHERE emp_no=10001;...原创 2019-05-17 15:14:39 · 228 阅读 · 0 评论