W Cat - SQL за 24 часа

Здесь есть возможность читать онлайн «W Cat - SQL за 24 часа» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Базы данных, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

SQL за 24 часа: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «SQL за 24 часа»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

SQL за 24 часа — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «SQL за 24 часа», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

SELECT P.PROD_DESC, О. QTY

FROM PRODUCTS_TBL P,

ORDERS_TBL О

WHERE P.PROD_ID = O.PROD_ID;

PRODJ3ESC QTY

КОСТЮМ ВЕДЬМЫ 1

ПЛАСТИКОВЫЕ ТЫКВЫ 25

ПЛАСТИКОВЫЕ ТЫКВЫ 2

ФОНАРИ 10

ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 20

ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 1

6 строк выбраны.

Здесь оказались выбранными всего 6 строк, хотя различных товаров более 10. Но вы хотели бы увидеть список всех товаров, независимо от того, имеются ли на них заказы или нет.

В следующем примере эта задача решается с помощью внешнего связывания. Для соответствующего оператора используется синтаксис Oracle.

SELECT P.PROD_DESC, О.QTY

FROM PRODUCTS_TBL P,

ORDERS_TBL О

WHERE P . PROD_ID = О . PROD_ID (+);

PROD_DESC QTY

КОСТЮМ ВЕДЬМЫ 1

МАСКИ В АССОРТИМЕНТЕ

ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 20

КОСТЮМЫ В АССОРТИМЕНТЕ

ПЛАСТИКОВЫЕ ТЫКВЫ 25

ПЛАСТИКОВЫЕ ТЫКВЫ 2

ТЫКВЕННЫЕ КОНФЕТЫ

ПЛАСТИКОВЫЕ ПАУКИ

СЛАДКАЯ КУКУРУЗА

ФОНАРИ 10

ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 1

ПОЛОЧКА ИЗ ДУБА

12 строк выбраны.

Теперь запрос возвращает список всех товаров, включая те, для которых не указано количество заказов в таблице. Внешняя связь предполагает включение в вывод всех строк данных из таблицы PRODUCTSJTBL независимо от того, существуют для них соответствующие записи в таблице ORDERSJTBL или нет.

Рекурсивное связывание

Рекурсивное связывание (SELF JOIN) предполагает связывание таблицы с ней же самой, как будто бы это были две таблицы, применяя временное переименование таблицы в операторе SQL. Синтаксис такого оператора следующий.

SELECT А.имя_столбца, В.имя_столбца [, С.имя_столбца ]

FROM таблица1 А, таблица2 В [, таблицаЗ С ]

WHERE А.имя_столбца = В.имя_столбца

[ AND А.имя_столбца = С.имя_столбца ]

Например,

SELECT A.LASTJJAME, B.LAST_NIME, A.FIRST_NAME

FROM EMPLOYEE_TBL A,

EMPLOYEEJTBL В

WHERE A.LAST_NAME = B.LAST_NAME;

Этот оператор SQL возвратит имена всех служащих с одинаковыми фамилиями из таблицы EMPLOYEEJTBL. Рекурсивное связывание удобно использовать, когда все необходимые данные размещаются в одной таблице, но требуется каким-то образом сравнить одни записи таблицы с другими.

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

SELECT FROM EMP;

ID NAME MNGR_ID

1 JOHN 0

2 MARY 1

3 STEVE 1

4 JACK 2

5 SUE 2

Поэтому в следующем запросе таблица EMP в выражении ключевого слова FROMвключена дважды и ей назначены два псевдонима. Имея два псевдонима, таблицу можно рассматривать как две разные таблицы. Все менеджеры являются также служащими, поэтому в условии связывания можно сравнить табельный номер служащего из "первой" таблицы с табельным номером менеджера из "второй" таблицы. Теперь "первая" таблица хранит информацию о служащих, а "вторая" - о менеджерах.

SELECT El.NAME, E2.NAME

FROM EMP El, EMP E2

WHERE E1.MGR_ID = E2.ID;

NAME NAME

MARY JOHN

STEVE JOHN

JACK MARY

SUE MARY

Связывание по нескольким ключам

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

Рассмотрим для примера следующие таблицы.

SQL> desc prod

Имя NULL? Тип данных

SERIAL_NUMBER NOT NULL NUMBER(10)

VENDOR_NUMBER NOT NULL NUMBER(10)

PRODUCT_NAME NOT NULL VARCHAR2OO)

COSTNOT NULL NITMBER (8,2)

SQL> desc prod NULL? Тип данных

ORD_NO NOT NULL NUMBER(10)

SERIAL_NUMBER NOT NULL NUMBER(10}

VENDOKJMUMBER NOT NULL NUMBER(10)

QUANTITY NOT NULL NUMBERt5)

ORD_DATE NOT NULL DATE

Ключом в таблице PROD является комбинация столбцов SERTAL_NUMBER и VENDOR_NUMBER Верояшо, в данной торговой компании некоторые товары имеют один серийный номер, но различаются по коду производителя

Внешним ключом в таблице ORD тоже является комбинация столбцов

SERIAL_NUMBER И VENDOR_NUMBER.

При выборе данных из обеих таблиц (PROD и ORD) оператор связывания может выглядеть следующим образом:

SELECT Р.PRODUCT_NAME, O.ORD_DATE, О.QUANTITY

FROM PROD P, ORD О

WHERE P.SERIAL_NUMBER = 0.SER1AL_NUMBER

AND P.VENDOR_NUMBER = О.VENDOR_NUMBER;

Вопросы связывания

Прежде чем использовать связывание, следует получить ответы на ряд важных вопросов Например, какие из столбцов необходимо связать, имеются ли общие столбцы вообще, а также вопросы оптимизации Вопросы оптимизации будут рассматриваться в ходе урока 18, "Управление доступом к базе данных".

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «SQL за 24 часа»

Представляем Вашему вниманию похожие книги на «SQL за 24 часа» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «SQL за 24 часа»

Обсуждение, отзывы о книге «SQL за 24 часа» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x