SQL-DQL(11)联合查询

√ 1.含义

   uinon 联合 合并:将多条查询语句的结果合并成一个结果

√ 2.练习

案例一:查询部门编号>90 或者邮箱包含e的员工信息

mysql> select * from employees where email like '%a%'
    -> union
    -> select * from employees where department_id >90;
+-------------+-------------+------------+----------+--------------------+------------+----------+----------------+------------+---------------+---------------------+
| employee_id | first_name  | last_name  | email    | phone_number       | job_id     | salary   | commission_pct | manager_id | department_id | hiredate            |
+-------------+-------------+------------+----------+--------------------+------------+----------+----------------+------------+---------------+---------------------+
|         101 | Neena       | Kochhar    | NKOCHHAR | 515.123.4568       | AD_VP      | 17000.00 |           NULL |        100 |            90 | 1992-04-03 00:00:00 |
|         102 | Lex         | De Haan    | LDEHAAN  | 515.123.4569       | AD_VP      | 17000.00 |           NULL |        100 |            90 | 1992-04-03 00:00:00 |
|         103 | Alexander   | Hunold     | AHUNOLD  | 590.423.4567       | IT_PROG    |  9000.00 |           NULL |        102 |            60 | 1992-04-03 00:00:00 |
|         105 | David       | Austin     | DAUSTIN  | 590.423.4569       | IT_PROG    |  4800.00 |           NULL |        103 |            60 | 1998-03-03 00:00:00 |
|         106 | Valli       | Pataballa  | VPATABAL | 590.423.4560       | IT_PROG    |  4800.00 |           NULL |        103 |            
...
...
67 rows in set (0.07 sec)

当然用简单的做法也可以实现啦~
mysql> select * from employees where email like '%a%' or department >90;

案例二:查询中国用户中男性的信息以及外国用户中的男性的信息。(这才是联合查询的优势啦~)

mysql> select id ,cname,csex from t_ca where csex =男‘
    ->union
    ->select t_id,tName,tGender from t_ua where tGender ='male';
    
不好意思,我偷了一下懒,这个表我就没去建立和添加数据了,自己脑补一下。    

√3.应用场景

要查询的结果来自多个表,并且多个表没有直接的连接条件,但查询的信息一致时。

一致性:1.要求多条查询语句的查询列数是一致的!
       2.要求多条查询语句的查询的每一列的类型和顺序一致。
       3.uinon关键字默认去重,如果使用union all可以包括重复项。

注:这是本人的学习笔记及练习,如果有错误的地方望指出一起讨论,谢谢!

你可能感兴趣的:(SQL-DQL(11)联合查询)