Естественное связывание
Естественное связывание почти эквивалентно связыванию по равенству, но при естественном связывании таблиц повторения эквивалентных столбцов исключаются. Условие связывания оказывается таким же, но столбцы выбираются иначе.
Синтаксис соответствующего оператора следующий.
SELECT таблица1.*, таблица2.имя_столбца [, таблицаЗ.имя_столбца]
FROM таблица1, таблица2 [,таблицаЗ]
WHERE таблица1.имя_столбца = таблица2.имя_столбца
[AND таблица1.имя_столбца = таблицаЗ.имя_столбца]
Например,
SELECT EMPLOYEE_TBL.*, EMPLOYEE_PAY_TBL.SALARY
FROM EMPLOYEE_TBL, EMPLOYEE_PAY_TBL
WHERE EMPLOYEE_TBL.EMP_ID = EMPLOYEE_PAY_TBL.EMP_ID;
Этот оператор SQL возвращает данные всех столбцов из таблицы EMPLOYEE_TBL и значения SALARY из таблицы EMPLOYEE_PAY_TBL. Столбец EMP_ID имеется в обеих таблицах, но извлекается только из таблицы EMPLOYEE_TBL, поскольку во второй таблице соответствующий столбец содержит точно такую же информацию и поэтому извлекать ее нет смысла.
В следующем примере выбираются все столбцы из таблицы EMPLOYEE_TBL и один столбец из таблицы EMPLOYEE_PAY_TBL. He забывайте о том, что звездочка (*) представляет все столбцы таблицы.
SELECT EMPLOYEE_TBL.*, EMPLOYEE_PAY_TBL.POSITION
FROM EMPLOYEE_TBL, EMPLOYEE_PAY_TBL
WHERE EMPLOYEE_TBL.EMP_ID = EMPLOYEE_PAY_TBL.EMP_ID;
EMP_ID LAST_NAM FIRST_NAM ADDRESS CITY ST ZIP PHONE PAGER POSITION
311549902 STEPHENS TINA D RR 3 BOX 17A GREENWOOD IN 47890
3178784465 MARKETING
442346889 PLEW LINDA С 3301 BEACON INDIANAPOLIS IN 46224
3172978990 TEAM LEADER
213764555 GLASS BRANDON S 1710 MAIN ST WHITELAND IN 47885
3178984321 3175709980 SALES MANAGER
313782439 GLASS JACOB 3789 RIVER BLVD INDIANAPOLIS IN 45734
3175457676 8887345678 SALESMAN
220984332 WALLACE MARIAH 7789 KEYSTONE INDIANAPOLIS IN 46741
3173325986 SHIPPER
443679012 SPURGEON TIFFANY 5 GEORGE COURT INDIANAPOLIS IN 46234
3175679007 SHIPPER
Обратите внимание на то, как здесь располагаются данные вывода. Перенос строк возникает из-за того, что строки данных оказываются длиннее ширины страницы
Использование псевдонимов для имен таблиц
Использование псевдонимов для имен таблиц означает переименование таблицы в рамках используемого оператора SQL. При этом истинное имя таблицы в базе данных не меняется. Как мы с вами увидим ниже, назначение таблице псевдонима необходимо при рекурсивном связывании (SELF JOIN). Часто псевдонимы назначаются таблицам с целью сокращения объема печатания, в результате чего операторы SQL становятся короче и проще для понимания. Кроме того, чем меньше печатать, тем меньше будет ошибок. При назначении таблицам псевдонимов псевдонимы должны использоваться и при точном определении столбцов. Вот пример использования псевдонимов таблиц и соответствующее использование столбцов.
SELECT E.EMP_ID, EP.SALARY, EP.DATE_HIRE, E.LAST_NAME
FROM EMPLOYEE_TBL E, EMPLOYEE_PAY_TBL EP
WHERE E.EMP_ID = EP.EMP_ID AND EP.SALARY > 20000;
В этом примере таблицам назначаются псевдонимы. Вместо имени EMPLOYEE_TBL используется Е, поскольку имя этой таблицы начинается с Е. Имя второй таблицы, EMPLOYEE_PAY_TBL, тоже начинается с Е, но для нее используется псевдоним ЕР, поскольку псевдонимы разных таблиц в одном операторе должны быть разными. Выбранные столбцы приравниваются с использованием псевдонимов таблиц. Обратите внимание на то, что для используемого в выражении ключевого слова WHERE имени столбца SALARY тоже должен использоваться псевдоним соответствующей таблицы.