
Шпоры информатика 1
.pdfВибірказ використаннямвкладеноговідображенняз однієютієюсамоютаблицеюв обохблоках . Одержатиномеритих постачальників, якіпостачаютьхочабоднудеталь, щопоставляєтьсяпостачальником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