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



ртедуфбчмеойе (VIEW) - пвяелф дбоощи лпфптщк
ОЕ УПДЕТЦЙФ ОЙЛБЛЙИ ДБООЩИ ЕЗП ЧМБДЕМШГБ.
ьФП - ФЙР ФБВМЙГЩ, ЮШЕ УПДЕТЦБОЙЕ ЧЩВЙТБЕФУС ЙЪ ДТХЗЙИ ФБВМЙГ У РПНПЭША
ЧЩРПМОЕОЙС ЪБРТПУБ. рПУЛПМШЛХ ЪОБЮЕОЙС Ч ЬФЙИ ФБВМЙГБИ НЕОСАФУС, ФП БЧФП-
НБФЙЮЕУЛЙ, ЙИ ЪОБЮЕОЙС НПЗХФ ВЩФШ РПЛБЪБОЩ РТЕДУФБЧМЕОЙЕН.
ч ЬФПК ЗМБЧЕ, ЧЩ ХЪОБЕФЕ ЮФП ФБЛПЕ РТЕДУФБЧМЕОЙС, ЛБЛ ПОЙ УПЪДБАФУС, Й ОЕ-
НОПЗП ПВ ЙИ ЧПЪНПЦОПУФСИ Й ПЗТБОЙЮЕОЙСИ. йУРПМШЪПЧБОЙЕ РТЕДУФБЧМЕОЙК
ПУОПЧБООЩИ ОБ ХМХЮЫЕООЩИ УТЕДУФЧБИ ЪБРТПУПЧ, ФБЛЙИ ЛБЛ ПВЯЕДЙОЕОЙЕ Й РПД-
ЪБРТПУ, ТБЪТБВПФБООЩИ ПЮЕОШ ФЭБФЕМШОП, Ч ОЕЛПФПТЩИ УМХЮБСИ ДБУФ ВПМШЫЙК
ЧЩЙЗТЩЫ РП УТБЧОЕОЙА У ЪБРТПУБНЙ.


юфп фблпе ртедуфбчмеойе ?

фЙРЩ ФБВМЙГ, У ЛПФПТЩНЙ ЧЩ ЙНЕМЙ ДЕМП ДП УЙИ РПТ, ОБЪЩЧБМЙУШ - ВБЪПЧЩНЙ
ФБВМЙГБНЙ. ьФП - ФБВМЙГЩ, ЛПФПТЩЕ УПДЕТЦБФ ДБООЩЕ. пДОБЛП ЙНЕЕФУС ДТХЗПК
ЧЙД ФБВМЙГ: - РТЕДУФБЧМЕОЙС. рТЕДУФБЧМЕОЙС - ЬФП ФБВМЙГЩ ЮШЕ УПДЕТЦБОЙЕ
ЧЩВЙТБЕФУС ЙМЙ РПМХЮБЕФУС ЙЪ ДТХЗЙИ ФБВМЙГ. пОЙ ТБВПФБАФ Ч ЪБРТПУБИ Й
ПРЕТБФПТБИ DML ФПЮОП ФБЛЦЕ ЛБЛ Й ПУОПЧОЩЕ ФБВМЙГЩ, ОП ОЕ УПДЕТЦБФ ОЙЛБ-
ЛЙИ УПВУФЧЕООЩИ ДБООЩИ.
рТЕДУФБЧМЕОЙС - РПДПВОЩ ПЛОБН, ЮЕТЕЪ ЛПФПТЩЕ ЧЩ РТПУНБФТЙЧБЕФЕ ЙОЖПТНБ-
ГЙА( ЛБЛ ПОБ ЕУФШ, ЙМЙ Ч ДТХЗПК ЖПТНЕ, ЛБЛ ЧЩ РПФПН ХЧЙДЙФЕ ), ЛПФПТБС ЖБЛФЙЮЕУЛЙ ИТБОЙФУС Ч ВБЪПЧПК ФБВМЙГЕ. рТЕДУФБЧМЕОЙЕ - ЬФП ЖБЛФЙЮЕУЛЙ ЪБРТПУ,
ЛПФПТЩК ЧЩРПМОСЕФУС ЧУСЛЙК ТБЪ, ЛПЗДБ РТЕДУФБЧМЕОЙЕ УФБОПЧЙФУС ФЕНПК ЛП-
НБОДЩ. чЩЧПД ЪБРТПУБ РТЙ ЬФПН Ч ЛБЦДЩК НПНЕОФ УФБОПЧЙФУС УПДЕТЦБОЙЕН
РТЕДУФБЧМЕОЙС.


лпнбодб CREATE VIEW

чЩ УПЪДБЕФЕ РТЕДУФБЧМЕОЙЕ ЛПНБОДПК CREATE VIEW. пОБ УПУФПЙФ ЙЪ УМПЧ
CREATE VIEW (упъдбфш ртедуфбчмеойе), ЙНЕОЙ РТЕДУФБЧМЕОЙС
ЛПФПТПЕ ОХЦОП УПЪДБФШ, УМПЧБ AS (лбл), Й ДБМЕЕ ЪБРТПУБ, ЛБЛ Ч УМЕДХАЭЕН
РТЙНЕТЕ:


CREATE VIEW Londonstaff
AS SELECT *
FROM Salespeople
WHERE city = 'London';

фЕРЕТШ чЩ ЙНЕЕФЕ РТЕДУФБЧМЕОЙЕ, ОБЪЩЧБЕНПЕ Londonstaff. чЩ НПЦЕФЕ
ЙУРПМШЪПЧБФШ ЬФП РТЕДУФБЧМЕОЙЕ ФПЮОП ФБЛ ЦЕ ЛБЛ Й МАВХА ДТХЗХА ФБВМЙГХ.
пОБ НПЦЕФ ВЩФШ ЪБРТПЫЕОБ, НПДЙЖЙГЙТПЧБОБ, ЧУФБЧМЕОБ Ч, ХДБМЕОБ ЙЪ,
Й УПЕДЙОЕОБ У, ДТХЗЙНЙ ФБВМЙГБНЙ Й РТЕДУФБЧМЕОЙСНЙ. дБЧБКФЕ УДЕМБЕН
ЪБРТПУ ФБЛПЗП РТЕДУФБЧМЕОЙС ( ЧЩЧПД РПЛБЪБО Ч тЙУХОЛЕ 20.1):

SELECT *
FROM Londonstaff;



=============== SQL Execution Log ============
| |
| SELECT * |
| FROM Londonstaff; |
| |
| ==============================================|
| snum sname city comm |
| ------ ---------- ----------- ------- |
| 1001 Peel London 0.1200 |
| 1004 Motika London 0.1100 |
| |
===============================================

20.1 тЙУХОПЛ 20.1: рТЕДУФБЧМЕОЙЕ Londonstaff

лПЗДБ ЧЩ РТЙЛБЪЩЧБЕФЕ SQL ЧЩВТБФШ(SELECT) ЧУЕ УФТПЛЙ ( * ) ЙЪ РТЕДУФБЧМЕОЙС, ПО ЧЩРПМОСЕФ ЪБРТПУ УПДЕТЦБЭЙК Ч ПРТЕДЕМЕОЙЙ - Loncfonstaff, Й
ЧПЪЧТБЭБЕФ ЧУЕ ЙЪ ЕЗП ЧЩЧПДБ.
йНЕС РТЕДЙЛБФ Ч ЪБРТПУЕ РТЕДУФБЧМЕОЙС, НПЦОП ЧЩЧЕУФЙ ФПМШЛП ФЕ УФТПЛЙ ЙЪ
РТЕДУФБЧМЕОЙС, ЛПФПТЩЕ ВХДХФ ХДПЧМЕФЧПТСФШ ЬФПНХ РТЕДЙЛБФХ. чЩ НПЗМЙ ВЩ
ЧУРПНОЙФШ, ЮФП Ч зМБЧЕ 15, ЧЩ ЙНЕМЙ ФБВМЙГХ, ОБЪЩЧБЕНХА Londonstaff, Ч ЛП-
ФПТХА ЧЩ ЧУФБЧМСМЙ ЬФП ЦЕ УБНПЕ УПДЕТЦБОЙЕ ( ЛПОЕЮОП, НЩ РПОЙНБЕН ЮФП
ФБВМЙГБ - ОЕ УМЙЫЛПН ЧЕМЙЛБ. еУМЙ ЬФП ФБЛ, ЧЩ ВХДЕФЕ ДПМЦОЩ ЧЩВТБФШ ДТХЗПЕ
ЙН ДМС ЧБЫЕЗП РТЕДУФБЧМЕОЙС). рТЕЙНХЭЕУФЧП ЙУРПМШЪПЧБОЙС РТЕДУФБЧМЕОЙС,
РП УТБЧОЕОЙА У ПУОПЧОПК ФБВМЙГЩ, Ч ФПН, ЮФП РТЕДУФБЧМЕОЙЕ ВХДЕФ НПДЙЖЙГЙТПЧБОП БЧФПНБФЙЮЕУЛЙ ЧУСЛЙК ТБЪ, ЛПЗДБ ФБВМЙГБ МЕЦБЭБС Ч ЕЗП ПУОПЧЕ ЙЪНЕОСЕФУС.
уПДЕТЦБОЙЕ РТЕДУФБЧМЕОЙС ОЕ ЖЙЛУЙТПЧБОП, Й РЕТЕОБЪОБЮБЕФУС ЛБЦДЩК ТБЪ
ЛПЗДБ ЧЩ УУЩМБЕФЕУШ ОБ РТЕДУФБЧМЕОЙЕ Ч ЛПНБОДЕ.
еУМЙ ЧЩ ДПВБЧЙФЕ ЪБЧФТБ ДТХЗПЗП, ЦЙЧХЭЕЗП Ч мПОДПОЕ РТПДБЧГБ, ПО БЧФПНБФЙЮЕУЛЙ РПСЧЙФУС Ч РТЕДУФБЧМЕОЙЙ.

рТЕДУФБЧМЕОЙС ЪОБЮЙФЕМШОП ТБУЫЙТСАФ ХРТБЧМЕОЙЕ ЧБЫЙНЙ ДБООЩНЙ. ьФП -
РТЕЧПУИПДОЩК УРПУПВ ДБФШ РХВМЙЮОЩК ДПУФХР Л ОЕЛПФПТПК, ОП ОЕ ЧУЕК ЙОЖПТ-
НБГЙЙ Ч ФБВМЙГЕ. еУМЙ ЧЩ ИПФЙФЕ ЮФПВЩ ЧБЫ РТПДБЧЕГ ВЩМ РПЛБЪБО Ч ФБВМЙГЕ
рТПДБЧГПЧ, ОП РТЙ ЬФПН ОЕ ВЩМЙ РПЛБЪБОЩ ЛПНЙУУЙЙ ДТХЗЙИ РТПДБЧГПЧ, ЧЩ
НПЗМЙ ВЩ УПЪДБФШ РТЕДУФБЧМЕОЙЕ У ЙУРПМШЪПЧБОЙЕН УМЕДХАЭЕЗП ПРЕТБФПТБ
( ЧЩЧПД РПЛБЪБО Ч тЙУХОЛЕ 20.2 )

CREATE VIEW Salesown
AS SELECT snum, sname, city
FROM Salespeople:

=============== SQL Execution Log ============
| |
| SELECT * |
| FROM Salesown; |
| |
| ==============================================|
| snum sname city |
| ------ ---------- ----------- |
| 1001 Peel London |
| 1002 Serres San Jose |
| 1004 Motika London |
| 1007 Rifkin Barcelona |
| 1003 Axelrod New York |
===============================================

тЙУХОПЛ 20.2: рТЕДУФБЧМЕОЙЕ Salesown

дТХЗЙНЙ УМПЧБНЙ, ЬФП РТЕДУФБЧМЕОЙЕ - ФБЛПЕ ЦЕ ЛБЛ ДМС ФБВМЙГЩ рТПДБЧГПЧ,
ЪБ ЙУЛМАЮЕОЙЕН ФПЗП, ЮФП РПМЕ comm, ОЕ ХРПНЙОБМПУШ Ч ЪБРТПУЕ, Й УМЕДПЧБФЕМШОП ОЕ ВЩМП ЧЛМАЮЕОП Ч РТЕДУФБЧМЕОЙЕ.


нпдйжйгйтпчбойе ртедуфбчмеойк

рТЕДУФБЧМЕОЙЕ НПЦЕФ ФЕРЕТШ ЙЪНЕОСФШУС ЛПНБОДБНЙ НПДЙЖЙЛБГЙЙ DML, ОП
НПДЙЖЙЛБГЙС ОЕ ВХДЕФ ЧПЪДЕКУФЧПЧБФШ ОБ УБНП РТЕДУФБЧМЕОЙЕ. лПНБОДЩ
ВХДХФ ОБ УБНПН ДЕМЕ РЕТЕОБРТБЧМЕОЩ Л ВБЪПЧПК ФБВМЙГЕ:

UPDATE Salesown
SET city = 'Palo Alto'
WHERE snum = 1004;

еЗП ДЕКУФЧЙЕ ЙДЕОФЙЮОП ЧЩРПМОЕОЙА ФПК ЦЕ ЛПНБОДЩ Ч ФБВМЙГЕ рТПДБЧГПЧ.
пДОБЛП, ЕУМЙ ЪОБЮЕОЙЕ ЛПНЙУУЙПООЩИ РТПДБЧГБ ВХДЕФ ПВТБВПФБОП ЛПНБОДПК
UPDATE

UPDATE Salesown
SET comm = .20
WHERE snum = 1004;

ПОБ ВХДЕФ ПФЧЕТЗОХФБ, ФБЛ ЛБЛ РПМЕ comm ПФУХФУФЧХЕФ Ч РТЕДУФБЧМЕОЙЙ
Salesown. ьФП ЧБЦОПЕ ЪБНЕЮБОЙЕ, РПЛБЪЩЧБАЭЕЕ ЮФП ОЕ ЧУЕ РТЕДУФБЧМЕОЙС
НПЗХФ ВЩФШ НПДЙЖЙГЙТПЧБОЩ.
нЩ ВХДЕН ЙУУМЕДПЧБФШ РТПВМЕНЩ НПДЙЖЙЛБГЙЙ РТЕДУФБЧМЕОЙК Ч зМБЧЕ 21.


йнеопчбойе уфпмвгпч

ч ОБЫЕН РТЙНЕТЕ, РПМ ОБЫЙИ РТЕДУФБЧМЕОЙК ЙНЕАФ УЧПЙ ЙНЕОБ, РПМХЮЕООЩЕ
РТСНП ЙЪ ЙНЕО РПМЕК ПУОПЧОПК ФБВМЙГЩ. ьФП ХДПВОП. пДОБЛП, ЙОПЗДБ ЧБН
ОХЦОП УОБВЦБФШ ЧБЫЙ УФПМВГЩ ОПЧЩНЙ ЙНЕОБНЙ:

* ЛПЗДБ ОЕЛПФПТЩЕ УФПМВГЩ СЧМСАФУС ЧЩЧПДЙНЩНЙ, Й РПЬФПНХ
ОЕ ЙНЕАЭЙНЙ ЙНЕО.

* ЛПЗДБ ДЧБ ЙМЙ ВПМЕЕ УФПМВГПЧ Ч ПВЯЕДЙОЕОЙЙ, ЙНЕАФ ФЕ ЦЕ ЙНЕОБ
ЮФП Ч ЙИ ВБЪПЧПК ФБВМЙГЕ.

йНЕОБ, ЛПФПТЩЕ НПЗХФ УФБФШ ЙНЕОБНЙ РПМЕК, ДБАФУС Ч ЛТХЗМЩИ УЛПВЛБИ ( ),
РПУМЕ ЙНЕОЙ ФБВМЙГ. пОЙ ОЕ ВХДХФ ЪБРТПЫЕОЩ, ЕУМЙ УПЧРБДБАФ У ЙНЕОБНЙ
РПМЕК ЪБРТБЫЙЧБЕНПК ФБВМЙГЩ. фЙР ДБООЩИ Й ТБЪНЕТ ЬФЙИ РПМЕК ВХДХФ ПФМЙЮБФШУС ПФ ЪБРТБЫЙЧБЕНЩИ РПМЕК ЛПФПТЩЕ "РЕТЕДБАФУС" Ч ОЙИ. пВЩЮОП ЧЩ
ОЕ ХЛБЪЩЧБЕФЕ ОПЧЩИ ЙНЕО РПМЕК, ОП ЕУМЙ ЧЩ ЧУЕ ФБЛЙ УДЕМБМЙ ЬФП, ЧЩ ДПМ-
ЦОЩ ДЕМБФШ ЬФП ДМС ЛБЦДПЗП РПМ Ч РТЕДУФБЧМЕОЙЙ.


лпнвйойтпчбойе ртедйлбфпч ртедуфбчмеойк й пуопчощи ъбртпупч ч ртедуфбчмеойси

лПЗДБ ЧЩ ДЕМБЕФЕ ЪБРТПУ РТЕДУФБЧМЕОЙС, ЧЩ УПВУФЧЕООП, ЪБРТБЫЙЧБЕФЕ
ЪБРТПУ. пУОПЧОПК УРПУПВ ДМС SQL ПВПКФЙ ЬФП, - ПВЯЕДЙОЙФШ РТЕДЙЛБФЩ ДЧХИ
ЪБРТПУПЧ Ч ПДЙО. дБЧБКФЕ РПУНПФТЙН ЕЭЕ ТБЪ ОБ ОБЫЕ РТЕДУФБЧМЕОЙЕ У ЙНЕ-
ОЕН Londonstaff :

CREATE VIEW Londonstaff
AS SELECT *
FROM Salespeople
WHERE city = 'London';

еУМЙ НЩ ЧЩРПМОСЕН УМЕДХАЭЙК ЪБРТПУ Ч ЬФПН РТЕДУФБЧМЕОЙЙ

SELECT *
FROM Londonstaff
WHERE comm > .12;

ПО ФБЛПК ЦЕ ЛБЛ ЕУМЙ ВЩ НЩ ЧЩРПМОЙМЙ УМЕДХАЭЕЕ Ч ФБВМЙГЕ рТПДБЧГПЧ:

SELECT *
FROM Salespeople
WHERE city = 'London'
AND comm > .12;

ьФП РТЕЛТБУОП, ЪБ ЙУЛМАЮЕОЙЕН ФПЗП, ЮФП РПСЧМСЕФУС ЧПЪНПЦОБ РТПВМЕНБ
У РТЕДУФБЧМЕОЙЕН. йНЕЕФУС ЧПЪНПЦОПУФШ ЛПНВЙОБГЙЙ ЙЪ ДЧХИ РПМОПУФША
ДПРХУФЙНЩИ РТЕДЙЛБФПЧ Й РПМХЮЕОЙС РТЕДЙЛБФБ ЛПФПТЩК ОЕ ВХДЕФ ТБВПФБФШ.
оБРТЙНЕТ, РТЕДРПМПЦЙН ЮФП НЩ УПЪДБЕН (CREATE) УМЕДХАЭЕЕ РТЕДУФБЧ-
МЕОЙЕ:

CREATE VIEW Ratingcount (rating, number)
AS SELECT rating, COUNT (*)
FROM Customers
GROUP BY rating;

ьФП ДБЕФ ОБН ЮЙУМП ЪБЛБЪЮЙЛПЧ ЛПФПТЩЕ НЩ ЙНЕЕН ДМС ЛБЦДПЗП ХТПЧОС
ПГЕОЛЙ(rating). чЩ НПЦЕФЕ ЪБФЕН УДЕМБФШ ЪБРТПУ ЬФПЗП РТЕДУФБЧМЕОЙС ЮФПВЩ
ЧЩСУОЙФШ, ЙНЕЕФУС МЙ ЛБЛБС-ОЙВХДШ ПГЕОЛБ, Ч ОБУФПСЭЕЕ ЧТЕНС ОБЪОБЮЕООБС
ДМС ФТЕИ ЪБЛБЪЮЙЛПЧ:


SELECT *
FROM Ratingcount
WHERE number = 3;

рПУНПФТЙН ЮФП УМХЮЙФУС ЕУМЙ НЩ УЛПНВЙОЙТХЕН ДЧБ РТЕДЙЛБФБ:

SELECT rating, COUNT (*)
FROM Customers
WHERE COUNT (*) = 3
GROUP BY rating;

ьФП ОЕДПРХУФЙНЩК ЪБРТПУ. бЗТЕЗБФОЩЕ ЖХОЛГЙЙ, ФБЛЙЕ ЛБЛ COUNT (уюеф),
ОЕ НПЗХФ ЙУРПМШЪПЧБФШУС Ч РТЕДЙЛБФЕ.
рТБЧЙМШОЩН УРПУПВПН РТЙ ЖПТНЙТПЧБОЙЙ ЧЩЫЕХРПНСОХФПЗП ЪБРТПУБ, ЛПОЕЮ-
ОП ЦЕ ВХДЕФ УМЕДХАЭЙК:

SELECT rating, COUNT (*)
FROM Customers
GROUP BY rating;
HAVING COUNT (*) = 3;

оП SQL НПЦЕФ ОЕ ЧЩРПМОЙФШ РТЕЧТБЭЕОЙС. нПЦЕФ МЙ ТБЧОПГЕООЩК
ЪБРТПУ ЧНЕУФП ЪБРТПУБ Ratingcount РПФЕТРЕФШ ОЕХДБЮХ? дБ НПЦЕФ!
ьФП - ОЕПДОПЪОБЮОБ ПВМБУФШ SQL, ЗДЕ НЕФПДЙЛБ ЙУРПМШЪПЧБОЙС РТЕДУФБЧ-
МЕОЙК НПЦЕФ ДБФШ ИПТПЫЙЕ ТЕЪХМШФБФЩ.
уБНПЕ МХЮЫЕЕ ЮФП НПЦОП УДЕМБФШ Ч УМХЮБЕ, ЛПЗДБ ПВ ЬФПН ОЙЮЕЗП ОЕ УЛБ-
ЪБОП Ч ЧБЫЕК УЙУФЕНОПК ДПЛХНЕОФБГЙЙ, ФБЛ ЬФП РПРЩФЛБ Ч ОЕК ТБЪПВТБФШ-
У. еУМЙ ЛПНБОДБ ДПРХУФЙНБ, ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ РТЕДУФБЧМЕОЙС
ЮФПВЩ ХУФБОПЧЙФШ ОЕЛПФПТЩЕ ПЗТБОЙЮЕОЙС SQL Ч УЙОФБЛУЙУЕ ЪБРТПУБ.


зтхррпчще ртедуфбчмеойс

зТХРРПЧЩЕ РТЕДУФБЧМЕОЙС - ЬФП РТЕДУФБЧМЕОЙС, ОБРПДПВЙЕ ЪБРТПУБ
Ratingcount Ч РТЕДЩДХЭЕН РТЙНЕТЕ, ЛПФПТЩК УПДЕТЦЙФ РТЕДМПЦЕОЙЕ
GROUP BY, ЙМЙ ЛПФПТЩК ПУОПЧЩЧБЕФУС ОБ ДТХЗЙИ ЗТХРРПЧЩИ РТЕДУФБЧМЕОЙСИ.
зТХРРПЧЩЕ РТЕДУФБЧМЕОЙС НПЗХФ УФБФШ РТЕЧПУИПДОЩН УРПУПВПН ПВТБВБФЩЧБФШ РПМХЮЕООХА ЙОЖПТНБГЙА ОЕРТЕТЩЧОП. рТЕДРПМПЦЙН, ЮФП ЛБЦДЩК
ДЕОШ ЧЩ ДПМЦОЩ УМЕДЙФШ ЪБ РПТСДЛПН ОПНЕТПЧ ЪБЛБЪЮЙЛПЧ, ОПНЕТБНЙ РТП-
ДБЧГПЧ РТЙОЙНБАЭЙИ РПТСДЛЙ, ОПНЕТБНЙ РПТСДЛПЧ, УТЕДОЙН ПФ РПТСДЛПЧ,
Й ПВЭЕК УХННПК РТЙПВТЕФЕОЙК Ч РПТСДЛБИ.

юЕН ЛПОУФТХЙТПЧБФШ ЛБЦДЩК ТБЪ УМПЦОЩК ЪБРТПУ, ЧЩ НПЦЕФЕ РТПУФП
УПЪДБФШ УМЕДХАЭЕЕ РТЕДУФБЧМЕОЙЕ:

CREATE VIEW Totalforday
AS SELECT odate, COUNT (DISTINCT cnum), COUNT
(DISTINCT snum), COUNT (onum), AVG
(amt), SUM (amt)
FROM Orders
GROUP BY odate;

фЕРЕТШ ЧЩ УНПЦЕФЕ ХЧЙДЕФШ ЧУА ЬФХ ЙОЖПТНБГЙА У РПНПЭША РТПУФПЗП
ЪБРТПУБ:

SELECT *
FROM Totalforday;

лБЛ НЩ ЧЙДЕМЙ, SQL ЪБРТПУЩ НПЗХФ ДБФШ ЧБН РПМОЩК ЛПНРМЕЛУ ЧПЪНПЦОПУ-
ФЕК, ФБЛ ЮФП РТЕДУФБЧМЕОЙС ПВЕУРЕЮЙЧБАФ ЧБУ ЮТЕЪЧЩЮБКОП ЗЙВЛЙН Й НПЭ-
ОЩН ЙОУФТХНЕОФПН ЮФПВЩ ПРТЕДЕМЙФШ ФПЮОП, ЛБЛ ЧБЫЙ ДБООЩЕ НПЗХФ ВЩФШ
ЙУРПМШЪПЧБОЩ.
пОЙ НПЗХФ ФБЛЦЕ ДЕМБФШ ЧБЫХ ТБВПФХ ВПМЕЕ РТПУФПК, РЕТЕЖПТНБФЙТХС
ДБООЩЕ ХДПВОЩН ДМС ЧБУ УРПУПВПН Й ЙУЛМАЮЙЧ ДЧПКОХА ТБВПФХ.


ртедуфбчмеойс й пвяедйоеойс

рТЕДУФБЧМЕОЙС ОЕ ФТЕВХАФ ЮФПВЩ ЙИ ЧЩЧПД ПУХЭЕУФЧМСМУС ЙЪ ПДОПК ВБЪПЧПК ФБВМЙГЩ. фБЛ ЛБЛ РПЮФЙ МАВПК ДПРХУФЙНЩК ЪБРТПУ SQL НПЦЕФ ВЩФШ
ЙУРПМШЪПЧБО Ч РТЕДУФБЧМЕОЙЙ, ПО НПЦЕФ ЧЩЧПДЙФШ ЙОЖПТНБГЙА ЙЪ МАВПЗП
ЮЙУМБ ВБЪПЧЩИ ФБВМЙГ, ЙМЙ ЙЪ ДТХЗЙИ РТЕДУФБЧМЕОЙК.
нЩ НПЦЕН, ОБРТЙНЕТ, УПЪДБФШ РТЕДУФБЧМЕОЙЕ ЛПФПТПЕ РПЛБЪЩЧБМП ВЩ, РПТСДЛЙ РТПДБЧГБ Й ЪБЛБЪЮЙЛБ РП ЙНЕОЙ:

CREATE VIEW Nameorders
AS SELECT onum, amt, a.snum, sname, cname
FROM Orders a, Customers b, Salespeople c
WHERE a.cnum = b.cnum
AND a.snum = c.snum;

фЕРЕТШ ЧЩ НПЦЕФЕ ЧЩВТБФШ (SELECT) ЧУЕ РПТСДЛЙ ЪБЛБЪЮЙЛБ ЙМЙ РТП-
ДБЧГБ ( * ), ЙМЙ НПЦЕФЕ ХЧЙДЕФШ ЬФХ ЙОЖПТНБГЙА ДМС МАВПЗП РПТСДЛБ.

оБРТЙНЕТ, ЮФПВЩ ХЧЙДЕФШ ЧУЕ РПТСДЛЙ РТПДБЧГБ Rifkin, ЧЩ ДПМЦОЩ
ЧЧЕУФЙ УМЕДХАЭЙК ЪБРТПУ ( ЧЩЧПД РПЛБЪБО Ч 20.3 тЙУХОЛЕ ):

SELECT *
FROM Nameorders
WHERE sname = 'Rifkin';


=============== SQL Execution Log ==============
| |
| SELECT * |
| FROM Nameorders |
| WHERE sname = 'Rifkin'; |
| =============================================== |
| onum amt snum sname cname |
| ------ -------- ----- ------- ------- |
| 3001 18.69 1007 Rifkin Cisneros |
| 3006 1098.16 1007 Rifkin Cisneros |
| |
================================================

тЙУХОПЛ 20.3: рПТСДЛЙ Rifkin РПЛБЪБООЩЕ Ч Nameorders

чЩ НПЦЕФЕ ФБЛЦЕ ПВЯЕДЙОСФШ РТЕДУФБЧМЕОЙС У ДТХЗЙНЙ ФБВМЙГБНЙ, ЙМЙ
ВБЪПЧЩНЙ ФБВМЙГБНЙ ЙМЙ РТЕДУФБЧМЕОЙСНЙ, РПЬФПНХ ЧЩ НПЦЕФЕ ХЧЙДЕФШ
ЧУЕ РПТСДЛЙ AxelrodБ Й ЪОБЮЕОЙС ЕЗП ЛПНЙУУЙПООЩИ Ч ЛБЦДПН РПТСДЛЕ:

SELECT a.sname, cname, amt comm
FROM Nameorders a, Salespeople b
WHERE a.sname = 'Axelrod'
AND b.snum = a.snum;

чЩЧПД ДМС ЬФПЗП ЪБРТПУБ РПЛБЪЩЧБЕФУС Ч тЙУХОЛЕ 20.4.

ч РТЕДЙЛБФЕ, НЩ НПЗМЙ ВЩ ОБРЙУБФШ - " WHERE a.sname = 'Axelrod' AND
b.sname = 'Axelrod' " , ОП РТЕДЙЛБФ ЛПФПТЩК НЩ ЙУРПМШЪПЧБМЙ ЪДЕУШ ВПМЕЕ
ПВЭЕХРПФТЕВЙФЕМШОЩК. лТПНЕ ФПЗП РПМЕ snum - ЬФП РЕТЧЙЮОЩК ЛМАЮ ФБВМЙГЩ
рТПДБЧГПЧ, Й УМЕДПЧБФЕМШОП ДПМЦЕО РП ПРТЕДЕМЕОЙА ВЩФШ ХОЙЛБМШОЩН.



=============== SQL Execution Log ==============
| |
| SELECT a.sname, cname, amt * comm |
| FROM Nameorders a, Salespeople b |
| WHERE a.sname = 'Axelrod' |
| AND b.snum = a.snum; |
| =============================================== |
| onum amt snum sname cname |
| ------ -------- ----- ------- ------- |
| 3001 18.69 1007 Rifkin Cisneros |
| 3006 1098.16 1007 Rifkin Cisneros |
| |
================================================

тЙУХОПЛ 20. 4: пВЯЕДЙОЕОЙЕ ПУОПЧОПК ФБВМЙГЩ У РТЕДУФБЧМЕОЙЕН


еУМЙ ВЩ ФБН ОБРТЙНЕТ ВЩМП ДЧБ Axelrodf, ЧБТЙБОФ У ЙНЕОЕН, ВХДЕФ ПВЯЕДЙОСФШ
ЧНЕУФЕ ЙИ ДБООЩЕ.
вПМЕЕ РТЕДРПЮФЙФЕМШОЩК ЧБТЙБОФ - ЙУРПМШЪПЧБФШ РПМЕ snum ЮФПВЩ ИТБОЙФШ ЕЗП
ПФДЕМШОП.


ртедуфбчмеойс й рпдъбртпущ

рТЕДУФБЧМЕОЙС НПЗХФ ФБЛЦЕ ЙУРПМШЪПЧБФШ Й РПДЪБРТПУЩ, ЧЛМАЮБС УППФОЕУЕООЩЕ
РПДЪБРТПУЩ. рТЕДРПМПЦЙН ЧБЫБ ЛПНРБОЙС РТЕДХУНБФТЙЧБЕФ РТЕНЙА ДМС ФЕИ
РТПДБЧГПЧ ЛПФПТЩЕ ЙНЕАФ ЪБЛБЪЮЙЛБ У УБНЩН ЧЩУПЛЙН РПТСДЛПН ДМС МАВПК ХЛБЪБООПК ДБФЩ. чЩ НПЦЕФЕ РТПУМЕДЙФШ ЬФХ ЙОЖПТНБГЙА У РПНПЭША РТЕДУФБЧМЕОЙС:


CREATE VIEW Elitesalesforce
AS SELECT b.odate, a.snum, a.sname,
FROM Salespeople a, Orders b
WHERE a.snum = b.snum
AND b.amt =
(SELECT MAX (amt)
FROM Orders c
WHERE c.odate = b.odate);

еУМЙ, У ДТХЗПК УФПТПОЩ, РТЕНЙС ВХДЕФ ОБЪОБЮБФШУС ФПМШЛП РТПДБЧГХ ЛПФПТЩК
ЙНЕМ УБНЩК ЧЩУПЛЙК РПТСДПЛ ЪБ РПУМЕДОЙЕ ДЕУСФШ МЕФ, ЧБН ОЕПВИПДЙНП
ВХДЕФ РТПУМЕДЙФШ ЙИ Ч ДТХЗПН РТЕДУФБЧМЕОЙЙ ПУОПЧБООПН ОБ РЕТЧПН:

CREATE VIEW Bonus
AS SELECT DISTINCT snum, sname
FROM Elitesalesforce a
WHERE 10 < =
(SELECT COUNT (*)
FROM Elitesalestorce b
WHERE a.snum = b.snum);

йЪЧМЕЮЕОЙЕ ЙЪ ЬФПК ФБВМЙГЩ РТПДБЧГБ, ЛПФПТЩК ВХДЕФ РПМХЮБФШ РТЕНЙА -
ЧЩРПМОСЕФУС РТПУФЩН ЧПРТПУПН:

SELECT *
FROM Bonus;

фЕРЕТШ НЩ ЧЙДЙН ЙУФЙООХА НПЭОПУФШ SQL. йЪЧМЕЮЕОЙЕ ФПК ЦЕ РПМХЮЕООПК
ЙОЖПТНБГЙЙ РТПЗТБННБНЙ RPG ЙМЙ COBOL ВХДЕФ ВПМЕЕ ДМЙФЕМШОПК РТПГЕДХТПК. ч SQL, ЬФП - ФПМШЛП ЧПРТПУ ЙЪ ДЧХИ ЛПНРМЕЛУОЩИ ЛПНБОД, УПИТБОЕООЩИ, ЛБЛ РТЕДУФБЧМЕОЙЕ УПЧНЕУФОП У РТПУФЩН ЪБРТПУПН.
рТЙ УБНПУФПСФЕМШОПН ЪБРТПУЕ - НЩ ДПМЦОЩ ЪБВПФЙФУС ПВ ЬФПН ЛБЦДЩК ДЕОШ,
РПФПНХ ЮФП ЙОЖПТНБГЙС ЛПФПТХА ЙЪЧМЕЛБЕФ ЪБРТПУ, ОЕРТЕТЩЧОП НЕОСЕФУС
ЮФПВЩ ПФТБЦБФШ ФЕЛХЭЕЕ УПУФПСОЙЕ ВБЪЩ ДБООЩИ.


юфп ое нпзхф дембфш ртедуфбчмеойс

йНЕАФУС ВПМШЫПЕ ЛПМЙЮЕУФЧП ФЙРПЧ РТЕДУФБЧМЕОЙК ( ЧЛМАЮБС НОПЗЙЕ ЙЪ ОБЫЙИ
РТЙНЕТПЧ Ч ЬФПК ЗМБЧЕ ) ЛПФПТЩЕ СЧМСАФУС ДПУФХРОЩНЙ ФПМШЛП ДМС ЮФЕОЙС. ьФП
ПЪОБЮБЕФ, ЮФП ЙИ НПЦОП ЪБРТБЫЙЧБФШ, ОП ПОЙ ОЕ НПЗХФ РПДЧЕТЗБФШУС ДЕКУФЧЙСН
ЛПНБОД НПДЙЖЙЛБГЙЙ. ( нЩ ВХДЕН ТБУУНБФТЙЧБФШ ЬФХ ФЕНХ Ч зМБЧЕ 21. ) йНЕАФУС
ФБЛЦЕ ОЕЛПФПТЩЕ ЧЙДЩ ЪБРТПУПЧ, ЛПФПТЩЕ ОЕ ДПРХУФЙНЩ Ч ПРТЕДЕМЕОЙСИ
РТЕДУФБЧМЕОЙК. пДЙОПЮОПЕ РТЕДУФБЧМЕОЙЕ ДПМЦОП ПУОПЧЩЧБФШУС ОБ ПДЙОПЮОПН
ЪБРТПУЕ; пвяедйоеойе (UNION) Й пвяедйоеойе чуезп (UNIOM ALL) ОЕ ТБЪТЕЫБАФУС.
хрптсдпюеойе рп(ORDER BY) ОЙЛПЗДБ ОЕ ЙУРПМШЪХЕФУС Ч ПРТЕДЕ- МЕОЙЙ
РТЕДУФБЧМЕОЙК. чЩЧПД ЪБРТПУБ ЖПТНЙТХЕФ УПДЕТЦБОЙЕ РТЕДУФБЧМЕОЙС, ЛПФПТПЕ
ОБРПНЙОБЕФ ВБЪПЧХА ФБВМЙГХ Й СЧМСЕФУС - РП ПРТЕДЕМЕОЙА - ОЕХРПТСДПЮЕООЩН.

хдбмеойе ртедуфбчмеойк

уЙОФБЛУЙУ ХДБМЕОЙС РТЕДУФБЧМЕОЙС ЙЪ ВБЪЩ ДБООЩИ РПДПВЕО УЙОФБЛУЙУХ
ХДБМЕОЙС ВБЪПЧЩИ ФБВМЙГ:

DROP VIEW < view name >

ч ЬФПН ОЕФ ОЕПВИПДЙНПУФЙ, ПДОБЛП, УОБЮБМБ ОБДП ХДБМЙФШ ЧУЕ УПДЕТЦБОЙЕ ЛБЛ
ЬФП ДЕМБЕФУС У ВБЪПЧПК ФБВМЙГЕК, РПФПНХ ЮФП УПДЕТЦБОЙЕ РТЕДУФБЧМЕОЙС ОЕ
СЧМСЕФУС УПЪДБООЩН Й УПИТБОСЕФУС Ч ФЕЮЕОЙЙ ПРТЕДЕМЕООПК ЛПНБОДЩ. вБЪПЧБС
ФБВМЙГБ ЙЪ ЛПФПТПК РТЕДУФБЧМЕОЙЕ ЧЩЧПДЙФУС, ОЕ ЬЖЖЕЛФЙЧОБ ЛПЗДБ РТЕДУФБЧ-
МЕОЙЕ ХДБМЕОП.
рПНОЙФЕ, ЧЩ ДПМЦОЩ СЧМСФШУС ЧМБДЕМШГЕН РТЕДУФБЧМЕОЙС ЮФПВЩ ЙНЕФШ ЧПЪ-
НПЦОПУФШ ХДБМЙФШ ЕЗП.

теъане

фЕРЕТШ, ЛПЗДБ ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ РТЕДУФБЧМЕОЙС, ЧБЫБ УРПУПВОПУФШ
ПФУМЕЦЙЧБФШ Й ПВТБВБФЩЧБФШ УПДЕТЦБОЙЕ ЧБЫЕК ВБЪЩ ДБООЩИ, ЪОБЮЙФЕМШОП
ТБУЫЙТЙМБУШ. мАВЩЕ ЧЕЭЙ ЛПФПТЩЕ ЧЩ НПЦЕФЕ УПЪДБФШ У ЪБРТПУПН, ЧЩ
ЧУЕЗДБ УНПЦЕФЕ ПРТЕДЕМЙФШ ЛБЛ РТЕДУФБЧМЕОЙЕ. ъБРТПУЩ ЬФЙИ РТЕДУФБЧМЕОЙК,
ЖБЛФЙЮЕУЛЙ, ЪБРТПУ ЪБРТПУБ.
йУРПМШЪПЧБОЙЕ РТЕДУФБЧМЕОЙК Й ДМС ХДПВУФЧБ Й ДМС ЪБЭЙФЩ, ФБЛЦЕ ХДПВОП
ЛБЛ Й НОПЗЙЕ ЧПЪНПЦОПУФЙ РТЕДУФБЧМЕОЙК ДМС ЖПТНБФЙТПЧБОЙС Й РПМХЮЕОЙС
ЪОБЮЕОЙК ЙЪ РПУФПСООП НЕОСАЭЕЗПУС УПДЕТЦБОЙС ЧБЫЕК ВБЪЩ ДБООЩИ. йНЕЕФУС ПДЙО ЗМБЧОЩК ЧЩЧПД ПФОПУЙФЕМШОП РТЕДУФБЧМЕОЙК, ЬФП УРПУПВОПУФШ Л НПДЙЖЙЛБГЙЙ, ЛПФПТХА НЩ ЧЩВТБМЙ Ч ПФМЙЮЙЙ ПФ
НПЦЕФЕ НПДЙЖЙГЙТПЧБФШ РТЕДУФБЧМЕОЙС ФБЛЦЕ ЛБЛ Й ВБЪПЧХА ФБВМЙГХ, У РП-
НПЭША ЙЪНЕОЕОЙК РТЙНЕОСЕНЩИ Л ФБВМЙГЕ ЙЪ ЛПФПТПК РПМХЮБЕФУС РТЕДУФБЧ-
МЕОЙЕ, ОП ЬФП ОЕ ЧУЕЗДБ ЧПЪНПЦОП.

тбвпфб у SQL

1. уПЪДБКФЕ РТЕДУФБЧМЕОЙЕ ЛПФПТПЕ ВЩ РПЛБЪЩЧБМП ЧУЕИ ЪБЛБЪЮЙЛПЧ ЛПФПТЩЕ
ЙНЕАФ УБНЩЕ ЧЩУПЛЙЕ ПГЕОЛЙ.

2. уПЪДБКФЕ РТЕДУФБЧМЕОЙЕ ЛПФПТПЕ ВЩ РПЛБЪЩЧБМП ОПНЕТ РТПДБЧГБ Ч ЛБЦДПН
ЗПТПДЕ.

3. уПЪДБКФЕ РТЕДУФБЧМЕОЙЕ ЛПФПТПЕ ВЩ РПЛБЪЩЧБМП ХУТЕДОЕООЩК Й ПВЭЙК РПТСДЛЙ ДМС ЛБЦДПЗП РТПДБЧГБ РПУМЕ ЕЗП ЙНЕОЙ. рТЕДРПМБЗБЕФУС, ЮФП ЧУЕ ЙНЕОБ -
ХОЙЛБМШОЩ.

4. уПЪДБКФЕ РТЕДУФБЧМЕОЙЕ ЛПФПТПЕ ВЩ РПЛБЪЩЧБМП ЛБЦДПЗП РТПДБЧГБ У НОПЗПЮЙУМЕООЩНЙ ЪБЛБЪЮЙЛБНЙ.

( уН. рТЙМПЦЕОЙЕ A ДМС ПФЧЕФПЧ. )
Соседние файлы в папке Understanding SQL (rus - html)