Естественное связывание

Естественное связывание почти эквивалентно связыванию по равенству, но при естественном связывании таблиц повторения эквивалентных столбцов исключаются. Условие связывания оказывается таким же, но столбцы выбираются иначе.

Синтаксис соответствующего оператора следующий.

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 тоже должен использоваться псевдоним соответствующей таблицы.