第六章、练习题一.sql 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #第六章、练习题(一)
  2. SELECT * FROM employees;
  3. SELECT * FROM departments;
  4. SELECT * FROM locations;
  5. SELECT * FROM jobs;
  6. #1、显示所有员工的姓名、部门号和部门名称
  7. SELECT e.last_name,e.department_id,d.department_name
  8. FROM employees e LEFT JOIN departments d
  9. ON e.department_id = d.department_id;
  10. #2、查询90号部门员工的job_id和90号部门的location_id
  11. SELECT e.last_name,e.job_id,d.location_id
  12. FROM employees e JOIN departments d
  13. ON e.department_id = 90
  14. AND e.department_id = d.department_id;
  15. #老师做的
  16. SELECT e.last_name,e.job_id,d.location_id
  17. FROM employees e JOIN departments d
  18. ON e.department_id = d.department_id
  19. WHERE d.department_id = 90;
  20. #3、选择所有有奖金的员工的last_name,department_name,location_id,city
  21. SELECT e.last_name,e.commission_pct,d.department_name,d.location_id,l.city
  22. FROM employees e LEFT JOIN departments d
  23. ON e.department_id = d.department_id
  24. LEFT JOIN locations l
  25. ON d.location_id = l.location_id
  26. WHERE e.commission_pct IS NOT null;
  27. SELECT *
  28. FROM employees
  29. WHERE commission_pct IS NOT NULL;
  30. #老师做的
  31. SELECT e.last_name,d.department_name,d.location_id,l.city
  32. FROM employees e LEFT OUTER JOIN departments d
  33. ON e.`department_id` = d.`department_id`
  34. LEFT OUTER JOIN locations l
  35. ON d.`location_id` = l.`location_id`
  36. WHERE commission_pct IS NOT NULL;
  37. #4、选择city在Toronto工作的员工的last_name,job_id,department_id,department_name
  38. SELECT e.last_name,e.job_id,e.department_id,d.department_name
  39. FROM employees e JOIN departments d
  40. ON e.department_id = d.department_id
  41. JOIN locations l
  42. ON d.location_id = l.location_id
  43. WHERE l.city = 'Toronto';
  44. SELECT *
  45. FROM locations
  46. WHERE city = 'Toronto';
  47. #SQL92语法:本题不涉及内外连接,所以可以用SQL92语法实现
  48. SELECT e.last_name,e.job_id,e.department_id,d.department_name
  49. FROM employees e,departments d,locations l
  50. WHERE e.department_id = d.department_id
  51. AND d.location_id = l.location_id
  52. AND l.city = 'Toronto';
  53. #5、查询员工所在的部门名称、部门地址、姓名、工作、工资,其中员工所在部门的部门名称为“Executive”
  54. SELECT d.department_name,l.street_address,e.last_name,j.job_title,e.salary
  55. FROM employees e LEFT JOIN departments d
  56. ON e.department_id = d.department_id
  57. JOIN locations l
  58. ON d.location_id = l.location_id
  59. JOIN jobs j
  60. ON e.job_id = j.job_id
  61. WHERE d.department_name = 'Executive';
  62. #6、选择指定员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式
  63. #employees Emp# manager Mgr#
  64. #kochhar 101 king 100
  65. SELECT e.last_name "employees",e.employee_id "Emp#",m.last_name "manager",m.employee_id "Mgr#"
  66. FROM employees e LEFT JOIN employees m
  67. ON e.manager_id = m.employee_id;
  68. #7、查询哪些部门没有员工
  69. SELECT d.department_name,d.department_id
  70. FROM employees e RIGHT JOIN departments d
  71. ON e.department_id = d.department_id
  72. WHERE d.manager_id IS NULL;
  73. #老师做的
  74. SELECT d.department_name,d.department_id
  75. FROM departments d LEFT JOIN employees e
  76. ON d.department_id = e.department_id
  77. WHERE e.department_id IS NULL;
  78. #本题也可以使用子查询
  79. #8、查询那个城市没有部门
  80. SELECT l.location_id,l.city,d.department_name
  81. FROM departments d RIGHT JOIN locations l
  82. ON d.location_id = l.location_id
  83. WHERE d.department_name IS NULL;
  84. #老师做的
  85. SELECT l.location_id,l.city
  86. FROM locations l LEFT JOIN departments d
  87. ON l.location_id = d.location_id
  88. WHERE d.location_id IS NULL;
  89. #9、查询部门名为Sales或IT的员工信息
  90. SELECT e.employee_id,e.last_name,e.department_id,d.department_name
  91. FROM employees e JOIN departments d
  92. ON e.department_id = d.department_id
  93. WHERE d.department_name IN('Sales','IT');