Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шпоры информатика 1

.pdf
Скачиваний:
33
Добавлен:
22.03.2015
Размер:
1.21 Mб
Скачать

Вибірказ використаннямвкладеноговідображенняз однієютієюсамоютаблицеюв обохблоках . Одержатиномеритих постачальників, якіпостачаютьхочабоднудеталь, щопоставляєтьсяпостачальникомS2:

SELECT UNIQUE S# FROM SP

WHERE P# IN SELECT P# FROM P

WHERE S#=«S2»

Вибірказ використаннямсиноніма . Одержатиномеривсіхдеталей, щопостачаютьсякількомапостачальниками: SELECT UNIQUE P#

FROM SP SPX

WHERE P# IN SELECT P# FROM SP

WHERE S#<>SPX.S

SPX є довільноюпозначкою, щовикористовуєтьсядл зв’язкуміж SPX.S#увнутрішньомублоцітаблицеюзовнішньогоблоку. Виконаннязапитуможнапояснититак: «почерзідлякожногорядка, наприклад, SPXтаблиціSPзнайтизначенняP#,якщоце значенняналежитьмножинізначеньP#,дляякихвідповіднезначенняS#недорівнюєзначеннюS#урядкуSPX,тобто, якщодеталь постачаєтьсяпостачальником, відміннимвідпостачальника, ідентифікованимрядкомSPX».

Вибіркабільшеніжз однієїтаблиці . Длякожноїдеталі, якапостачається, одержатиномердеталі(P#)таназвивсіхміст(CITY),з якихцядетальпостачається.

SELEKT UNIQUE P#, CITY FROM SP, S

WHERE SP.S#=S.S#

Вибірка, щовключаєпорівняннямножин . 1)Одержатиіменапостачальників(SNAME),якіпостачаютьусідеталі. SELECT SNAME

FROM S

WHERE (SELECT P# FROM SP WHERE S#=S.S#)

=

(SELECT P#

FROM P)

Нампотрібнііменатакихпостачальників, щобмножинадета лей, яківонипостачають(результатпершоговнутрішнього відображення),булаеквівалентнамножинівсіхдеталей(результатдругоговнутрішньоговідображення). Уданомувипадку оператор«=»є операторомеквівалентностімножин.

2)Одержатиномеритихпостачальників, якіпостачаютьщонайменшевсідеталі, щойпостачальникS2. SELECT UNIQUE S#

FROM SP SPX WHERE (SELECT P#

FROM SP

WHERE S#=SPX.S#) CONTAINS (SELECT P#

FROM SP WHERE S#=«S2»)

ОператорCONTAINSозначає«містить», «має».

Вибірка, щовключаєGROUP BY, HAVING i SET . Одержатиномеритихпостачальників, якіпостачаютьщонайменшевсідеталі, що йпостачальникS2.

SELECT S#

FROM SP GROUP BY S#

HAVING SET (P#) CONTAINS (SELECT P#

FROM SP WHERE S#=«S2»)

ОператорGROUP BYділитьпоточнутаблицюнатакігрупи, вякихусерединібудь-якоїз цихгрупусірядкимаютьоднакові значеннявзазначеномустовпці(стовпчиках).Потімдієвираз HAVING,якийєспеціальноюформоювиразуWHERE,алестосуєтьсяне окремихрядків,агруп:предикатувиразіHAVINGзавждипосилаєтьсянавластивостігруп, анерядків, наосновіцьогопредикатагрупи абовідбираються, абовідкидаються. Отже, спочаткутаблицяподіляєтьсянатакігрупи, щокожнаміститьпевнезначенняS#.Потімпочерзі длякожноїгрупимножинавсіхзначеньP#угрупіпорівнюєтьсязмножиноювсіхзначеньP#,якавідповідаєпостачальникуS2.Колиперше

зцихдвохмножинміститьдругеякпідмножину(включаючипадокрівності),дістаємовідповіднезначенняS#.Тепер, якбачимо, потреба впозначціSPXвідпалаключовесловоUNIQUEбільшенепотрібне.

41

75. Основніоператоримови

SQL.

ОператорUNIQUEдаєзмогузробитивибіркубездублікатів.

Предикат, якийідеза WHERE,можевключатиоператорипорівняння=, >, >=, <, <=,бульові<>, операториAND, ORта NOT,а такождужкидлязазначуванняпотрібногопорядкуобчислення.

ОператорDESCозначаєсортуваннязазменшенням, а ASC —сортуваннязазростанням.

ОператорIS INможна( простоIN)означаєналежністьелементамножині. ОператорIS NOT INабо(простоNOT IN)

інтерпретуєтьсяяк«неналежитьмножині».

SPX є довільноюпозначкою, щовикористовуєтьсядл зв’язкуміж SPX.S#увнутрішньомублоцітаблицеюзовнішньогоблоку. Виконаннязапитуможнапояснититак: «почерзідлякожногорядка, наприклад, SPXтаблиціSPзнайтизначенняP#,якщоце значенняналежитьмножинізначеньP#,дляякихвідповіднезначенняS#недорівнюєзначеннюS#урядкуSPX,тобто, якщодеталь постачаєтьсяпостачальником, відміннимвідпостачальника, ідентифікованимрядкомSPX».

ОператорCONTAINSозначає«містить», «має».

ОператорGROUP BYділитьпоточнутаблицюнатакігрупи, вякихусерединібудь-якоїз цихгрупусірядкимаютьоднакові

значеннявзазначеномустовпці(стовпчиках).Потімдієвираз

HAVING,якийєспеціальноюформоювиразуWHERE,алестосуєтьсяне

окремихрядків,агруп:предикатувиразіHAVINGзавждипосилаєтьсянавластивостігруп, анерядків, наосновіцьогопредикатагрупи абовідбираються, абовідкидаються. Отже, спочаткутаблицяподіляєтьсянатакігрупи, щокожнаміститьпевнезначенняS#.Потімпочерзі длякожноїгрупимножинавсіхзначеньP#угрупіпорівнюєтьсязмножиноювсіхзначеньP#,якавідповідаєпостачальникуS2.Колиперше зцихдвохмножинміститьдругеякпідмножину(включаючипадокрівності),дістаємовідповіднезначенняS#.Тепер, якбачимо, потреба впозначціSPXвідпалаключовесловоUNIQUEбільшенепотрібне.

42