Реляционные операторы
Примеры данных, хранящихся в трех указанных таблицах, приведены в табл. 10.4-10.6.
Таблица 10.4. Таблица EMPLOYEE.
EmpID | Name (фамилия) |
---|---|
1 | Ferguson |
2 | Frost |
3 | Toyon |
Таблица 10.5. Таблица PROJECTS.
ProjectName (название проекта) | EmpID |
---|---|
X-63 Structure (устройство ракеты Х-63) | 1 |
X-64 Structure (устройство ракеты Х-64) | 1 |
X-63 Guidance (система управления Х-63) | 2 |
X-64 Guidance (система управления Х-64) | 2 |
X-63 Telemetry (телеметрия Х-63) | 3 |
X-64 Telemetry (телеметрия X-64) | 3 |
Как видно в этих таблицах, Фергюсон работал над проектами устройства ракет Х-63 и Х-64, а также является специалистом по механическому проектированию и расчетам аэродинамической нагрузки.
Теперь предположим, что вы как менеджер хотите увидеть всю информацию обо всех своих сотрудниках. Для этого вы решили применить к таблицам EMPLOYEE, PROJECTS и SKILLS объединение, основанное на равенстве:
SELECT * FROM EMPLOYEE E, PROJECTS P, SKILLS S WHERE E.EmpID = P.EmpID AND E.EmpID = S.EmpID;
Таблица 10.6. Таблица SKILLS.
Skill (квалификация) | EmpID |
---|---|
Mechanical Design (механическое проектирование) | 1 |
Aerodynamic Loading (расчеты аэродинамической нагрузки) | 1 |
Analog Design (проектирование аналоговых устройств) | 2 |
Gyroscope Design (проектирование гироскопов) | 2 |
Digital Design (проектирование цифровых устройств) | 3 |
R/F Design (проектирование РЛС) | 3 |
Эту же операцию можно представить в виде внутреннего объединения, используя для этого следующий синтаксис:
SELECT * FROM EMPLOYEE E INNER JOIN PROJECTS P ON (E.EmpID = P.EmpID) INNER JOIN SKILLS S ON (E.EmpID = S.EmpID);