Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 4 Соединения.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
34.94 Кб
Скачать

Использование псевдонимов таблиц

Псевдонимы используются для переименования таблиц в рамках конкретного оператора языка SQL. Такое переименование носит временный характер и не влечет за собой фактического изменения имени таблицы в базе данных. Скоро вы узнаете, что для самосоединений применение псевдонимов таблиц является необходимостью. В других же случаях задание псевдонимов таблиц чаще всего способствует уменьшению числа нажатых вами клавиш и делает операторы SQL более короткими и более легкими для восприятия. Кроме того, меньшее число нажатых клавиш означает меньшее количество ошибок при вводе операторов 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

В предыдущем операторе SQL исходные таблицы были переименованы. Таблицам EMPLOYEE_TBL и EMPLOYEE_PAY_TBL мы присвоили, соответственно, псевдонимы E и EP. Следует отметить, что при переименовании таблиц выбор псевдонимов носит произвольный характер. Мы выбрали букву Е в качестве первого псевдонима только потому, что с нее начинается имя таблицы ЕМРLOYEE_TBL. Поскольку таблица EMPLOYEE_PAY_TBL также начинается с буквы Е и, таким образом, эта буква не может быть повторно использована, мы выбрали в качестве второго псевдонима сокращение EP (P здесь является первой буквой второго слова в названии таблицы EMPLOYEE_PAY_TBL). Все выбранные столбцы мы квалифицировали с помощью псевдонимов соответствующих таблиц. Обратите внимание на использование в предложении WHERE столбца SALARY, который мы также квалифицировали с помощью псевдонима содержащей его таблицы.

Соединения неравенства

В случае соединений неравенства происходит объединение информации из двух или более таблиц; при этом предполагается, что значения в заданном столбце одной таблицы не должны совпадать со значениями соответствующего ему столбца в другой. Синтаксис для соединения неравенства имеет следующий вид:

FROM ТАБЛИЦА1, ТАБЛИЦА2 [, ТАБЛИЦАЗ] WHERE ТАБЛИЦА1.ИМЯ_СТОЛБЦА != ТАБЛИЦА2.ИМЯ_СТОЛБЦА [AND ТАБЛИЦА1.ИМЯ_СТОЛБЦА != ТАБЛИЦАЗ.ИМЯ_СТОЛБЦА]

Пример использования:

SELECT EMPLOYEE_TBL.EMP_ID, EMPLOYEE_PAY_TBL.DATE_HIRE FROM EMPLOYEE_TBL, EMPLOYEE_PAY_TBL WHERE EMPLOYEE_TBL.EMP_ID != EMPLOYEE_PAY TBL.EMP_ID

Предыдущий оператор SQL возвращает идентификационные номера и дату приема на работу тех служащих, у которых отсутствуют соответствующие друг другу записи в обеих таблицах. Далее следует еще один пример соединения неравенства:

SELECT E.EMP_ID, Е.LAST_NAME, P.POSITION FROM EMPLOYEE_TBL Е, EMPLOYEE_PAY_TBL P WHERE E.EMP_ID О Р.ЕМР_ID;

В результате работы данного оператора получаем следующую информацию (таблица сокращена из-за её большого размера(30 строк) и неудобства анализа):

Вас может удивить, почему из двух таблиц, каждая из которых содержит 6 записей, было выбрано 30 строк данных. Дело в том, что для каждой записи таб-лицы EMPLOYEE_TBL в таблице EMPLOYEE_PAY_TBL существует соответствующая ей запись. Поскольку при соединении этих таблиц мы решили проверить работу оператора неравенства, каждой строке первой таблицы были поставлены в соот-ветствие все строки второй таблицы за исключением совпадающей с ней строки. Это значит, что каждой из шести строк первой таблицы было поставлено в соответствие пять не связанных с ней строк второй таблицы; 6 строк, умноженные на число 5, и дали в итоге общее количество, равное 30 строкам. В примере предыдущего раздела, в котором проверялась работа оператора равенства, каждой из шести строк первой таблицы в соответствие была поставлена только одна строка второй таблицы (а именно, совпадающая с ней строка); таким образом, в результате умножения шести строк на единицу мы и получили общее количество, равное 6 строкам.

Вы должны не только строго придерживаться синтаксиса каждой конкретной реализации языка SQL и следовать локальным бизнес-правилам компании, но и использовать описательные имена для различных групп данных.