Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
41
Добавлен:
16.04.2013
Размер:
16.95 Кб
Скачать

Understanding SQL. Chapter 16. йурпмшъпчбойе рпдъбртпупч у лпнбодбнй нпдйжйлбгйй ч ьфпк змбче, чщ хъобефе лбл йурпмшъпчбфш РПДЪБРТПУЩ Ч ЛПНБОДБИ НПДЙЖЙЛБГЙЙ. чЩ ОБКДЕФЕ, ЮФП ОЕЮФП РПДПВОПЕ - ЧЩ ХЦЕ ЧЙДЕМЙ РТЙ ЙУРПМШЪПЧБОЙЙ РПД- ЪБРТПУПЧ Ч ЪБРТПУБИ. рПОЙНБОЙЕ, ЛБЛ РПДЪБРТПУЩ ЙУРПМШЪХАФУС Ч ЛПНБОДБИ SELECT, cДЕМБЕФ ЙИ РТЙНЕОЕОЙЕ Ч ЛПНБОДБИ НПДЙЖЙЛБГЙЙ ВПМЕЕ ХЧЕТЕООЩН, ИПФС Й ПУФБОХФУС ОЕЛПФПТЩЕ ЧПРТПУЩ. ъБЧЕТЫЕОЙЕН ЛПНБОДЩ SELECT СЧМСЕФУС РПДЪБРТПУ, ОП ОЕ РТЕДЙЛБФ, Й РП- ЬФПНХ ЕЗП ЙУРПМШЪПЧБОЙЕ ПФМЙЮБЕФУС ПФ ЙУРПМШЪПЧБОЙС РТПУФЩИ РТЕДЙЛБФПЧ У ЛПНБОДБНЙ НПДЙЖЙЛБГЙЙ, ЛПФПТЩЕ ЧЩ ХЦЕ ЧЩРПМОСМЙ ТБООЕЕ У ЛПНБОДБНЙ UPDATE Й DELETE. чЩ ЙУРПМШЪПЧБМЙ РТПУФЩЕ ЪБРТПУЩ ЮФПВЩ РТПЙЪЧПДЙФШ ЪОБЮЕОЙС ДМС INSERT, Б ФЕРЕТШ НЩ НПЦЕН ТБУЫЙТЙФШ ЬФЙ ЪБРТПУЩ ЮФПВЩ ЧЛМАЮБФШ Ч ОЙИ РПДЪБРТПУЩ. чБЦОЩК РТЙОГЙР ЛПФПТЩК ОБДП УПВМАДБФШ РТЙ ТБВПФЕ У ЛПНБОДБНЙ НПДЙЖЙЛБГЙЙ, УПУФПЙФ Ч ФПН, ЮФП ЧЩ ОЕ НПЦЕФЕ Ч РТЕДМПЦЕОЙЙ FROM МАВПЗП РПДЪБРТПУБ, НПДЙЖЙГЙТПЧБФШ ФБВМЙГХ Л ЛПФПТПК УУЩМБЕФЕУШ У РПНПЭША ПУОПЧОПК ЛПНБОДЩ. ьФП ПФОПУЙФУС ЛП ЧУЕН ФТЕН ЛПНБОДБН НП- ДЙЖЙЛБГЙЙ. иПФС ЙНЕЕФУС ВПМШЫПЕ ЛПМЙЮЕУФЧП УЙФХБГЙК Ч ЛПФПТЩИ ВХДЕФ РПМЕЪОП УДЕМБФШ ЪБРТПУ ФПК ФБВМЙГЩ ЛПФПТХА ЧЩ ИПФЙФЕ НПДЙЖЙГЙТПЧБФШ РТЙЮЕН ЧП ЧТЕН ЕЕ НПДЙЖЙЛБГЙЙ, ЬФП УМЙЫЛПН ХУМПЦОСЕФ ПРЕТБГЙА ЮФП- ВЩ ЙУРПМШЪПЧБФШ ЕЕ ОБ РТБЛФЙЛЕ. оЕ ДЕМБКФЕ УУЩМЛЙ Л ФЕЛХЭЕК УФТПЛЕ ФБВМЙГЩ ХЛБЪБООПК Ч ЛПНБОДЕ, ЛПФПТБС СЧМСЕФУС УППФОЕУЕООЩН РПДЪБРТПУПН. йурпмшъпчбойе рпдъбртпупч у INSERT INSERT - ЬФП УБНЩК РТПУФПК УМХЮБК. чЩ ХЦЕ ЧЙДЕМЙ ЛБЛ ЧУФБЧМСФШ ТЕЪХМШФБФЩ ЪБРТПУБ Ч ФБВМЙГХ. чЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ РПДЪБРТПУЩ ЧОХФТЙ МАВПЗП ЪБРТПУБ, ЛПФПТЩК ЗЕОЕТЙТХЕФ ЪОБЮЕОЙС ДМС ЛПНБОДЩ INSERT ФЕН ЦЕ УБНЩН УРПУПВПН, ЛПФПТЩН ЧЩ ДЕМБМЙ ЬФП ДМС ДТХЗЙИ ЪБРТПУПЧ - Ф.Е. ЧОХФТЙ РТЕДЙЛБФБ ЙМЙ РТЕДМПЦЕОЙС HAVING. рТЕДРПМПЦЙН, ЮФП НЩ ЙНЕЕН ФБВМЙГХ У ЙНЕОЕН SJpeople, УФПМВГЩ ЛПФПТПК УПЧРБДБАФ УП УФПМВГБНЙ ОБЫЕК ФБВМЙГЩ рТПДБЧГПЧ. чЩ ХЦЕ ЧЙДЕМЙ ЛБЛ ЪБРПМОСФШ ФБВМЙГХ РПДПВОП ЬФПК, ЪБЛБЪЮЙЛБНЙ Ч ЗПТПДЕ, ОБРТЙНЕТ, Ч San Jose: INSERT INTO SJpeople SELECT * FROM Salespeople WHERE city = 'San Jose'; фЕРЕТШ НЩ НПЦЕН ЙУРПМШЪПЧБФШ РПДЪБРТПУ ЮФПВЩ ДПВБЧЙФШ Л ФБВМЙГЕ SJpeople ЧУЕИ РТПДБЧГПЧ ЛПФПТЩЕ ЙНЕАФ ЪБЛБЪЮЙЛПЧ Ч San Jose, ОЕЪБ- ЧЙУЙНП ПФ ФПЗП, ОБИПДСФУС МЙ ФБН РТПДБЧГЩ ЙМЙ ОЕФ: INSERT INTO SJpeople SELECT * FROM Salespeople WHERE snum = ANY ( SELECT snum FROM Customers WHERE city = ' (San (Jose' ); пВБ ЪБРТПУБ Ч ЬФПК ЛПНБОДЕ ЖХОЛГЙПОЙТХАФ ФБЛЦЕ ЛБЛ ЕУМЙ ВЩ ПОЙ ОЕ СЧМСМЙУШ ЮБУФША ЧЩТБЦЕОЙС INSERT. рПДЪБРТПУ ОБИПДЙФ ЧУЕ УФТПЛЙ ДМС ЪБЛБЪЮЙЛПЧ Ч San Jose Й ЖПТНЙТХЕФ ОБВПТ ЪОБЮЕОЙК snum. чОЕЫОЙК ЪБРТПУ ЧЩВЙТБЕФ УФТПЛЙ ЙЪ ФБВМЙГЩ Salespeople, ЗДЕ ЬФЙ ЪОБЮЕОЙС snum ОБКДЕОЩ. ч ЬФПН РТЙНЕТЕ, УФТПЛЙ ДМС РТПДБЧГПЧ Rifkin Й Serres, ЛПФПТЩЕ ОБЪОБЮЕОЩ ЪБЛБЪЮЙЛБН Ч San Jose - Liu Й Cisneros, ВХДХФ ЧУФБЧМЕОЩ Ч ФБВМЙГХ SJpeople. ое чуфбчмскфе дхвмйлбфщ уфтпл рПУМЕДПЧБФЕМШОПУФШ ЛПНБОД Ч РТЕДЫЕУФЧХАЭЕН ТБЪДЕМЕ НПЦЕФ ВЩФШ РТПВМЕНБФЙЮОПК. рТПДБЧЕГ Serres ОБИПДЙФУС Ч San Jose, Й УМЕДПЧБФЕМШОП ВХДЕФ ЧУФБЧМЕО У РПНПЭША РЕТЧПК ЛПНБОДЩ. чФПТБС ЛПНБОДБ РПРЩФБЕФУС ЧУФБЧЙФШ ЕЗП УОПЧБ, РПУЛПМШЛХ ПО ЙНЕЕФ ЕЭЕ ПДОПЗП ЪБЛБЪЮЙЛБ Ч San Jose. еУМЙ ЙНЕАФУС МАВЩЕ ПЗТБОЙЮЕОЙС Ч ФБВМЙГЕ SJpeople ЛПФПТЩЕ ЧЩОХЦДБ- АФ ЕЕ ЪОБЮЕОЙС ВЩФШ ХОЙЛБМШОЩНЙ, ЬФБ ЧФПТБС ЧУФБЧЛБ РПФЕТРЙФ ОЕХДБЮХ ( ЛБЛ ЬФП Й ДПМЦОП ВЩМП ВЩФШ). дЧПКОЩЕ УФТПЛЙ ЬФП РМПИП. ( уН. зМБЧХ 18 ДМС РПДТПВОПУФЕК ПВ ПЗТБОЙЮЕОЙСИ. ) вЩМП ВЩ МХЮЫЕ ЕУМЙ ВЩ ЧЩ НПЗМЙ ЛБЛ-ФП ЧЩСУОЙФШ, ЮФП ЬФЙ ЪОБЮЕОЙС ХЦЕ ВЩМЙ ЧУФБЧМЕОЩ Ч ФБВМЙГХ, РТЕЦДЕ ЮЕН ЧЩ РПРЩФБЕФЕУШ УДЕМБФШ ЬФП УОПЧБ, У РПНПЭША ДПВБЧМЕОЙС ДТХЗПЗП РПДЪБРТПУБ ( ЙУРПМШЪХАЭЕЗП ПРЕТБФПТЩ ФЙРБ EXISTS, IN, < > ALL, Й ФБЛ ДБМЕЕ ) Л РТЕДЙЛБФХ. л УПЦБМЕОЙА, ЮФПВЩ УДЕМБФШ ЬФХ ТБВПФХ, ЧЩ ДПМЦОЩ ВХДЕФЕ УПУМБФШУС ОБ УБНХ ФБВМЙГХ SJpeople Ч РТЕДМПЦЕОЙЙ FROM ЬФПЗП ОПЧПЗП РПДЪБРТПУБ, Б, ЛБЛ НЩ ЗПЧПТЙМЙ ТБОЕЕ, ЧЩ ОЕ НПЦЕФЕ УУЩМБФШУС ОБ ФБВМЙГХ ЛПФПТБС ЪБДЕКУФЧПЧБОБ ( ГЕМЙЛПН ) Ч МАВПН РПДЪБРТПУЕ ЛПНБОДЩ НПДЙЖЙЛБГЙЙ. ч УМХЮБЕ INSERT, ЬФП ВХДЕФ ФБЛЦЕ РТЕРСФУФЧПЧБФШ УППФОЕУЕООЩН РПДЪБРТПУБН, ПУОПЧБООЩН ОБ ФБВМЙГЕ Ч ЛПФПТХА ЧЩ ЧУФБЧМСЕФЕ ЪОБЮЕОЙС. ьФП ЙНЕЕФ ЪОБЮЕОЙЕ, РПФПНХ ЮФП, У РПНПЭША INSERT, ЧЩ УПЪДБЕФЕ ОПЧХА УФТПЛХ Ч ФБВМЙГЕ. "фЕЛХЭБС УФТПЛБ" ОЕ ВХДЕФ УХЭЕУФЧПЧБФШ ДП ФЕИ РПТ, РПЛБ INSERT ОЕ ЪБЛПОЮЙФ ЕЕ ПВТБВБФЩЧБФШ. йурпмшъпчбойе рпдъбртпупч упъдбоощи чп чоеыоек фбвмйге ъбртпуб ъБРТЕЭЕОЙЕ ОБ УУЩМЛХ Л ФБВМЙГЕ ЛПФПТБС НПДЙЖЙГЙТХЕФУС ЛПНБОДПК INSERT ОЕ РТЕДПИТБОЙФ ЧБУ ПФ ЙУРПМШЪПЧБОЙС РПДЪБРТПУПЧ ЛПФПТЩЕ УУЩМБАФУС Л ФБВ- МЙГЕ ЙУРПМШЪХЕНПК Ч РТЕДМПЦЕОЙЙ FROM ЧОЕЫОЕК ЛПНБОДЩ SELECT. фБВМЙГБ ЙЪ ЛПФПТПК ЧЩ ЧЩВЙТБЕФЕ ЪОБЮЕОЙС, ЮФПВЩ РТПЙЪЧЕУФЙ ЙИ ДМС INSERT , ОЕ ВХДЕФ ЪБДЕКУФЧПЧБОБ ЛПНБОДПК; Й ЧЩ УНПЦЕФЕ УУЩМБФШУС Л ЬФПК ФБВМЙГЕ МАВЩН УРПУПВПН, ЛПФПТЩНЙ ЧЩ ПВЩЮОП ЬФП ДЕМБМЙ, ОП ФПМШЛП ЕУМЙ ЬФБ ФБВМЙГБ ХЛБЪБОБ Ч БЧФПОПНОПН ЪБРТПУЕ. рТЕДРПМПЦЙН ЮФП НЩ ЙНЕЕН ФБВМЙГХ У ЙНЕОЕН Samecity Ч ЛП- ФПТПК НЩ ЪБРПНОЙН РТПДБЧГПЧ У ЪБЛБЪЮЙЛБНЙ Ч ЙИ ЗПТПДБИ. нЩ НПЦЕН ЪБРПМОЙФШ ФБВМЙГХ ЙУРПМШЪХС УППФОЕУЕООЩК РПДЪБРТПУ: INSERT INTO (Samecity SELECT * FROM (Salespeople outer WHERE city IN ( SELECT city FROM Customers inner WHERE inner.snum = outer.snum ); оЙ ФБВМЙГБ Samecity, ОЙ ФБВМЙГБ рТПДБЧГПЧ ОЕ ДПМЦОЩ ВЩФШ ЙУРПМШЪПЧБОЩ ЧП ЧОЕЫОЙИ ЙМЙ ЧОХФТЕООЙИ ЪБРТПУБИ INSERT. ч ЛБЮЕУФЧЕ ДТХЗПЗП РТЙНЕТБ, РТЕДРПМПЦЙН, ЮФП ЧЩ ЙНЕЕФЕ РТЕНЙА ДМС РТПДБЧГБ ЛПФПТЩК ЙНЕЕФ УБНЩК ВПМШЫПК РПТСДПЛ ОБ ЛБЦДЩК ДЕОШ. чЩ УМЕДЙФЕ ЪБ ОЙН Ч ФБВМЙГЕ У ЙНЕОЕН Bonus, ЛПФПТБС УПДЕТЦЙФ РПМЕ snum РТПДБЧГПЧ, РПМЕ odate Й РПМЕ amt . чЩ ДПМЦОЩ ЪБРПМОЙФШ ЬФХ ФБВМЙГХ ЙОЖПТНБГЙЕК ЛПФПТБС ИТБОЙФУС Ч ФБВМЙГЕ рПТСДЛПЧ, ЙУРПМШЪХС УМЕДХАЭХА ЛПНБОДХ: INSERT INTO Bonus SELECT snum, odate, amt FROM Orders a WHERE amt = ( SELECT MAX (amt) FROM Orders b WHERE a.odate = b.odate ); дБЦЕ ЕУМЙ ЬФБ ЛПНБОДБ ЙНЕЕФ РПДЪБРТПУ ЛПФПТЩК ВБЪЙТХЕФУС ОБ ФПК ЦЕ УБНПК ФБВМЙГЕ ЮФП Й ЧОЕЫОЙК ЪБРТПУ, ПО ОЕ УУЩМБЕФУС Л ФБВМЙГЕ Bonus, ОБ ЛПФПТХА ЧПЪДЕКУФЧХЕФ ЛПНБОДБ. юФП ДМС ОБУ БВУПМАФОП РТЙЕНМЕНП. мПЗЙЛБ ЪБРТПУБ, ЕУФЕУФЧЕООП, ДПМЦОБ РТПУНБФТЙЧБФШ ФБВМЙГХ рПТСДЛПЧ, Й ОБИПДЙФШ ДМС ЛБЦДПК УФТПЛЙ НБЛУЙНХН РПТСДЛБ УХНН РТЙПВТЕФЕОЙК ДМС ЬФПК ДБФЩ. еУМЙ ЬФБ ЧЕМЙЮЙОБ - ФБЛ ЦЕ ЛБЛ Х ФЕЛХЭЕК УФТПЛЙ, ФЕЛХЭБС УФТПЛБ СЧМСЕФУС ОБЙВПМШЫЙН РПТСДЛПН ДМС ЬФПК ДБФЩ, Й ДБООЩЕ ЧУФБЧМСАФУС Ч ФБВМЙГХ Bonus. йурпмшъпчбойе рпдъбртпупч у DELETE чЩ НПЦЕФЕ ФБЛЦЕ ЙУРПМШЪПЧБФШ РПДЪБРТПУЩ Ч РТЕДЙЛБФЕ ЛПНБОДЩ DELETE. ьФП ДБУФ ЧБН ЧПЪНПЦОПУФШ ПРТЕДЕМСФШ ОЕЛПФПТЩЕ ДПЧПМШОП УМПЦОЩЕ ЛТЙФЕТЙЙ ЮФПВЩ ХУФБОПЧЙФШ, ЛБЛЙЕ УФТПЛЙ ВХДХФ ХДБМСФШУС, ЮФП ЧБЦОП, ФБЛ ЛБЛ ЧЩ ЛПОЕЮОП ЦЕ ОЕ ЪБИПФЙФЕ РП ОЕПУФПТПЦОПУФЙ ХДБМЙФШ ОХЦОХА УФТПЛХ. оБРТЙНЕТ, ЕУМЙ НЩ ЪБЛТЩМЙ ОБЫЕ ЧЕДПНУФЧП Ч мПОДПОЕ, НЩ НПЗМЙ ВЩ ЙУРПМШЪПЧБФШ УМЕДХАЭЙК ЪБРТПУ ЮФПВЩ ХДБМЙФШ ЧУЕИ ЪБЛБЪЮЙЛПЧ ОБЪОБЮЕООЩИ Л РТПДБЧГБН Ч мПОДПОЕ: DELETE FROM Customers WHERE snum = ANY ( SELECT snum FROM Salespeople WHERE city = 'London' ); ьФБ ЛПНБОДБ ХДБМЙФ ЙЪ ФБВМЙГЩ ъБЛБЪЮЙЛПЧ УФТПЛЙ Hoffman Й Clemens ( ОБЪОБЮЕООЩИ ДМС Peel ), Й Periera ( ОБЪОБЮЕООПЗП Л Motika). лПОЕЮОП, ЧЩ ЪБИПФЙФЕ ХДПУФПЧЕТЙФШУС, РТБЧЙМШОП МЙ УЖПТНЙТПЧБОБ ЬФБ ПРЕТБГЙС, РТЕЦДЕ ЮЕН ХДБМЙФШ ЙМЙ ЙЪНЕОЙФШ УФТПЛЙ Peel Й Motika. ьФП ЧБЦОП. пВЩЮОП, ЛПЗДБ НЩ ДЕМБЕН НПДЙЖЙЛБГЙА Ч ВБЪЕ ДБООЩИ, ЛПФПТБС РПЧМЕЮЕФ ДТХЗЙЕ НПДЙЖЙЛБГЙЙ, ОБЫЕ РЕТЧПЕ ЦЕМБОЙЕ - УДЕМБФШ УОБЮБМБ ПУОПЧОПЕ ДЕКУФЧЙЕ, Б ЪБФЕН РТПУМЕДЙФШ ДТХЗЙЕ, ЧФПТЙЮОЩЕ. ьФПФ РТЙНЕТ, РПЛБЦЕФ, РПЮЕНХ ВПМЕЕ ЬЖЖЕЛФЙЧОП ДЕМБФШ ОБПВПТПФ, ЧЩ- РПМОЙЧ УОБЮБМБ ЧФПТЙЮОЩЕ ДЕКУФЧЙС. еУМЙ, ОБРТЙНЕТ, ЧЩ ТЕЫЙМЙ ЙЪНЕОЙФШ ЪОБЮЕОЙЕ РПМ city ЧБЫЙИ РТПДБЧГПЧ ЧЕЪДЕ, ЗДЕ ПОЙ РЕТЕОБЪОБЮЕОЩ, ЧЩ ДПМЦОЩ ТБУУНПФТЕФШ ЧУЕИ ЬФЙИ ЪБЛБЪЮЙЛПЧ ВПМЕЕ УМПЦОЩН УРПУПВПН. фБЛ ЛБЛ ТЕБМШОЩЕ ВБЪЩ ДБООЩИ ЙНЕАФ ФЕОДЕОГЙА ТБЪЧЙЧБФШУС ДП ЪОБЮЙФЕМШОП ВПМШЫЙИ ТБЪНЕТПЧ ЮЕН ОБЫЙ ОЕВПМШЫЙЕ ФЙРПЧЩЕ ФБВМЙГЩ, ЬФП НПЦЕФ УФБФШ УЕТШЕЪОПК РТПВМЕНПК. SQL НПЦЕФ РТЕДПУФБЧЙФШ ОЕЛПФПТХА РП- НПЭШ Ч ЬФПК ПВМБУФЙ ЙУРПМШЪХС НЕИБОЙЪН УРТБЧПЮОПК ГЕМПУФОПУФЙ ( ПВ- УХЦДЕООПК Ч зМБЧЕ 19 ), ОП ЬФП ОЕ ЧУЕЗДБ ДПУФХРОП Й ОЕ ЧУЕЗДБ РТЙНЕОЙНП. иПФС ЧЩ ОЕ НПЦЕФЕ УУЩМБФШУС Л ФБВМЙГЕ ЙЪ ЛПФПТПК ЧЩ ВХДЕФЕ ХДБМФШ УФТПЛЙ Ч РТЕДМПЦЕОЙЙ FROM РПДЪБРТПУБ, ЧЩ НПЦЕФЕ Ч РТЕДЙЛБФЕ, УПУМБФШ- У ОБ ФЕЛХЭХА УФТПЛХ-ЛБОДЙДБФ ЬФПК ФБВМЙГЩ - ЛПФПТБ ЧМЕФУ УФТПЛПК ЛПФПТБ Ч ОБУФХДБМСФШТЕН РТПЧЕТЕФУ Ч ПУОПЧОПН РТЕДЙЛБФЕ. дТХЗЙНЙ УМПЧБНЙ, ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ УППФОЕУЕООЩЕ РПДЪБРТПУЩ. пОЙ ПФМЙЮБ- АФУ ПФ ФЕИ УППФОЕУЕООЩИ РПДЪБРТПУПЧ, ЛПФПТЩЕ ЧЩ НПЗМЙ ЙУРПМШЪПЧБФШ У INSERT, Ч ЛПФПТПН ПОЙ ЖБЛФЙЮЕУЛЙ ВБЪЙТПЧБМЙУШ ОБ УФТПЛБИ-ЛБОДЙДБФБИ ФБВМЙГЩ ЪБДЕКУФЧПЧБООПК Ч ЛПНБОДЕ, Б ОЕ ОБ ЪБРТПУЕ ДТХЗПК ФБВМЙГЩ. DELETE FROM Salespeople WHERE EXISTS ( SELECT * FROM Customers WHERE rating = 100 AND Salespeople.snum = Customers.snum ); пВТБФЙФЕ ЧОЙНБОЙЕ, ЮФП AND ЮБУФШ РТЕДЙЛБФБ ЧОХФТЕООЕЗП ЪБРТПУБ УУЩМБЕФУС Л ФБВМЙГЕ рТПДБЧГПЧ. ьФП ПЪОБЮБЕФ ЮФП ЧЕУШ РПДЪБРТПУ ВХДЕФ ЧЩРПМОСФШУС ПФДЕМШОП ДМС ЛБЦДПК УФТПЛЙ ФБВМЙГЩ рТПДБЧГПЧ, ФБЛЦЕ ЛБЛ ЬФП ЧЩРПМОСМПУШ У ДТХЗЙНЙ УППФОЕУЕООЩНЙ РПДЪБРТПУБНЙ. ьФБ ЛПНБОДБ ХДБМЙФ ЧУЕИ РТПДБЧГПЧ ЛПФПТЩЕ ЙНЕМЙ РП НЕОШЫЕК НЕТЕ ПДОПЗП ЪБЛБЪЮЙЛБ У ПГЕОЛПК 100 Ч ФБВМЙГЕ рТПДБЧГПЧ. лПОЕЮОП ЦЕ, ЙНЕЕФУС ДТХЗПК УРПУПВ УДЕМБФШ ФП ЦЕ: DELETE FROM Salespeople WHERE 100 IN ( SELECT rating FROM Customers WHERE Salespeople.snum = Customers.snum); ьФБ ЛПНБОДБ ОБИПДЙФ ЧУЕ ПГЕОЛЙ ДМС ЛБЦДПЗП ЪБЛБЪЮЙЛБ РТПДБЧГПЧ Й ХДБ- МЕФ ФЕИ РТПДБЧГПЧ ЪБЛБЪЮЙЛЙ ЛПФПТПЗП ЙНЕАФ ПГЕОЛХ = 100. пВЩЮОП УППФОЕУЕООЩЕ РПДЪБРТПУЩ - ЬФП РПДЪБРТПУЩ УЧСЪБООЩЕ У ФБВМЙГЕК Л ЛПФПТПК ПОЙ УУЩМБАФУС ЧП ЧОЕЫОЕН ЪБРТПУЕ (Б ОЕ Ч УБНПН РТЕДМПЦЕОЙЙ DELETE) - Й ФБЛЦЕ ЮБУФП ЙУРПМШЪХЕНЩЕ. чЩ НПЦЕФЕ ОБКФЙ ОБЙОЙЪЫЙК РПТ- ДПЛ ОБ ЛБЦДЩК ДЕОШ Й ХДБМЙФШ РТПДБЧГПЧ ЛПФПТЩЕ РТПЙЪЧЕМЙ ЕЗП, У РПНПЭША УМЕДХАЭЕК ЛПНБОДЩ: DELETE FROM Salespeople WHERE (snum IN ( SELECT snum FROM Orders WHERE amt = ( SELECT MIN (amt) FROM Orders b WHERE a.odate = b.odate )); рПДЪБРТПУ Ч РТЕДЙЛБФЕ DELETE , ВЕТЕФ УППФОЕУЕООЩК РПДЪБРТПУ. ьФПФ ЧОХФТЕООЙК ЪБРТПУ ОБИПДЙФ НЙОЙНБМШОЩК РПТСДПЛ УХННЩ РТЙПВТЕФЕОЙК ДМС ДБФЩ ЛБЦДПК УФТПЛЙ ЧОЕЫОЕЗП ЪБРТПУБ. еУМЙ ЬФБ УХННБ ФБЛ ЦЕ ЛБЛ УХННБ ФЕЛХЭЕК УФТПЛЙ, РТЕДЙЛБФ ЧОЕЫОЕЗП ЪБРТПУБ ЧЕТЕО, ЮФП ПЪОБЮБЕФ, ЮФП ФЕЛХЭБС УФТПЛБ ЙНЕЕФ ОБЙНЕОШЫЙК РПТСДПЛ ДМС ЬФПК ДБФЩ. рПМЕ snum РТПДБЧГБ, ПФЧЕФУФЧЕООПЗП ЪБ ЬФПФ РПТСДПЛ, ЙЪЧМЕЛБЕФУС Й РЕТЕДБЕФУС Ч ПУОПЧ- ОПК РТЕДЙЛБФ ЛПНБОДЩ DELETE, ЛПФПТБС ЪБФЕН ХДБМСЕФ ЧУЕ УФТПЛЙ У ЬФЙН ЪОБЮЕОЙЕН РПМ snum ЙЪ ФБВМЙГЩ рТПДБЧГПЧ( ФБЛ ЛБЛ snum - ЬФП РЕТЧЙЮОЩК ЛМАЮ ФБВМЙГЩ рТПДБЧГПЧ, ФП ЕУФЕУФЧЕООП ФБН ДПМЦОБ ЙНЕФШУС ФПМШЛП ПДОБ ХДБМСЕНБС УФТПЛБ ДМС ЪОБЮЕОЙС РПМ snum ЧЩЧЕДЕООПЗП У РПНПЭША РПДЪБР- ТПУБ. еУМЙ ЙНЕЕФУС ВПМШЫЕ ПДОПК УФТПЛЙ, ЧУЕ ПОЙ ВХДХФ ХДБМЕОЩ. ) рПМЕ snum = 1007 ЛПФПТПЕ ВХДЕФ ХДБМЕОП, ЙНЕЕФ ОБЙНЕОШЫЕЕ ЪОБЮЕОЙЕ ОБ 3 пЛФСВТС; РПМЕ snum = 1002, ОБЙНЕОШЫЕЕ ОБ 4 пЛФСВТС; РПМЕ snum = 1001, ОБЙНЕОШЫЕЕ Ч РПТСДЛБИ ОБ 5 пЛФСВТС ( ЬФБ ЛПНБОДБ ЛБЦЕФУС ДПЧПМШОП ТЕЪЛПК, ПУПВЕООП ЛПЗДБ ПОБ ХДБМСЕФ Peel УПЪДБЧЫЕЗП ЕДЙОУФЧЕООЩК РПТСДПЛ ОБ 5 пЛФСВТС, ОП ЪБФП ЬФП ИПТПЫБС ЙММАУФТБГЙС). еУМЙ ЧЩ ИПФЙФЕ УПИТБОЙФШ Peel, ЧЩ НПЗМЙ ВЩ ДПВБЧЙФШ ДТХЗПК РПДЪБРТПУ, ЛПФПТЩК ВЩ ЬФП ДЕМБМ: DELETE FROM Salespeople WHERE (snum IN ( SELECT snum FROM Orders a WHERE amt = ( SELECT MIN (amt) FROM Orders b WHERE a.odate = b.odate ) AND 1 < ( SELECT COUNT onum FROM Orders b WHERE a.odate = b.odate )); фЕРЕТШ ДМС ДОС Ч ЛПФПТПН ВЩМ УПЪДБО ФПМШЛП ПДЙО РПТСДПЛ, ВХДЕФ РТПЙЪЧЕДЕО УЮЕФ = 1 ЧП ЧФПТПН УППФОЕУЕООПН РПДЪБРТПУЕ. ьФП УДЕМБЕФ РТЕДЙЛБФ ЧОЕЫОЕЗП ЪБРТПУБ ОЕРТБЧЙМШОЩН, Й РПМ snum УМЕДПЧБФЕМШОП ОЕ ВХДХФ РЕТЕДБОЩ Ч ПУОПЧОПК РТЕДЙЛБФ. йурпмшъпчбойе рпдъбртпупч у UPDATE UPDATE ЙУРПМШЪХЕФ РПДЪБРТПУЩ ФЕН ЦЕ УБНЩН УРПУПВПН ЮФП Й DELETE - ЧОХФТЙ ЬФПЗП ОЕПВСЪБФЕМШОПЗП РТЕДЙЛБФБ. чЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ УППФОЕУЕООЩЕ РПДЪБРТПУЩ ЙМЙ Ч ЖПТНЕ РТЙЗПДОПК ДМС ЙУРПМШЪПЧБОЙС У DELETE - УЧСЪБООПК ЙМЙ У НПДЙЖЙГЙТХЕНПК ФБВМЙГЕК ЙМЙ У ФБВМЙГЕК ЧЩЪЩЧБЕНПК ЧП ЧОЕЫОЕН ЪБРТПУЕ. оБРТЙНЕТ, У РПНПЭША УППФОЕУЕООПЗП РПДЪБРТПУБ Л ФБВМЙГЕ ЛПФПТБС ВХДЕФ НПДЙЖЙГЙТПЧБФШУС, ЧЩ НПЦЕФЕ ХЧЕМЙЮЙФШ ЛПНЙУУЙПООЩЕ ЧУЕИ РТПДБЧГПЧ ЛПФПТЩЕ ВЩМЙ ОБЪОБЮЕОЩ РП ЛТБКОЕК НЕТЕ ДЧХН ЪБЛБЪЮЙЛБН: UPDATE Salespeople SET comm = comm + .01 WHERE 2 < = ( SELECT COUNT (cnum) FROM Customers WHERE Customers.snum = Salespeople.snum ); фЕРЕТШ РТПДБЧГЩ Peel Й Serres, ЙНЕАЭЙЕ НОПЗПЮЙУМЕООЩИ ЪБЛБЪЮЙЛПЧ, РПМХЮБФ РПЧЩЫЕОЙЕ УЧПЙИ ЛПНЙУУЙПООЩИ. йНЕЕФУС ТБЪОПЧЙДОПУФШ РПУМЕДОЕЗП РТЙНЕТБ ЙЪ РТЕДЩДХЭЕЗП ТБЪДЕМБ У DELETE. пО ХНЕОШЫБЕФ ЛПНЙУУЙПООЩЕ РТПДБЧГПЧ ЛПФПТЩЕ РТПЙЪЧЕМЙ ОБЙНЕОШЫЙЕ РПТСДЛЙ, ОП ОЕ УФЙТБЕФ ЙИ Ч ФБВМЙГЕ: UPDATE Salespeople SET comm = comm - .01 WHERE snum IN ( SELECT snum FROM Orders a WHERE amt = ( SELECT MIN (amt) FROM Orders b WHERE a.odate = b.odate )); уфпмлопчеойе у пзтбойюеойснй рпдъбртпупч лпнбодщ DML оЕУРПУПВОПУФШ УПУМБФШУС Л ФБВМЙГЕ ЪБДЕКУФЧПЧБООПК Ч МАВПН РПДЪБРТПУЕ ЙЪ ЛПНБОДЩ НПДЙЖЙЛБГЙЙ (UPDATE), ХУФТБОСЕФ ГЕМЩЕ ЛБФЕЗПТЙЙ ЧПЪНПЦОЩИ ДЕКУФЧЙК. оБРТЙНЕТ, ЧЩ ОЕ НПЦЕФЕ РТПУФП ЧЩРПМОЙФШ ФБЛХА ПРЕТБГЙА ЛБЛ ХДБМЕОЙЕ ЧУЕИ ЪБЛБЪЮЙЛПЧ У ПГЕОЛБНЙ ОЙЦЕ УТЕДОЕК. чЕТПСФОП МХЮЫЕ ЧУЕЗП ЧЩ НПЗМЙ ВЩ УОБЮБМБ (ыБЗ 1.), ЧЩРПМОЙФШ ЪБРТПУ, РПМХЮБАЭЙК УТЕДОАА ЧЕМЙЮЙОХ, Б ЪБФЕН (ыБЗ 2.), ХДБМЙФШ ЧУЕ УФТПЛЙ У ПГЕОЛПК ОЙЦЕ ЬФПК ЧЕМЙЮЙОЩ: ыБЗ 1. SELECT AVG (rating) FROM Customers; чЩЧПД = 200. ыБЗ 2. DELETE FROM Customers WHERE rating < 200; теъане фЕРЕТШ ЧЩ ПЧМБДЕМЙ ФТЕН ЛПНБОДБНЙ ЛПФПТЩЕ ХРТБЧМСАФ ЧУЕН УПДЕТЦБОЙЕН ЧБЫЕК ВБЪЩ ДБООЩИ. пУФБМПУШ ФПМШЛП ОЕУЛПМШЛП ПВЭЙИ ЧПРТПУПЧ ПФОПУЙФЕМШОП ЧЧПДБ Й УФЙТБОЙС ЪОБЮЕОЙК ФБВМЙГЩ, ЛПЗДБ ОБРТЙНЕТ ЬФЙ ЛПНБОДЩ НПЗХФ ЧЩРПМОЙФШУС ДБООЩН РПМШЪПЧБФЕМЕН Ч ДБООПК ФБВМЙГЕ Й ЛПЗДБ ДЕКУФЧЙС УДЕМБООЩЕ ЙНЙ, УФБОПЧСФУС РПУФПСООЩНЙ. рПДЧЕДЕН ЙФПЗ: чЩ ЙУРПМШЪХЕФЕ ЛПНБОДХ INSERT ЮФПВЩ ДПВБЧМСФШ УФТПЛЙ Ч ФБВМЙГХ. чЩ НПЦЕФЕ ЙМЙ ДБФШ ЙНЕОБ ЪОБЮЕОЙСН ЬФЙИ УФТПЛ Ч РТЕДМПЦЕОЙЙ VALUES ( ЛПЗДБ ФПМШЛП ПДОБ УФТПЛБ НПЦЕФ ВЩФШ ДПВБЧМЕОБ ), ЙМЙ ЧЩЧЕУФЙ ЪОБЮЕОЙС У РП- НПЭША ЪБРТПУБ ( ЛПЗДБ МАВПЕ ЮЙУМП УФТПЛ НПЦОП ДПВБЧЙФШ ПДОПК ЛПНБОДПК ). еУМЙ ЙУРПМШЪХЕФУС ЪБРТПУ, ПО ОЕ НПЦЕФ УУЩМБФШУС Л ФБВМЙГЕ Ч ЛПФПТХА ЧЩ ДЕМБЕФЕ ЧУФБЧЛХ, ЛБЛЙН ВЩ УРПУПВПН чЩ ЕЕ ОЙ ДЕМБМЙ, ОЙ Ч РТЕДМПЦЕОЙЙ FROM, ОЙ У РПНПЭША ЧОЕЫОЕК УУЩМЛЙ ( ЛБЛ ЬФП ДЕМБЕФУС Ч УППФОЕУЕООЩИ РПДЪБРТПУБИ ). чУЕ ЬФП ПФОПУЙФУС Л МАВЩН РПДЪБРТПУБН ЧОХФТЙ ЬФПЗП ЪБРТПУБ. ъБРТПУ, ПДОБЛП, ПУФБЧМСЕФ ЧБН УЧПВПДХ ЙУРПМШЪПЧБОЙС УППФОЕУЕООЩИ РПДЪБРТПУПЧ ЙМЙ РПДЪБРТПУПЧ ЛПФПТЩЕ ДБАФ Ч РТЕДМПЦЕОЙЙ FROM ЙН ФБВМЙГЕ, ЛПФПТПЕ ХЦЕ ВЩМП ХЛБЪБОП Ч РТЕДМПЦЕОЙЙ FROM ЧОЕЫОЕЗП ЪБРТПУБ ( ЬФП - ПВЭЙК УМХЮБК ДМС ЪБРТПУПЧ ). DELETE Й UPDATE ЙУРПМШЪХАФУС ЮФПВЩ, УППФЧЕФУФЧЕООП ХДБМЙФШ УФТПЛЙ ЙЪ ФБВМЙГЩ Й ЙЪНЕОЙФШ Ч ОЙИ ЪОБЮЕОЙС. пВБ ПОЙ РТЙНЕОЙНЩ ЛП ЧУЕН УФТПЛБН ФБВМЙГЩ, ЕУМЙ ОЕ ЙУРПМШЪХЕФУС РТЕДЙЛБФ ПРТЕДЕМСАЭЙК ЛБЛЙЕ УФТПЛЙ ДПМЦОЩ ВЩФШ ХДБМЕОЩ ЙМЙ НПДЙЖЙГЙТПЧБОЩ. ьФПФ РТЕДЙЛБФ НПЦЕФ УПДЕТЦБФШ РПДЪБРТПУЩ, ЛПФПТЩЕ НПЗХФ ВЩФШ УЧСЪБОЩ У ФБВМЙГЕК, ХДБМСЕНПК, ЙМЙ НПДЙЖЙГЙТПЧБООПК, У РПНПЭША ЧОЕЫОЕК УУЩМЛЙ. ьФЙ РПДЪБРТПУЩ, ПДОБЛП, ОЕ НПЗХФ УУЩМБФШ Л ФБВМЙГЕ НПДЙЖЙГЙТХЕНПК МАВЩН РТЕДМПЦЕОЙЕН FROM. нПЦЕФ РПЛБЪБФШУС, ЮФП НЩ РТПЫМЙ НБФЕТЙБМ SQL ЛПФПТЩК ПВМБДБЕФ ОЕ УБНЩН РПОСФОЩН МПЗЙЮЕУЛЙН РПТСДЛПН. уОБЮБМБ НЩ УДЕМБМЙ ЪБРТПУ ФБВМЙГЩ ЛПФПТБС ХЦЕ ЪБРПМОЕОБ ДБООЩНЙ. рПФПН НЩ РПЛБЪБМЙ ЛБЛ НПЦОП ЖБЛФЙЮЕУЛЙ РПНЕЭБФШ ЬФЙ ЪОБЮЕОЙС ЙЪОБЮБМШОП. оП, ЛБЛ ЧЩ ЧЙДЙФЕ, РПМОПЕ ПЪОБЛПНМЕОЙЕ У ЪБРТПУБНЙ ЪДЕУШ ОЕПГЕОЙНП. фЕРЕТШ, ЛПЗДБ НЩ РПЛБЪБМЙ ЧБН ЛБЛ ЪБРПМОСФШ ЪОБЮЕОЙСНЙ ФБВМЙГЩ ЛПФПТЩЕ ХЦЕ ВЩМЙ УПЪДБОЩ (РП ПРТЕДЕМЕОЙА) , НЩ РПЛБЦЕН( УП УМЕДХАЭЕК ЗМБЧЩ) ПФЛХДБ РПСЧЙМЙУШ ЬФЙ ФБВМЙГЩ. тбвпфб у SQL 1. рТЕДРПМПЦЙФЕ, ЮФП ЙНЕЕФУС ФБВМЙГБ ОБЪЩЧБЕНБС Multicust, У ФБЛЙНЙ ЦЕ ЙНЕОБНЙ УФПМВГПЧ ЮФП Й ФБВМЙГБ рТПДБЧГПЧ. оБРЙЫЙФЕ ЛПНБОДХ, ЛПФПТБС ВЩ ЧУФБЧЙМБ ЧУЕИ РТПДБЧГПЧ (ЙЪ ФБВМЙГЩ рТПДБЧГПЧ)ЙНЕАЭЙИ ВПМЕЕ ЮЕН ПДОПЗП ЪБЛБЪЮЙЛБ Ч ЬФХ ФБВМЙГХ. 2. оБРЙЫЙФЕ ЛПНБОДХ ЛПФПТБС ВЩ ХДБМСМБ ЧУЕИ ЪБЛБЪЮЙЛПЧ ОЕ ЙНЕАЭЙИ ФЕЛХЭЙИ РПТСДЛПЧ. 3. оБРЙЫЙФЕ ЛПНБОДХ ЛПФПТБС ВЩ ХЧЕМЙЮЙМБ ОБ ДЧБДГБФШ РТПГЕОФПЧ ЛПНЙУУЙПООЩЕ ЧУЕИ РТПДБЧГПЧ ЙНЕАЭЙИ ПВЭЙЕ ФЕЛХЭЙЕ РПТСДЛЙ ЧЩЫЕ ЮЕН $3,000. ( уН. рТЙМПЦЕОЙЕ A ДМС ПФЧЕФПЧ. )

Соседние файлы в папке Understanding SQL (rus - html)