1. 案例:找出工作岗位是SALESMANMANAGER的员工?
    2. select ename,job from emp where job = 'SALESMAN' or job = 'MANAGER';
    3. select ename,job from emp where job in('SALESMAN','MANAGER');
    4. +--------+----------+
    5. | ename | job |
    6. +--------+----------+
    7. | ALLEN | SALESMAN |
    8. | WARD | SALESMAN |
    9. | JONES | MANAGER |
    10. | MARTIN | SALESMAN |
    11. | BLAKE | MANAGER |
    12. | CLARK | MANAGER |
    13. | TURNER | SALESMAN |
    14. +--------+----------+
    15. select ename,job from emp where job = 'SALESMAN'
    16. union
    17. select ename,job from emp where job = 'MANAGER';
    18. +--------+----------+
    19. | ename | job |
    20. +--------+----------+
    21. | ALLEN | SALESMAN |
    22. | WARD | SALESMAN |
    23. | MARTIN | SALESMAN |
    24. | TURNER | SALESMAN |
    25. | JONES | MANAGER |
    26. | BLAKE | MANAGER |
    27. | CLARK | MANAGER |
    28. +--------+----------+
    29. //union的效率要高一些,
    30. 对于表连接来说,每连接一次新表,则匹配的次数满足笛卡尔积,成倍的翻
    31. 但是union可以减少匹配的次数,在减少匹配次数的情况下,还可以完成两个结果集的拼接
    32. a 连接 b 连接 c
    33. a 10条记录
    34. b 10条记录
    35. c 10条记录
    36. 匹配次数:10 * 10 * 10 = 1000
    37. a 连接 b 一个结果:10 * 10 = 100
    38. a 连接 c 一个结果:10 * 10 = 100
    39. 使用union的话是: 100 + 100 = 200 (union将乘法运算变成了加法运算 )
    40. union使用注意事项
    41. //错误:union在进行结果集合并时,要求两个结果集的列数相同
    42. select ename,job from emp where job = 'SALESMAN'
    43. union
    44. select ename from emp where job = 'MANAGER';
    45. //MySQL可以,oracle语法严格,不可以,会报错
    46. //要求:结果集合并时列和列的数据类型也要一致
    47. select ename,job from emp where job = 'SALESMAN'
    48. union
    49. select ename,sal from emp where job = 'MANAGER';
    50. +--------+----------+
    51. | ename | job |
    52. +--------+----------+
    53. | ALLEN | SALESMAN |
    54. | WARD | SALESMAN |
    55. | MARTIN | SALESMAN |
    56. | TURNER | SALESMAN |
    57. | JONES | 2975 |
    58. | BLAKE | 2850 |
    59. | CLARK | 2450 |
    60. +--------+----------+