W Cat - SQL за 24 часа

Тут можно читать онлайн W Cat - SQL за 24 часа - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-db. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    SQL за 24 часа
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.5/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

W Cat - SQL за 24 часа краткое содержание

SQL за 24 часа - описание и краткое содержание, автор W Cat, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

SQL за 24 часа - читать книгу онлайн бесплатно, автор W Cat
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

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, "Управление доступом к базе данных".

Использование связующей таблицы

Как осуществить связывание? Если нужно связать таблицы, не имеющие общих столбцов, необходимо использовать третью таблицу, имеющую общие столбцы как с первой, так и со второй таблицей. Такая таблица называется связующей таблицей

Связующую таблицу можно использовать для связывания как таблиц с общими столбцами, так и таблиц, не имеющих общих столбцов.

Для примера использования связующей таблицы рассмотрим следующие три таблицы.

CUSTOMER_TBL

CUST_IDVARCHAR2(10) NOT NULL Ключевое поле

CUST_NAME VARCHAR2(30) NOT NULL

CUST_ADDRESS VARCHAR2(20) NOT NULL

CUST_CITY VARCHAR2U5) NOT NULL

CUST_STATE CHAR(2) NOT NULL

CUST_ZIP NUMBER(5) NOT NULL

CUST_PHONE NUMBER(10)

CUST_FAX NUMBER(10)

ORDERS_TBL

ORD_NUMVARCHAR2(10) NOT NULL Ключевое поле

CUST_ID VARCHAR2(10) NOT NULL

PROD_ID VARCHAR2(10) NOT NULL

QTY NUMBER(6) NOT NULL

ORD_DATE DATE

PRODUCTS_TBL

PROD_ID VARCHAR2UO) NOT NULL Ключевое поле

PROD_DESC VARCHAR2(40) NOT NULL

COST NUMBER (6,2) NOT NULL

Необходимо использовать таблицы CUSTOMERJTBL и pfi ODUCTS_TBL. У этих таблиц нет общих столбцов, по которым можно было бы выполнить связывание. Приходится использовать таблицу ORDERS_TBL, в которой имеется поле CUST_ID, присутствующее и в таблице CUSTOMER_TBL, и в таблице PRODUCTS_TBL. Условия связывания и результаты выглядят следующим образом.

SELECT C.CUST_NAME, P.PROD_DESC FROM CUSTOMER_TBL С,

PRODUCTS_TBL P,

ORDERS_TBL О

WHERE C.CUST_ID = O.CUST_ID AND P.PROD_ID = O.PROD_ID;

CUST_NAME PROD_DESC

LESLIE GLEASON КОСТЮМ ВЕДЬМЫ

SCHYLERS NOVELTIES ПЛАСТИКОВЫЕ ТЫКВЫ

WENDY WOLF ПЛАСТИКОВЫЕ ТЫКВЫ

GAVINS PLACE ФОНАРИ

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

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

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

Обратите внимание на назначение таблицам псевдонимов и их использование в выражении ключевого слова WHERE.

Декартово произведение

Декартово произведение является результатом декартова связывания (CARTESIAN JOIN) или отсутствия связывания таблиц в запросе. Если в запросе указываются две или более таблиц и не используется их связывание, то в выводе будут присутствовать все возможные комбинации строк выбранных таблиц. Если таблицы большие, в результате получится, может быть, сотни, тысячи или даже миллионы записей. При использовании в запросе декартова произведения таблиц настоятельно рекомендуется использовать ключевое слово WHERE. Декартово произведение таблиц иначе называется кросс-связыванием (cross join).

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

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

WHERE таблица1, таблица2 [,таблицаЗ ]

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

SELECT E.EMP_ID, E.LAST_NAME, P.POSITION

FROM EMPLOYEE_TBL E,

EMPLOYEE_PAY_TBL P;

EMP ID

LAST NAM

POSITION

311549902 442346889 213764555 313782439 220984332 443679012 311549902 442346889 213764555 313782439 220984332 443679012 311549902 442346889 213764555 313782439 220984332 443679012 311549902 442346889 213764555 313782439 220984332 443679012 311549902 442346889 213764555 313782439 220984332 443679012 311549902 442346889 213764555

STEPHENS PLEW GLASS GLASS WALLACE SPURGEON STEPHENS PLEW GLASS GLASS WALLACE SPURGEON STEPHENS PLEW GLASS GLASS WALLACE SPURGEON STEPHENS PLEW GLASS GLASS WALLACE SPURGEON STEPHENS PLEW GLASS GLASS WALLACE SPURGEON STEPHENS PLEW GLASS

MARKETING MARKETING MARKETING MARKETING MARKETING MARKETING TEAM LEADER TEAM LEADER TEAM LEADER TEAM LEADER TEAM LEADER TEAM LEADER SALES MANAGER SALES MANAGER SALES MANAGER SALES MANAGER SALES MANAGER SALES MANAGER SALESMAN SALESMAN SALESMAN SALESMAN SALESMAN SALESMAN SHIPPER SHIPPER SHIPPER SHIPPER SHIPPER SHIPPER SHIPPER SHIPPER SHIPPER

313782439 220984332 443679012

GLASS WALLACE SPORGEON

SHIPPER SHIPPER SHIPPER

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

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

Чтобы разобраться в том, что такое декартово произведение таблиц, рассмотрите следующие примеры.

SQL> SELECT X FROM TABLE1;

X

-

A

В

С

D

4 строки выбраны

SQL> SELECT X FROM TABLE2;

X

-

A

В

С

D

4 строки выбраны.

SQL> SELECT TABLE1.X, TABLE2.X

2* FROM TABLE1, TABLE2;

X X

_ _

A A

В А

С А

D A

А В

в в

с в

D В

А С

в с

с с

D С

A D

В D

С D

D D

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

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

Резюме

Вы получили представление об одной из важнейших возможностей SQL - связывании таблиц. Представьте, какие были бы ограничения, если бы в запросе нельзя было извлечь данные из нескольких таблиц сразу. Мы с вами рассмотрели несколько типов связывания таблиц, каждый из которых выполняет свои задачи в зависимости от условий запроса. Данные можно связывать по равенству или по неравенству. Внешнее связывание позволяет извлекать данные из связанных таблиц даже тогда, когда не все записи одной таблицы имеют соответствующие записи в другой. Рекурсивное связывание позволяет связать таблицу саму с собой. Берегитесь кросс-связывания, известного так же, как декартово произведение таблиц. В результате декартова произведения, возникающего при использовании в запросе нескольких таблиц без их связывания, объем выводимых данных может оказаться огромным. При выборе данных из нескольких таблиц внимательно проверьте условия связывания таблиц по родственным столбцам (обычно это должны быть ключевые поля). Неправильное связывание таблиц обычно оборачивается неправильно выведенными или неверными данными.

Вопросы и ответы

При связывании таблиц должны ли они связываться в том же порядке, в каком они указаны в выражении ключевого словаFROM?

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

Интервал:

Закладка:

Сделать


W Cat читать все книги автора по порядку

W Cat - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




SQL за 24 часа отзывы


Отзывы читателей о книге SQL за 24 часа, автор: W Cat. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x