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

Underctanding SQL. Chapter 18. пзтбойюеойе ъобюеойк чбыйи дбоощи ч змбче 17, чщ хъобмй лбл упъдбафус фбвмйгщ. фЕРЕТШ ВПМЕЕ ФЭБФЕМШОП У ЬФПЗП НЕУФБ НЩ РПЛБЦЕН ЧБН ЛБЛ ЧЩ НПЦЕФЕ ХУФБОБЧМЙЧБФШ ПЗТБОЙЮЕОЙС Ч ФБВМЙГБИ. пЗТБОЙЮЕОЙС - ЬФП ЮБУФШ ПРТЕДЕМЕОЙК ФБВМЙГЩ, ЛПФПТПЕ ПЗТБОЙЮЙЧБЕФ ЪОБЮЕОЙС ЛПФПТЩЕ ЧЩ НПЦЕФЕ ЧЧПДЙФШ Ч УФПМВГЩ. дП ЬФПЗП НЕУФБ Ч ЛОЙЗЕ, ЕДЙОУФЧЕООЩН ПЗТБОЙЮЕОЙЕН ОБ ЪОБЮЕОЙС ЛПФПТЩЕ ЧЩ НПЗМЙ ЧЧПДЙФШ, ВЩМЙ ФЙР ДБООЩИ Й ТБЪНЕТ ЧЧПДЙНЩИ ЪОБЮЕОЙК ЛПФПТЩЕ ДПМЦОЩ ВЩФШ УПЧНЕУФЙНЩ У ФЕНЙ УФПМВГБНЙ Ч ЛПФПТЩЕ ЬФЙ ЪОБЮЕОЙС РПНЕЭБАФУС ( ЛБЛ Й ПРТЕДЕМЕОП Ч ЛПНБОДЕ CREATE TABLE ЙМЙ ЛПНБОДЕ ALTER TABLE ). пЗТБОЙЮЕОЙС ДБАФ ЧБН ЪОБЮЙФЕМШОП ВПМШЫЙЕ ЧПЪНПЦОПУФЙ Й УЛПТП ЧЩ ЬФП ХЧЙДЙФЕ. чЩ ФБЛЦЕ ХЪОБЕФЕ ЛБЛ ПРТЕДЕМСФШ ЪОБЮЕОЙС РП ХНПМЮБОЙА Ч ЬФПК ЗМБЧЕ. рП ХНПМЮБОЙА - ЬФП ЪОБЮЕОЙЕ ЛПФПТПЕ ЧУФБЧМСЕФУС БЧФПНБФЙЮЕУЛЙ Ч МАВПК УФПМВЕГ ФБВМЙГЩ, ЛПЗДБ ЪОБЮЕОЙЕ ДМС ЬФПЗП УФПМВГБ ПФУХФУФЧХЕФ Ч ЛПНБОДЕ INSERT ДМС ЬФПК ФБВМЙГЩ. NULL - ЬФП ОБЙВПМЕЕ ЫЙТПЛП ЙУРПМШЪХЕНПЕ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА, ОП Ч ЬФПК ЗМБЧЕ ВХДЕФ РПЛБЪБОП ЛБЛ ПРТЕДЕМСФШ Й ДТХЗЙЕ ЪОБЮЕОЙС РП ХНПМЮБОЙА. пзтбойюеойе фбвмйг лПЗДБ ЧЩ УПЪДБЕФЕ ФБВМЙГХ ( ЙМЙ, ЛПЗДБ ЧЩ ЕЕ ЙЪНЕОСЕФЕ ), ЧЩ НПЦЕФЕ РПНЕЭБФШ ПЗТБОЙЮЕОЙЕ ОБ ЪОБЮЕОЙС ЛПФПТЩЕ НПЗХФ ВЩФШ ЧЧЕДЕОЩ Ч РПМ. еУМЙ ЧЩ ЬФП УДЕМБМЙ, SQL ВХДЕФ ПФЛМПОСФШ МАВЩЕ ЪОБЮЕОЙС ЛПФПТЩЕ ОБТХЫБАФ ЛТЙФЕТЙЙ ЛПФПТЩЕ ЧЩ ПРТЕДЕМЙМЙ. йНЕЕФУС ДЧБ ПУОПЧОЩИ ФЙРБ ПЗТБОЙЮЕОЙК - ПЗТБОЙЮЕОЙЕ УФПМВГБ Й ПЗТБОЙЮЕОЙЕ ФБВМЙГЩ. тБЪМЙЮЙЕ НЕЦДХ ОЙНЙ Ч ФПН, ЮФП ПЗТБОЙЮЕОЙЕ УФПМВГБ РТЙНЕОСЕФУС ФПМШЛП Л ЙОДЙЧЙДХБМШОЩН УФПМВГБН, Ч ФП ЧТЕН ЛБЛ ПЗТБОЙЮЕОЙЕ ФБВМЙГЩ РТЙНЕОСЕФУС Л ЗТХРРБН ЙЪ ПДОПЗП Й ВПМЕЕ УФПМВГПЧ. пвясчмеойе пзтбойюеойк чЩ ЧУФБЧМСЕФЕ ПЗТБОЙЮЕОЙЕ УФПМВГБ Ч ЛПОЕГ ЙНЕОЙ УФПМВГБ РПУМЕ ФЙРБ ДБООЩИ Й РЕТЕД ЪБРСФПК. пЗТБОЙЮЕОЙЕ ФБВМЙГЩ РПНЕЭБАФУС Ч ЛПОЕГ ЙНЕОЙ ФБВМЙГЩ РПУМЕ РПУМЕДОЕЗП ЙНЕОЙ УФПМВГБ, ОП РЕТЕД ЪБЛМАЮЙФЕМШОПК ЛТХЗМПК УЛПВЛПК. дБМЕЕ РПЛБЪБО УЙОФБЛУЙУ ДМС ЛПНБОДЩ CREATE TABLE, ТБУЫЙТЕО- ОПК ДМС ЧЛМАЮЕОЙС Ч ОЕЕ ПЗТБОЙЮЕОЙС: CREATE TABLE < table name > (< column name > < column constraint >, < column name > < data type > < column constraint > ... < table constraint > ( < column name > [, < column name > ])... ); ( дМС ЛТБФЛПУФЙ, НЩ ПРХУФЙМЙ БТЗХНЕОФ ТБЪНЕТБ, ЛПФПТЩК ЙОПЗДБ ЙУРПМШЪХЕФУС У ФЙРПН ДБООЩИ. ) рПМ ДБООЩЕ Ч ЛТХЗМЩИ УЛПВЛБИ РПУМЕ ПЗТБОЙЮЕОЙС ФБВМЙГЩ - ЬФП РПМ Л ЛПФПТЩН РТЙНЕОЕОП ЬФП ПЗТБОЙЮЕОЙЕ. пЗТБОЙЮЕОЙЕ УФПМВГБ, ЕУФЕУФЧЕООП, РТЙНЕОСЕФУС Л УФПМВГБН, РПУМЕ ЮШЙИ ЙНЕО ПОП УМЕДХЕФ. пУФБМШОБС ЮБУФШ ЬФПК ЗМБЧБ ВХДЕФ ПРЙУЩЧБФШ ТБЪМЙЮОЩЕ ФЙРЩ ПЗТБОЙЮЕОЙК Й ЙИ ЙУРПМШЪПЧБОЙЕ. йурпмшъпчбойе пзтбойюеойк дмс йулмаюеойс рхуфщи( NULL ) хлбъбфемек чЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ ЛПНБОДХ CREATE TABLE ЮФПВЩ РТЕДПИТБОЙФШ РПМЕ ПФ ТБЪТЕЫЕОЙС Ч ОЕН РХУФЩИ(NULL) ХЛБЪБФЕМЕК У РПНПЭША ПЗТБОЙЮЕОЙС NOT NULL. ьФП ПЗТБОЙЮЕОЙЕ ОБЛМБДЩЧБЕФУС ФПМШЛП ДМС ТБЪОППВТБЪОЩИ УФПМВГПЧ. чЩ НПЦЕФЕ ЧУРПНОЙФШ ЮФП NULL - ЬФП УРЕГЙБМШОПЕ ПВПЪОБЮЕОЙЕ ЛПФПТПЕ ПФНЕЮБЕФ РПМЕ ЛБЛ РХУФПЕ. NULL НПЦЕФ ВЩФШ РПМЕЪЕО, ЛПЗДБ ЙНЕАФУС УМХЮБЙ, ЛПЗДБ ЧЩ ИПФЙФЕ ВЩФШ ПФ ОЙИ ЗБТБОФЙТПЧБОЩ. пЮЕЧЙДОП, ЮФП РЕТЧЙЮОЩЕ ЛМАЮЙ ОЙЛПЗДБ ОЕ ДПМЦОЩ ВЩФШ РХУФЩНЙ , РПУЛПМШЛХ ЬФП ВХДЕФ РПДТЩЧБФШ ЙИ ЖХОЛГЙПОБМШОЩЕ ЧПЪНПЦОПУФЙ. лТПНЕ ФПЗП, ФБЛЙЕ РПМ ЛБЛ ЙНЕОБ, ФТЕВХАФ Ч ВПМШЫЙОУФЧЕ УМХЮБЕЧ, ПРТЕДЕМЕООЩИ ЪОБЮЕОЙК. оБРТЙНЕТ, ЧЩ ЧЕТПСФОП ЪБИПФЙФЕ ЙНЕФШ ЙНС ДМС ЛБЦДПЗП ЪБЛБЪЮЙЛБ Ч ФБВМЙГЕ ъБЛБЪЮЙЛПЧ. еУМЙ ЧЩ РПНЕУФЙФЕ ЛМАЮЕЧЩЕ УМПЧБ NOT NULL УТБЪХ РПУМЕ ФЙРБ ДБООЩИ ( ЧЛМАЮБС ТБЪНЕТ ) УФПМВГБ, МАВБ РПРЩФЛБ РПНЕУФЙФШ ЪОБЮЕОЙЕ NULL Ч ЬФП РПМЕ ВХДЕФ ПФЛМПОЕОБ. ч РТПФЙЧОПН УМХЮБЕ, SQL РПОЙНБЕФ, ЮФП NULL ТБЪТЕЫЕО. оБРТЙНЕТ, ДБЧБКФЕ ХМХЮЫЙН ОБЫЕ ПРТЕДЕМЕОЙЕ ФБВМЙГЩ рТПДБЧГПЧ, ОЕ РПЪЧПМСС РПНЕЭБФШ NULL ЪОБЮЕОЙС Ч УФПМВГЩ snum ЙМЙ sname : CREATE TABLE Salespeople ( Snum integer NOT, Sname char (10) NOT, city char (10), comm decimal); чБЦОП РПНОЙФШ, ЮФП МАВПНХ УФПМВГХ У ПЗТБОЙЮЕОЙЕН NOT NULL ДПМЦОП ВЩФШ ХУФБОПЧМЕОП ЪОБЮЕОЙЕ Ч ЛБЦДПН РТЕДМПЦЕОЙЙ INSERT ЧПЪДЕКУФЧХАЭЕН ОБ ФБВМЙГХ. рТЙ ПФУХФУФЧЙЙ NULL, SQL НПЦЕФ ОЕ ЙНЕФШ ЪОБЮЕОЙК ДМС ХУФБОПЧЛЙ Ч ЬФЙ УФПМВГЩ, ЕУМЙ ЛПОЕЮОП ЪОБЮЕОЙЕ РП ХНПМЮБОЙА, ПРЙУБООПЕ ТБОЕЕ Ч ЬФПК ЗМБЧЕ, ХЦЕ ОЕ ВЩМП ОБЪОБЮЕОП. еУМЙ ЧБЫБ УЙУФЕНБ РПДДЕТЦЙЧБЕФ ЙУРПМШЪПЧБОЙЕ ALTER TABLE ЮФПВЩ ДПВБЧМСФШ ОПЧЩЕ УФПМВГЩ Л ХЦЕ УХЭЕУФЧХАЭЕК ФБВМЙГЕ, ЧЩ НПЦЕФЕ ЧЕТПСФОП РПНЕЭБФШ ПЗТБОЙЮЕОЙЕ УФПМВГПЧ, ФЙРБ NOT NULL, ДМС ЬФЙИ ОПЧЩИ УФПМВГПЧ. пДОБЛП, ЕУМЙ ЧЩ РТЕДРЙУЩЧБЕФЕ ОПЧПНХ УФПМВГХ ЪОБЮЕОЙЕ NOT NULL, ФЕЛХЭБС ФБВМЙГБ ДПМЦОБ ВЩФШ РХУФПК. хведйфеуш юфп ъобюеойс - хойлбмшощ ч зМБЧЕ 17, НЩ ПВУХДЙМЙ ЙУРПМШЪПЧБОЙЕ ХОЙЛБМШОЩИ ЙОДЕЛУПЧ ЮФПВЩ ЪБУФБЧЙФШ РПМ ЙНЕФШ ТБЪМЙЮОЩЕ ЪОБЮЕОЙС ДМС ЛБЦДПК УФТПЛЙ. ьФБ РТБЛФЙЛБ - ПУФБМБУШ У РТЕЦОЙИ ЧТЕНЕО, ЛПЗДБ SQL РПДДЕТЦЙЧБМ ПЗТБОЙЮЕОЙЕ UNIQUE. хОЙЛБМШОПУФШ - ЬФП УЧПКУФЧП ДБООЩИ Ч ФБВМЙГЕ, Й РПЬФПНХ ЕЗП ВПМЕЕ МПЗЙЮОП ОБЪЧБФШ ЛБЛ ПЗТБОЙЮЕОЙЕ ЬФЙИ ДБООЩИ, Б ОЕ РТПУФП ЛБЛ УЧПКУФЧП МПЗЙЮЕУЛПЗП ПФМЙЮЙС, УЧСЪЩЧБАЭЕЕ ПВЯЕЛФ ДБООЩИ ( ЙОДЕЛУ ). оЕУПНОЕООП, ХОЙЛБМШОЩЕ ЙОДЕЛУЩ - ПДЙО ЙЪ УБНЩИ РТПУФЩИ Й ОБЙВПМЕЕ ЬЖЖЕЛФЙЧОЩИ НЕФПДПЧ РТЕДРЙУБОЙС ХОЙЛБМШОПУФЙ. рП ЬФПК РТЙЮЙОЕ, ОЕ- ЛПФПТЩЕ ТЕБМЙЪБГЙЙ ПЗТБОЙЮЕОЙС UNIQUE ЙУРПМШЪХАФ ХОЙЛБМШОЩЕ ЙОДЕЛУЩ; ФП ЕУФШ ПОЙ УПЪДБАФ ЙОДЕЛУ ОЕ УППВЭБ ЧБН ПВ ЬФПН. пУФБЕФУС ЖБЛФПН, ЮФП ЧЕТПСФОПУФШ ВЕУРПТСДЛБ Ч ВБЪЕ ДБООЩИ ДПУФБФПЮОП НБМБ, ЕУМЙ ЧЩ РТЕДРЙУЩЧБЕФЕ ХОЙЛБМШОПУФШ ЧНЕУФЕ У ПЗТБОЙЮЕОЙЕН. хойлбмшопуфш лбл пзтбойюеойе уфпмвгб чТЕНС ПФ ЧТЕНЕОЙ, ЧЩ ИПФЙФЕ ХВЕДЙФШУС, ЮФП ЧУЕ ЪОБЮЕОЙС, ЧЧЕДЕООЩЕ Ч УФПМВЕГ, ПФМЙЮБАФУС ДТХЗ ПФ ДТХЗБ. оБРТЙНЕТ, РЕТЧЙЮОЩЕ ЛМАЮЙ ДПУФБФПЮОП СУОП ЬФП РПЛБЪЩЧБАФ. еУМЙ ЧЩ РПНЕЭБЕФЕ ПЗТБОЙЮЕОЙЕ УФПМВГБ UNIQUE Ч РПМЕ РТЙ УПЪДБОЙЙ ФБВМЙГЩ, ВБЪБ ДБООЩИ ПФЛМПОЙФ МАВХА РПРЩФЛХ ЧЧПДБ Ч ЬФП РПМЕ ДМС ПД- ОПК ЙЪ УФТПЛ, ЪОБЮЕОЙС, ЛПФПТПЕ ХЦЕ РТЕДУФБЧМЕОП Ч ДТХЗПК УФТПЛЕ. ьФП ПЗТБОЙЮЕОЙЕ НПЦЕФ РТЙНЕОСФШУС ФПМШЛП Л РПМСН ЛПФПТЩЕ ВЩМЙ ПВЯСЧМЕОЩ ЛБЛ ОЕРХУФЩЕ(NOT NULL), ФБЛ ЛБЛ ОЕ ЙНЕЕФ УНЩУМБ РПЪЧПМЙФШ ПДОПК УФТПЛЕ ФБВМЙГЩ ЙНЕФШ ЪОБЮЕОЙЕ NULL, Б ЪБФЕН ЙУЛМАЮБФШ ДТХЗЙЕ УФТПЛЙ У NULL ЪОБЮЕОЙСНЙ ЛБЛ ДХВМЙЛБФЩ. йНЕЕФУС ДБМШОЕКЫЕЕ ХУПЧЕТЫЕОУФЧПЧБОЙЕ ОБЫЕК ЛПНБОДЩ УПЪДБОЙС ФБВ- МЙГЩ рТПДБЧГПЧ : CREATE TABLE Salespeople ( Snum integer NOT NULL UNIQUE, Sname char (10) NOT NULL UNIQUE, city char (10), comm decimal ); лПЗДБ ЧЩ ПВЯСЧМСЕФЕ РПМЕ sname ХОЙЛБМШОЩН, ХВЕДЙФЕУШ, ЮФП ДЧЕ Mary Smith ВХДХФ ЧЧЕДЕОЩ ТБЪМЙЮОЩНЙ УРПУПВБНЙ - ОБРТЙНЕТ, Mary Smith Й M. Smith. ч ФП ЦЕ ЧТЕН ЬФП ОЕ ФБЛ ХЦ ОЕПВИПДЙНП У ЖХОЛГЙПОБМШОПК ФПЮЛЙ ЪТЕОЙС - РПФПНХ ЮФП РПМЕ snum Ч ЛБЮЕУФЧЕ РЕТЧЙЮОПЗП ЛМАЮБ, ЧУЕ ТБЧОП ПВЕУРЕЮЙФ ПФМЙЮЙЕ ЬФЙИ ДЧХИ УФТПЛ - ЮФП РТПЭЕ ДМС МАДЕК ЙУРПМШЪХАЭЙИ ДБООЩЕ Ч ФБВМЙГБИ, ЮЕН РПНОЙФШ ЮФП ЬФЙ Smith ОЕ ЙДЕОФЙЮОЩ. уФПМВГЩ ( ОЕ РЕТЧЙЮОЩЕ ЛМАЮЙ ) ЮШЙ ЪОБЮЕОЙС ФТЕВХАФ ХОЙЛБМШОПУФЙ, ОБЪЩЧБАФУС ЛМАЮБНЙ-ЛБОДЙДБФБНЙ ЙМЙ ХОЙЛБМШОЩНЙ ЛМАЮБНЙ. хойлбмшопуфш лбл пзтбойюеойе фбвмйгщ чЩ НПЦЕФЕ ФБЛЦЕ ПРТЕДЕМЙФШ ЗТХРРХ РПМЕК ЛБЛ ХОЙЛБМШОХА У РПНПЭША ЛПНБОДЩ ПЗТБОЙЮЕОЙС ФБВМЙГЩ - UNIQUE. пВЯСЧМЕОЙЕ ЗТХРРЩ РПМЕК ХОЙ- ЛБМШОПК, ПФМЙЮБЕФУС ПФ ПВЯСЧМЕОЙС ХОЙЛБМШОЩНЙ ЙОДЙЧЙДХБМШОЩИ РПМЕК, ФБЛ ЛБЛ ЬФП ЛПНВЙОБГЙС ЪОБЮЕОЙК, Б ОЕ РТПУФП ЙОДЙЧЙДХБМШОПЕ ЪОБЮЕОЙЕ, ЛПФПТПЕ ПВСЪБОП ВЩФШ ХОЙЛБМШОЩН. хОЙЛБМШОПУФШ ЗТХРРЩ - ЬФП РТЕДУФБЧМЕОЙЕ РПТСДЛБ, ФБЛ ЮФП ВЩ РБТЩ УФТПЛ УП ЪОБЮЕОЙСНЙ УФПМВГПЧ "a", "b" Й "b", "a" ТБУУНБФТЙЧБМЙУШ ПФДЕМШОП ПД- ОБ ПФ ДТХЗПК. оБЫБ ВБЪБ ДБООЩИ УДЕМБОБ ФБЛ ЮФПВЩ ЛБЦДЩК ЪБЛБЪЮЙЛ ВЩМ ОБЪОБЮЕО ПД- ОПНХ Й ФПМШЛП ПДОПНХ РТПДБЧГХ. ьФП ПЪОБЮБЕФ ЮФП ЛБЦДБС ЛПНВЙОБГЙС ОП- НЕТБ ЪБЛБЪЮЙЛБ(cnum) Й ОПНЕТБ РТПДБЧГБ(snum) Ч ФБВМЙГЕ ъБЛБЪЮЙЛПЧ ДПМЦОБ ВЩФШ ХОЙЛБМШОПК. чЩ НПЦЕФЕ ХВЕДЙФШУС Ч ЬФПН, УПЪДБЧ ФБВМЙГХ ъБЛБЪ- ЮЙЛПЧ ФБЛЙН УРПУПВПН: CREATE TABLE Customers ( cnum integer NOT NULL, cname char (10) NOT NULL, city char (10), rating integer, snum integer NOT NULL, UNIQUE (cnum, snum)); пВТБФЙФЕ ЧОЙНБОЙЕ ЮФП ПВБ РПМ Ч ПЗТБОЙЮЕОЙЙ ФБВМЙГЩ UNIQUE ЧУЕ ЕЭЕ ЙУРПМШЪХАФ ПЗТБОЙЮЕОЙЕ УФПМВГБ - NOT NULL . еУМЙ ВЩ НЩ ЙУРПМШЪПЧБМЙ ПЗТБОЙЮЕОЙЕ УФПМВГБ UNIQUE ДМС РПМ cnum, ФБЛПЕ ПЗТБОЙЮЕОЙЕ ФБВМЙГЩ ВЩМП ВЩ ОЕПВСЪБФЕМШОЩН. еУМЙ ЪОБЮЕОЙС РПМ cnum ТБЪМЙЮОП ДМС ЛБЦДПК УФТПЛЙ, ФП ОЕ НПЦЕФ ВЩФШ ДЧХИ УФТПЛ У ЙДЕОФЙЮОПК ЛПНВЙОБГЙЕК ЪОБЮЕОЙК РПМЕК cnum Й snum. фП ЦЕ УБНПЕ РПМХЮЙФУС ЕУМЙ НЩ ПВЯСЧЙН РПМЕ snum ХОЙЛБМШОЩН, ИПФС ЬФП Й ОЕ ВХДЕФ УППФЧЕФУФЧПЧБФШ ОБЫЕНХ РТЙНЕТХ, ФБЛ ЛБЛ РТПДБЧЕГ ВХДЕФ ОБЪОБЮЕО НОПЗПЮЙУМЕООЩН ЪБЛБЪЮЙЛБН. уМЕДПЧБФЕМШОП, ПЗТБОЙЮЕОЙЕ ФБВМЙГЩ - UNIQUE, ОБЙВПМЕЕ РПМЕЪОП ЛПЗДБ ЧЩ ОЕ ИПФЙФЕ ЪБУФБЧМСФШ ЙОДЙЧЙДХБМШОЩЕ РПМ ВЩФШ ХОЙЛБМШОЩНЙ. рТЕДРПМПЦЙН, ОБРТЙНЕТ, ЮФП НЩ ТБЪТБВПФБМЙ ФБВМЙГХ ЮФПВЩ УМЕДЙФШ ЪБ ЧУЕНЙ РПТСДЛБНЙ ЛБЦДЩК ДЕОШ ДМС ЛБЦДПЗП РТПДБЧГБ. лБЦДБС УФТПЛБ ФБЛПК ФБВМЙГЩ РТЕДУФБЧМСЕФ УХННХ ЮЙУЕМ МАВЩИ РПТСДЛПЧ, Б ОЕ РТПУФП ЙОДЙЧЙДХ- БМШОЩК РПТСДПЛ. ч ЬФПН УМХЮБЕ, НЩ НПЗМЙ ВЩ ХУФТБОЙФШ ОЕЛПФПТЩЕ ЧПЪНПЦОЩЕ ПЫЙВЛЙ ХВЕДЙЧЫЙУШ ЮФП ОБ ЛБЦДЩК ДЕОШ ЙНЕЕФУС ОЕ ВПМЕЕ ЮЕН ПДОБ УФТПЛБ ДМС ДБООПЗП РТПДБЧГБ, ЙМЙ ЮФП ЛБЦДБС ЛПНВЙОБГЙС РПМЕК snum Й odate СЧМСЕФУС ХОЙЛБМШОПК. чПФ ЛБЛ ОБРТЙНЕТ НЩ НПЗМЙ ВЩ УПЪДБФШ ФБВМЙГХ У ЙНЕОЕН Salestotal : CREATE TABLE Salestotal ( cnum integer NOT NULL, odate date NULL, totamt decimal, UNIQUE (snum, odate)); лТПНЕ ФПЗП, ЙНЕЕФУС ЛПНБОДБ ЛПФПТХА ЧЩ ВХДЕФЕ ЙУРПМШЪПЧБФШ ЮФПВЩ РПНЕЭБФШ ФЕЛХЭЙЕ ДБООЩЕ Ч ЬФХ ФБВМЙГХ: INSERT INTO Salestotal SELECT snum, odate, SUM (amt) FROM Orders GROUP BY snum, odate; пзтбойюеойе ретчйюощи лмаюек дП ЬФПЗП НЩ ЧПУРТЙОЙНБМЙ РЕТЧЙЮОЩЕ ЛМАЮЙ ЙУЛМАЮЙФЕМШОП ЛБЛ МПЗЙЮЕУЛЙЕ РПОСФЙС. иПФШ НЩ Й ЪОБЕН ЮФП ФБЛПЕ РЕТЧЙЮОЩК ЛМАЮ, Й ЛБЛ ПО ДПМЦЕО ЙУРПМШЪПЧБФШУС Ч МАВПК ФБВМЙГЕ, НЩ ОЕ ЧЕДБЕН "ЪОБЕФ" МЙ ПВ ЬФПН SQL. рПЬФПНХ НЩ ЙУРПМШЪПЧБМЙ ПЗТБОЙЮЕОЙЕ UNIQUE ЙМЙ ХОЙЛБМШОЩЕ ЙОДЕЛУЩ Ч РЕТЧЙЮОЩИ ЛМАЮБИ ЮФПВЩ РТЕДРЙУЩЧБФШ ЙН ХОЙЛБМШОПУФШ. ч ВПМЕЕ ТБООЙИ ЧЕТУЙСИ СЪЩЛБ SQL , ЬФП ВЩМП ОЕПВИПДЙНП, Й НПЗМП ЧЩРПМОСФШУС ЬФЙН УРПУПВПН. пДОБЛП ФЕРЕТШ, SQL РПДДЕТЦЙЧБЕФ РЕТЧЙЮОЩЕ ЛМАЮЙ ОЕРПУТЕДУФЧЕООП У ПЗТБОЙЮЕОЙЕН рЕТЧЙЮОЩК лМАЮ ( PRIMARE KEY ). ьФП ПЗТБОЙЮЕОЙЕ НПЦЕФ ВЩФШ ДПУФХРОЩН ЙМЙ ОЕДПУФХРОЩН ЧБЫЕК УЙУФЕНЕ. PRIMARY KEY НПЦЕФ ПЗТБОЙЮЙЧБФШ ФБВМЙГЩ ЙМЙ ЙИ УФПМВГЩ. ьФП ПЗТБОЙЮЕОЙЕ ТБВПФБЕФ ФБЛ ЦЕ ЛБЛ Й ПЗТБОЙЮЕОЙЕ UNIQUE, ЪБ ЙУЛМАЮЕОЙЕН ЛПЗДБ ФПМШЛП ПДЙО РЕТЧЙЮОЩК ЛМАЮ ( ДМС МАВПЗП ЮЙУМБ УФПМВГПЧ ) НПЦЕФ ВЩФШ ПРТЕДЕМЕО ДМС ДБООПК ФБВМЙГЩ. йНЕЕФУС ФБЛЦЕ ТБЪМЙЮЙЕ НЕЦДХ РЕТЧЙЮОЩНЙ ЛМАЮБНЙ Й ХОЙЛБМШОПУФША УФПМВГПЧ Ч УРПУПВЕ ЙИ ЙУРПМШЪПЧБФШУС У ЧОЕЫОЙНЙ ЛМАЮБНЙ, П ЛПФПТЩИ ВХДЕФ ТБУУЛБЪБОП Ч зМБЧЕ 19. уЙОФБЛУЙУ Й ПРТЕДЕМЕОЙЕ ЙИ ХОЙЛБМШОПУФЙ ФЕ ЦЕ ЮФП Й ДМС ПЗТБОЙЮЕОЙС UNIQUE. рЕТЧЙЮОЩЕ ЛМАЮЙ ОЕ НПЗХФ РПЪЧПМЙФШ ЪОБЮЕОЙК NULL. ьФП ПЪОБЮБЕФ ЮФП, РПДПВОП РПМСН Ч ПЗТБОЙЮЕОЙЙ UNIQUE, МАВПЕ РПМЕ ЙУРПМШЪХЕНПЕ Ч ПЗТБОЙЮЕОЙЙ PRIMARY KEY ДПМЦОП ХЦЕ ВЩФШ ПВЯСЧМЕОП NOT NULL . йНЕЕФУС ХМХЮЫЕООЩК ЧБТЙБОФ УПЪДБОЙС ОБЫЕК ФБВМЙГЩ рТПДБЧГПЧ : CREATE TABLE Salestotal ( snum integer NOT NULL PRIMARY KEY, sname char(10) NOT NULL UNIQUE, city char(10), comm decimal); лБЛ ЧЩ ЧЙДЙФЕ, ХОЙЛБМШОПУФШ (UNIQUE) РПМЕК НПЦЕФ ВЩФШ ПВЯСЧМЕОБ ДМС ФПК ЦЕ УБНПК ФБВМЙГЩ. мХЮЫЕ ЧУЕЗП РПНЕЭБФШ ПЗТБОЙЮЕОЙЕ PRIMARY KEY Ч РПМЕ (ЙМЙ Ч РПМС) ЛПФПТПЕ ВХДЕФ ПВТБЪПЧЩЧБФШ ЧБЫ ХОЙЛБМШОЩК ЙДЕОФЙЖЙЛБФПТ УФТПЛЙ, Й УПИТБОЙФШ ПЗТБОЙЮЕОЙЕ UNIQUE ДМС РПМЕК ЛПФПТЩЕ ДПМЦОЩ ВЩФШ ХОЙЛБМШОЩНЙ МПЗЙЮЕУЛЙ ( ФБЛЙЕ ЛБЛ ОПНЕТБ ФЕМЕЖПОБ ЙМЙ РПМЕ sname ), Б ОЕ ДМС ЙДЕОФЙЖЙЛБГЙЙ УФТПЛ. ретчйюоще лмаюй впмее юен пдопзп рпмс пЗТБОЙЮЕОЙЕ PRIMARY KEY НПЦЕФ ФБЛЦЕ ВЩФШ РТЙНЕОЕОП ДМС НОПЗПЮЙУМЕООЩИ РПМЕК, УПУФБЧМАЭЙИ ХОЙЛБМШОХА ЛПНВЙОБГЙА ЪОБЮЕОЙК. рТЕДРПМПЦЙН ЮФП ЧБЫ РЕТЧЙЮОЩК ЛМАЮ - ЬФП ЙН, Й ЧЩ ЙНЕЕФЕ РЕТЧПЕ ЙН Й РПУМЕДОЕЕ ЙН УПИТБОЕООЩНЙ Ч ДЧХИ ТБЪМЙЮОЩИ РПМСИ ( ФБЛ ЮФП ЧЩ НПЦЕФЕ ПТЗБОЙЪПЧЩЧБФШ ДБООЩЕ У РПНПЭША МАВПЗП ЙЪ ОЙИ ). пЮЕЧЙДОП, ЮФП ОЙ РЕТЧПЕ ОЙ РПУМЕДОЕЕ ЙН ОЕМШЪС ЪБУФБЧЙФШ ВЩФШ ХОЙЛБМШОЩН УБНПУФПСФЕМШОП, ОП НЩ НПЦЕН ЛБЦДХА ЙЪ ЬФЙИ ДЧХИ ЛПНВЙОБГЙК УДЕМБФШ ХОЙЛБМШОПК. нЩ НПЦЕН РТЙНЕОЙФШ ПЗТБОЙЮЕОЙЕ ФБВМЙГЩ PRIMARY KEY ДМС РБТ: CREATE TABLE Namefield ( firstname char (10) NOT NULL, lastname char (10) NOT NULL city char (10), PRIMARY KEY ( firstname, lastname )); пДОБ РТПВМЕНБ Ч ЬФПН РПДИПДЕ ФБ, ЮФП НЩ НПЦЕН ЧЩОХДЙФШ РПСЧМЕОЙЕ ХОЙЛБМШОПУФЙ - ОБРТЙНЕТ, ЧЧЕДС Mary Smith Й M. Smith. ьФП НПЦЕФ ЧЧЕУФЙ Ч ЪБВМХЦДЕОЙЕ, РПФПНХ ЮФП ЧБЫЙ УМХЦБЭЙЕ НПЗХФ ОЕ ЪОБФШ ЛФП ЙЪ ОЙИ ЛФП. пВЩЮОП ВПМЕЕ ОБДЕЦОЩК УРПУПВ ЮФПВЩ ПРТЕДЕМСФШ ЮЙУМПЧПЕ РПМЕ ЛПФПТПЕ НПЗМП ВЩ ПФМЙЮБФШ ПДОХ УФТПЛХ ПФ ДТХЗПК, ЬФП ЙНЕФШ РЕТЧЙЮОЩК ЛМАЮ, Й РТЙНЕОСФШ ПЗТБОЙЮЕОЙЕ UNIQUE ДМС ДЧХИ ЙНЕО РПМЕК. ртпчетлб ъобюеойк рпмек лПОЕЮОП, ЙНЕЕФУС МАВПЕ ЮЙУМП ПЗТБОЙЮЕОЙК ЛПФПТЩЕ НПЦОП ХУФБОБЧМЙЧБФШ ДМС ДБООЩИ ЧЧПДЙНЩИ Ч ЧБЫЙ ФБВМЙГЩ, ЮФПВЩ ЧЙДЕФШ, ОБРТЙНЕТ, ОБИПДСФУС МЙ ДБООЩЕ Ч УППФЧЕФУФЧХАЭЕН ДЙБРБЪПОЕ ЙМЙ РТБЧЙМШОПН ЖПТНБФЕ, П ЮЕН SQL ЕУФЕУФЧЕООП ОЕ НПЦЕФ ЪОБФШ ЪБТБОЕЕ. рП ЬФПК РТЙЮЙОЕ, SQL ПВЕУРЕЮЙЧБЕФ ЧБУ ПЗТБОЙЮЕОЙЕН CHECK, ЛПФПТПЕ РПЪЧПМСЕФ ЧБН ХУФБОПЧЙФШ ХУМПЧЙЕ ЛПФПТПНХ ДПМЦОП ХДПЧМЕФЧПТСФШ ЪОБЮЕОЙЕ ЧЧПДЙНПЕ Ч ФБВМЙГХ, РТЕЦДЕ ЮЕН ПОП ВХДЕФ РТЙОСФП. пЗТБОЙЮЕОЙЕ CHECK УПУФПЙФ ЙЪ ЛМАЮЕЧПЗП УМПЧБ CHECK УПРТПЧПЦДБЕНПЗП РТЕДМПЦЕОЙЕН РТЕДЙЛБФБ, ЛПФПТЩК ЙУРПМШЪХЕФ ХЛБЪБООПЕ РПМЕ. мАВБС РПРЩФЛБ НПДЙЖЙГЙТПЧБФШ ЙМЙ ЧУФБЧЙФШ ЪОБЮЕОЙЕ РПМ ЛПФПТПЕ НПЗМП ВЩ УДЕМБФШ ЬФПФ РТЕДЙЛБФ ОЕЧЕТОЩН - ВХДЕФ ПФЛМПОЕОБ. дБЧБКФЕ ТБУУНПФТЙН ЕЭЕ ТБЪ ФБВМЙГХ рТПДБЧГПЧ. уФПМВЕГ ЛПНЙУУЙПООЩИ ЧЩТБЦБЕФУС ДЕУСФЙЮОЩН ЮЙУМПН Й РПЬФПНХ НПЦЕФ ВЩФШ ХНОПЦЕО ОЕРПУТЕДУФЧЕООП ОБ УХННХ РТЙПВТЕФЕОЙК Ч ТЕЪХМШФБФЕ ЮЕЗП ВХДЕФ РПМХЮЕОБ УХННБ ЛПНЙУУЙПООЩИ(Ч ДПММБТБИ) РТПДБЧГБ У ХУФБОПЧМЕООЩН УРТБЧБ ЪОБЮЛПН ДПММБТБ( $ ) . лФП-ФП НПЦЕФ ЙУРПМШЪПЧБФШ РПОСФЙЕ РТПГЕОФБ, ПДОБЛП ЧЕДШ, НПЦОП ПВ ЬФПН Й ОЕ ЪОБФШ. еУМЙ ЮЕМПЧЕЛ ЧЧЕДЕФ РП ПЫЙВЛЕ 14 ЧНЕУФП .14 ЮФПВЩ ХЛБЪБФШ Ч РТПГЕОФБИ УЧПЙ ЛПНЙУУЙПООЩЕ, ЬФП ВХДЕФ ТБУГЕОЕОП ЛБЛ 14.0 , ЮФП СЧМСЕФУС ЪБЛПООЩН ДЕУСФЙЮОЩН ЪОБЮЕОЙЕН, Й ВХДЕФ ОПТНБМШОП ЧПУРТЙОСФП УЙУФЕНПК. юФПВЩ РТЕДПФЧТБФЙФШ ЬФХ ПЫЙВЛХ, НЩ НПЦЕН ОБМПЦЙФШ ПЗТБОЙЮЕОЙЕ УФПМВГБ - CHECK ЮФПВЩ ХВЕДЙФШУС ЮФП ЧЧПДЙНПЕ ЪОБЮЕОЙЕ НЕОШЫЕ ЮЕН 1. CREATE TABLE Salespeople ( snum integer NOT NULL PRIMARY KEY, sname char(10) NOT NULL UNIQUE, city char(10), comm decimal CHECK ( comm < 1 )); йурпмшъпчбойе - CHECK, юфпвщ ртедпртедемсфш дпрхуфйнпе ччпдйнпе ъобюеойе нЩ НПЦЕН ФБЛЦЕ ЙУРПМШЪПЧБФШ ПЗТБОЙЮЕОЙЕ CHECK ЮФПВЩ ЪБЭЙФЙФШ ПФ ЧЧПДБ Ч РПМЕ ПРТЕДЕМЕООЩИ ЪОБЮЕОЙК, Й ФБЛЙН ПВТБЪПН РТЕДПФЧТБФЙФШ ПЫЙВЛХ. оБРТЙНЕТ, РТЕДРПМПЦЙН, ЮФП ЕДЙОУФЧЕООЩНЙ ЗПТПДБНЙ Ч ЛПФПТЩИ НЩ ЙНЕМЙ ЧЕДПНУФЧБ УВЩФБ СЧМСАФУС мПОДПО, вБТУЕМПОБ, уБО иПУЕ, Й оША кПТЛ. еУМЙ ЧБН ЙЪЧЕУФОЩ ЧУЕ РТПДБЧГЩ ТБВПФБАЭЙЕ Ч ЛБЦДПН ЙЪ ЬФЙИ ЧЕДПНУФЧ, ОЕФ ОЕПВИПДЙНПУФЙ РПЪЧПМСФШ ЧЧПД ДТХЗЙИ ЪОБЮЕОЙК. еУМЙ ЦЕ ОЕФ, ЙУРПМШЪПЧБОЙЕ ПЗТБОЙЮЕОЙС НПЦЕФ РТЕДПФЧТБФЙФШ ПРЕЮБФЛЙ Й ДТХЗЙЕ ПЫЙВЛЙ. CREATE TABLE Salespeople (snum integer NOT NULL UNIQUE, sname char(10) NOT NULL UNIQUE, city char(10) CHECK, (city IN ('London', 'New York', 'San Jose', 'Barselona')), comm decimal CHECK (comm < 1 )); лПОЕЮОП, ЕУМЙ ЧЩ УПВЙТБЕФЕУШ УДЕМБФШ ЬФП, ЧЩ ДПМЦОЩ ВЩФШ ХЧЕТЕОЩ ЮФП ЧБЫБ ЛПНРБОЙС ОЕ ПФЛТЩМБ ХЦЕ ОПЧЩИ ДТХЗЙИ ЧЕДПНУФЧ УВЩФБ. вПМШЫЙОУФЧП РТПЗТБНН ВБЪ ДБООЩИ РПДДЕТЦЙЧБАФ ЛПНБОДХ ALTER TABLE( УН. зМБЧХ 17 ) ЛПФПТБС РПЪЧПМСЕФ ЧБН ЙЪНЕОСФШ ПРТЕДЕМЕОЙЕ ФБВМЙГЩ, ДБЦЕ ЛПЗДБ ПОБ ОБИПДЙФУС Ч ЙУРПМШЪПЧБОЙЙ. пДОБЛП, ЙЪНЕОЕОЙЕ ЙМЙ ХДБМЕОЙЕ ПЗТБОЙЮЕОЙК ОЕ ЧУЕЗДБ ЧПЪНПЦОП ДМС ЬФЙИ ЛПНБОД, ДБЦЕ ФБН ЗДЕ ЬФП ЧТПДЕ ВЩ РПДДЕТЦЙЧБЕФУС. еУМЙ ЧЩ ЙУРПМШЪПЧБМЙ УЙУФЕНХ ЛПФПТБС ОЕ НПЦЕФ ХДБМСФШ ПЗТБОЙЮЕОЙС, ЧЩ ВХДЕФЕ ДПМЦОЩ УПЪДБЧБФШ (CREATE) ОПЧХА ФБВМЙГХ Й РЕТЕДБЧБФШ ЙОЖПТНБГЙА ЙЪ УФБТПК ФБВМЙГЩ Ч ОЕЕ ЧУСЛЙК ТБЪ, ЛПЗДБ ЧЩ ИПФЙФЕ ЙЪНЕОЙФШ ПЗТБОЙЮЕОЙЕ. лПОЕЮОП ЦЕ чЩ ОЕ ЪБИПФЙФЕ ДЕМБФШ ЬФП ЮБУФП, Й УП ЧТЕНЕОЕН ЧППВЭЕ РЕТЕУФБОЕФЕ ЬФП ДЕМБФШ. уПЪДБДЙН ФБВМЙГХ рПТСДЛПЧ: CREATE TABLE Orders (onum integer NOT NULL UNIQUE, amt decimal, odate date NOT NULL, cnum integer NOT NULL, snum integer NOT NULL); лБЛ НЩ ХЦЕ ЗПЧПТЙМЙ Ч зМБЧЕ 2, ФЙР DATе(дбфб) ЫЙТПЛП РПДДЕТЦЙЧБЕФУС, ОП ОЕ СЧМСЕФУС ЮБУФША УФБОДБТФБ ANSI. юФП ЦЕ ДЕМБФШ ЕУМЙ НЩ ЙУРПМШЪХЕН ВБЪХ ДБООЩИ, ЛПФПТБС УМЕДХ ANSI, ОЕ ТБУРПЪОБЕФ ФЙР DATе? еУМЙ НЩ ПВЯСЧЙН РПМЕ odate МАВЩН ФЙРПН ЮЙУМБ, НЩ ОЕ УНПЦЕН ЙУРПМШЪПЧБФШ ОБЛМПООХА ЮЕТФХ ЧРТБЧП (/) ЙМЙ ЮЕТФПЮЛХ (-) Ч ЛБЮЕУФЧЕ ТБЪДЕМЙ- ФЕМ. фБЛ ЛБЛ РЕЮБФБЕНЩЕ ОПНЕТБ - ЬФП УЙНЧПМЩ ASCII, НЩ НПЦЕН ПВЯСЧЙФШ ФЙР РПМС date - CHAR. пУОПЧОБС РТПВМЕНБ Ч ФПН, ЮФП НЩ ВХДЕН ДПМЦОЩ ЙУРПМШЪПЧБФШ ПДЙОПЮОЩЕ ЛБЧЩЮЛЙ ЧУСЛЙК ТБЪ, ЛПЗДБ УУЩМБЕНУС ОБ ЪОБЮЕОЙЕ РПМ odate Ч ЪБРТПУЕ. оЕФ ВПМЕЕ РТПУФПЗП ТЕЫЕОЙС ЬФПК РТПВМЕНЩ ФБН ЗДЕ ФЙР DATе УФБМ ФБЛЙН РПРХМСТОЩН. ч ЛБЮЕУФЧЕ ЙММАУФТБГЙЙ, ДБЧБКФЕ ПВЯСЧЙН РПМЕ odate - ФЙРПН CHAR. нЩ НПЦЕН РП ЛТБК- ОЕК НЕТЕ ОБМПЦЙФШ ОБ ОЕЗП ОБЫ ЖПТНБФ У ПЗТБОЙЮЕОЙЕН CHECK: CREATE TABLE Orders ( onum integer NOT NULL UNIQUE, amt decimal, odate char (10) NOT NULL CHECK ( odate LIKE '--/--/----'), cnum NOT NULL, snum NOT NULL ); лТПНЕ ФПЗП, ЕУМЙ ЧЩ ИПФЙФЕ, ЧЩ НПЦЕФЕ ОБМПЦЙФШ ПЗТБОЙЮЕОЙЕ, ЗБТБОФЙТХАЭЙЕ ЮФП ЧЧЕДЕООЩЕ УЙНЧПМЩ - ЮЙУМБ, Й ЮФП ПОЙ - Ч РТЕДЕМБИ ЪОБЮЕОЙК ОБЫЕЗП ДЙБРБЪПОБ. ртпчетлб хумпчйк вбъйтхаэйкус об нопзпюйумеоощи рпмси чЩ НПЦЕФЕ ФБЛЦЕ ЙУРПМШЪПЧБФШ CHECK Ч ЛБЮЕУФЧЕ ФБВМЙЮОПЗП ПЗТБОЙЮЕОЙС. ьФП РПМЕЪОП Ч ФЕИ УМХЮБСИ ЛПЗДБ ЧЩ ИПФЙФЕ ЧЛМАЮЙФШ ВПМЕЕ ПДОПЗП РПМ УФТПЛЙ Ч ХУМПЧЙЕ. рТЕДРПМПЦЙН ЮФП ЛПНЙУУЙПООЩЕ .15 Й ЧЩЫЕ, ВХДХФ ТБЪ- ТЕЫЕОЩ ФПМШЛП ДМС РТПДБЧГБ ЙЪ вБТУЕМПОЩ. чЩ НПЦЕФЕ ХЛБЪБФШ ЬФП УП УМЕДХАЭЙН ФБВМЙЮОЩН ПЗТБОЙЮЕОЙЕН CHECK : CREATE TABLE Salespeople ( snum integer NOT NULL UNIQUE, sname char (10) NOT NULL UNIQUE, city char(10), comm decimal, CHECK (comm < .15 OR city = 'Barcelona')); лБЛ ЧЩ НПЦЕФЕ ЧЙДЕФШ, ДЧБ ТБЪМЙЮОЩИ РПМ ДПМЦОЩ ВЩФШ РТПЧЕТЕОЩ ЮФПВЩ ПРТЕДЕМЙФШ, ЧЕТЕО РТЕДЙЛБФ ЙМЙ ОЕФ. йНЕКФЕ Ч ЧЙДХ, ЮФП ЬФП - ДЧБ ТБЪОЩИ РПМ ПДОПК Й ФПК ЦЕ УФТПЛЙ. иПФС ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ НОПЗПЮЙУМЕООЩЕ РПМС, SQL ОЕ НПЦЕФ РТПЧЕТЙФШ ВПМЕЕ ПДОПК УФТПЛЙ ПДОПЧТЕНЕООП. чЩ ОЕ НПЦЕФЕ ОБРТЙНЕТ ЙУРПМШЪПЧБФШ ПЗТБОЙЮЕОЙЕ CHECK ЮФПВЩ ХДПУФПЧЕТЙФШУС ЮФП ЧУЕ ЛПНЙУУЙПООЩЕ Ч ДБООПН ЗПТПДЕ ПДЙОБЛПЧЩ. юФПВЩ УДЕМБФШ ЬФП, SQL ДПМЦЕО ЧУСЛЙК ТБЪ РТПУНБФТЙЧБС ДТХЗЙЕ УФТПЛЙ ФБВМЙГЩ, ЛПЗДБ ЧЩ НПДЙЖЙГЙТХЕФЕ ЙМЙ ЧУФБЧМСЕФЕ УФТПЛХ, ЧЙДЕФШ, ЮФП ЪОБЮЕОЙЕ ЛПНЙУУЙПООЩИ ХЛБЪБОП ДМС ФЕЛХЭЕЗП ЗПТПДБ. SQL ЬФПЗП ДЕМБФШ ОЕ ХНЕЕФ. жБЛФЙЮЕУЛЙ, ЧЩ НПЗМЙ ВЩ ЙУРПМШЪПЧБФШ УМПЦОПЕ ПЗТБОЙЮЕОЙЕ CHECK ДМС ЧЩЫЕХРПНСОХФПЗП, ЕУМЙ ВЩ ЪОБМЙ ЪБТБОЕЕ, ЛБЛПЧЩ ДПМЦОЩ ВЩФШ ЛПНЙУУЙПООЩЕ Ч ТБЪОЩИ ЗПТПДБИ. оБРТЙНЕТ, ЧЩ НПЗМЙ ВЩ ХУФБОПЧЙФШ ПЗТБОЙЮЕОЙЕ ФЙРБ ЬФПЗП: CHECK ( ( comm = .15 AND clty = 'London' ) OR ( comm = .14 AND city = 'Barcelona' ) OR ( comm = 11 AND city = 'San Jose').. ) чЩ РПМХЮЙМЙ ЙДЕА. юЕН ОБМБЗБФШ ФБЛПК ЛПНРМЕЛУ ПЗТБОЙЮЕОЙК, ЧЩ НПЗМЙ ВЩ РТПУФП ЙУРПМШЪПЧБФШ РТЕДУФБЧМЕОЙЕ У РТЕДМПЦЕОЙЕН WITH CHECK OPTION ЛПФПТПЕ ЙНЕЕФ ЧУЕ ЬФЙ ХУМПЧЙС Ч УЧПЕН РТЕДЙЛБФЕ ( УНПФТЙ зМБЧХ 20 Й 21 ДМС ЙОЖПТНБГЙЙ П РТЕДУФБЧМЕОЙЙ Й П WITH CHECK OPTION). рПМШЪПЧБФЕМЙ НПЗХФ ПВТБЭБФШУС Л РТЕДУФБЧМЕОЙА ФБВМЙГЩ ЧНЕУФП УБНПК ФБВМЙГЩ. пДОЙН ЙЪ РТЕЙНХЭЕУФЧ ЬФПЗП ВХДЕФ ФП, ЮФП РТПГЕДХТБ ЙЪНЕОЕОЙС Ч ПЗТБОЙЮЕОЙЙ ОЕ ВХДЕФ ФБЛПК ВПМЕЪОЕООПК ЙМЙ ФТХДПЕНЛПК. рТЕДУФБЧМЕОЙЕ У WITH CHECK OPTION - ИПТПЫЙК ЪБНЕОЙФЕМШ ПЗТБОЙЮЕОЙА CHECK, ЮФП ВХДЕФ РПЛБЪБОП Ч зМБЧЕ 21. хуфбопчлб ъобюеойк рп хнпмюбойа лПЗДБ ЧЩ ЧУФБЧМСЕФЕ УФТПЛХ Ч ФБВМЙГХ ВЕЪ ХЛБЪБОЙС ЪОБЮЕОЙК Ч ОЕК ДМС ЛБЦДПЗП РПМ, SQL ДПМЦЕО ЙНЕФШ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА ДМС ЧЛМАЮЕОЙС ЕЗП Ч ПРТЕДЕМЕООПЕ РПМЕ, ЙМЙ ЦЕ ЛПНБОДБ ВХДЕФ ПФЛМПОЕОБ. оБЙВПМЕЕ ПВЭЙН ЪОБЮЕОЙЕН РП ХНПМЮБОЙА СЧМСЕФУС - NULL. ьФП - ЪОБЮЕОЙЕ РП ХНПМЮБОЙА ДМС МАВПЗП УФПМВГБ, ЛПФПТПНХ ОЕ ВЩМП ДБОП ПЗТБОЙЮЕОЙЕ NOT NULL ЙМЙ ЛПФПТЩК ЙНЕМ ДТХЗПЕ ОБЪОБЮЕОЙЕ РП ХНПМЮБОЙА. ъОБЮЕОЙЕ DEFAULT(рп хнпмюбойа) ХЛБЪЩЧБЕФУС Ч ЛПНБОДЕ CREATE TABLE ФЕН ЦЕ УРПУПВПН ЮФП Й ПЗТБОЙЮЕОЙЕ УФПМВГБ, ИПФС, У ФЕИОЙЮЕУЛПК ФПЮЛЙ ЪТЕОЙС, ЪОБЮЕОЙЕ DEFAULT ОЕ ПЗТБОЙЮЙФЕМШОПЗП УЧПКУФЧБ - ПОП ОЕ ПЗТБОЙЮЙЧБЕФ ЪОБЮЕОЙС ЛПФПТЩЕ ЧЩ НПЦЕФЕ ЧЧПДЙФШ, Б РТПУФП ПРТЕДЕМСЕФ, ЮФП НПЦЕФ УМХЮЙФШУС ЕУМЙ ЧЩ ОЕ ЧЧЕДЕФЕ МАВПЕ ЙЪ ОЙИ. рТЕДРПМПЦЙН ЮФП ЧЩ ТБВПФБЕФЕ Ч ПЖЖЙУЕ оША кПТЛБ Й РПДБЧМСАЭЕЕ ВПМШЫЙОУФЧП ЧБЫЙИ РТПДБЧГПЧ ЦЙЧХФ Ч оША кПТЛЕ. чЩ НПЦЕФЕ ХЛБЪБФШ оША кПТЛ Ч ЛБЮЕУФЧЕ ЪОБЮЕОЙС РПМ city, РП ХНПМЮБОЙА, ДМС ЧБЫЕК ФБВМЙГЩ рТПДБЧГПЧ: CREATE TABLE Salespeople ( snum integer NOT NULL UNIQUE, sname char(10) NOT NULL UNIQUE, city char(10) DEFAULT = 'New York', comm decimal CHECK (comm < 1); лПОЕЮОП, ЧЧПДЙФШ ЪОБЮЕОЙЕ оША кПТЛ Ч ФБВМЙГХ ЛБЦДЩК ТБЪ ЛПЗДБ ОБЪОБЮБЕФУС ОПЧЩК РТПДБЧЕГ, ОЕ ФБЛБС ХЦ ОЕПВИПДЙНПУФШ, Й НПЦОП РТПУФП РТЕОЕВТЕЮШ ЙН ( ОЕ ЧЧПД ЕЗП ) ДБЦЕ ЕУМЙ ПОП ДПМЦОП ЙНЕФШ ОЕЛПФПТПЕ ЪОБЮЕОЙЕ. ъОБЮЕОЙЕ РП ХНПМЮБОЙА ФБЛПЗП ФЙРБ, ВПМЕЕ РТЕДРПЮФЙФЕМШОП, ЮЕН, ОБРТЙНЕТ, ДМЙООЩК ЛПОФПТУЛЙК ОПНЕТ ХЛБЪЩЧБАЭЙК ОБ ЧБЫЕ УПВУФЧЕООПЕ ЧЕДПНУФЧП, Ч ФБВМЙГЕ рПТСДЛПЧ. дМЙООЩЕ ЮЙУМПЧЩЕ ЪОБЮЕОЙС - ВПМЕЕ ТБУРПМПЦЕОЩ Л ПЫЙВЛЕ, РПЬФПНХ ЕУМЙ РПДБЧМСАЭЕЕ ВПМШЫЙОУФЧП ( ЙМЙ ЧУЕ ) ЧБЫЙИ РПТСДЛПЧ ДПМЦОЩ ЙНЕФШ ЧБЫ УПВУФЧЕООЩК ЛПОФПТУЛЙК ОПНЕТ, ЦЕМБФЕМШОП ХУФБОБЧМЙЧБФШ ДМС ОЙИ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА. дТХЗПК УРПУПВ ЙУРПМШЪПЧБФШ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА - ЬФП ЙУРПМШЪПЧБФШ ЕЗП ЛБЛ БМШФЕТОБФЙЧХ ДМС NULL. фБЛ ЛБЛ NULL (ЖБЛФЙЮЕУЛЙ) ОЕЧЕТЕО РТЙ МАВПН УТБЧОЕОЙЙ, ЙОПН ЮЕН IS NULL, ПО НПЦЕФ ВЩФШ ЙУЛМАЮЕО У РПНПЭША ВПМШЫЙОУФЧБ РТЕДЙЛБФПЧ. йОПЗДБ, ЧБН ОХЦОП ЧЙДЕФШ РХУФЩЕ ЪОБЮЕОЙС ЧБЫЙИ РПМЕК ОЕ ПВТБВБФЩЧБС ЙИ ЛБЛЙН-ФП ПРТЕДЕМЕООЩН ПВТБЪПН. чЩ НПЦЕФЕ ХУФБОПЧЙФШ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА, ФЙРБ ОХМШ ЙМЙ РТПВЕМ, ЛПФПТЩЕ ЖХОЛГЙПОБМШОП НЕОШЫЕ РП ЪОБЮЕОЙА ЮЕН РТПУФП ОЕ ХУФБОПЧМЕООПЕ ЪОБЮЕОЙЕ - РХУФПЕ ЪОБЮЕОЙЕ(NULL). тБЪМЙЮЙЕ НЕЦДХ ОЙНЙ Й ПВЩЮОЩН NULL Ч ФПН, ЮФП SQL ВХДЕФ ПВТБВБФЩЧБФШ ЙИ ФБЛЦЕ ЛБЛ Й МАВПЕ ДТХЗПЕ ЪОБЮЕОЙЕ. рТЕДРПМПЦЙН, ЮФП ЪБЛБЪЮЙЛБН ОЕ ОБЪОБЮЕОЩ ПГЕОЛЙ ЙЪОБЮБМШОП. лБЦДЩЕ ЫЕУФШ НЕУСГЕЧ, ЧЩ РПЧЩЫБЕФЕ ПГЕОЛХ ЧУЕН ЧБЫЙН ЪБЛБЪЮЙЛБН, ЙНЕАЭЙН ПГЕОЛХ ОЙЦЕ УТЕДОЕК, ЧЛМАЮБС Й ФЕИ ЛФП РТЕДЧБТЙФЕМШОП ОЕ ЙНЕМ ОЙЛБЛПЗП ОБЪОБЮЕОЙС ПГЕОЛЙ. еУМЙ ЧЩ ИПФЙФЕ ЧЩВТБФШ ЧУЕИ ЬФЙИ ЪБЛБЪЮЙЛПЧ ЛБЛ ЗТХРРХ, УМЕДХАЭЙК ЪБРТПУ ЙУЛМАЮЙФ ЧУЕИ ЪБЛБЪЮЙЛПЧ У ПГЕОЛПК = NULL: SELECT * FROM Customers WHERE rating < = 100; пДОБЛП, ЕУМЙ ЧЩ ОБЪОБЮЙМЙ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА = 000, Ч РПМЕ rating, ЪБЛБЪЮЙЛЙ ВЕЪ ПГЕОПЛ ВХДХФ ЧЩВТБОЩ ОБТСДХ У ДТХЗЙНЙ. рТЙПТЙФЕФ ЛБЦДПЗП НЕФПДБ - ЪБЧЙУЙФ ПФ УЙФХБГЙЙ. еУМЙ ЧЩ ВХДЕФЕ ДЕМБФШ ЪБРТПУ У РПНПЭША РПМ ПГЕОЛЙ, ФП ЪБИПФЙФЕ МЙ чЩ ЧЛМАЮЙФШ УФТПЛЙ ВЕЪ ЪОБЮЕОЙК, ЙМЙ ЙУЛМАЮЙФЕ ЙИ? дТХЗБ ИБТБЛФЕТЙУФЙЛБ ЪОБЮЕОЙК РП ХНПМЮБОЙА ЬФПЗП ФЙРБ, РПЪЧПМЙФ ПВЯСЧЙФШ чБН РПМЕ ПГЕОЛЙ - ЛБЛ NOT NULL. еУМЙ ЧЩ ЙУРПМШЪХЕФЕ ЕЗП РП ХНПМЮБОЙА, ЮФПВЩ ЙЪВЕЦБФШ ЪОБЮЕОЙК = NULL, ФП ЬФП - ЧЕТПСФОП ИПТПЫБ ЪБЭЙФБ ПФ ПЫЙВПЛ. чЩ НПЦЕФЕ ФБЛЦЕ ЙУРПМШЪПЧБФШ ПЗТБОЙЮЕОЙС UNIQUE ЙМЙ PRIMARY KEY Ч ЬФПН РПМЕ. еУМЙ ЧЩ УДЕМБЕФЕ ЬФП, ФП, ЙНЕЕФЕ Ч ЧЙДХ, ЮФП ФПМШЛП ПДОБ УФТПЛБ ПДОПЧТЕНЕООП НПЦЕФ ЙНЕФШ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА. мАВХА УФТПЛХ ЛПФПТБС УПДЕТЦЙФ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА ОХЦОП ВХДЕФ НПДЙЖЙГЙТПЧБФШ РТЕЦДЕ, ЮЕН ДТХЗБ УФТПЛБ У ХУФБОПЧЛПК РП ХНПМЮБОЙА ВХДЕФ ЧУФБЧМЕОБ. ьФП ОЕ ФБЛ ЛБЛ ЧЩ ПВЩЮОП ЙУРПМШЪХЕФЕ ЪОБЮЕОЙС РП ХНПМЮБОЙА, РПЬФПНХ ПЗТБОЙЮЕОЙС UNIQUE Й PRIMARY KEY ( ПУПВЕООП РПУМЕДОЕЕ ) ПВЩЮОП ОЕ ХУФБОБЧМЙЧБАФУС ДМС УФТПЛ УП ЪОБЮЕОЙСНЙ РП ХНПМЮБОЙА. теъане чЩ ФЕРЕТШ ЧМБДЕЕФЕ ОЕУЛПМШЛЙНЙ УРПУПВБНЙ ХРТБЧМЕОЙС ЪОБЮЕОЙСНЙ ЛПФПТЩЕ НПЗХФ ВЩФШ ЧЧЕДЕОЩ Ч ЧБЫЙ ФБВМЙГЩ. чЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ ПЗТБОЙЮЕОЙЕ NOT NULL ЮФПВЩ ЙУЛМАЮБФШ NULL, ПЗТБОЙЮЕОЙЕ UNIQUE ЮФПВЩ ЧЩОХЦДБФШ ЧУЕ ЪОБЮЕОЙС Ч ЗТХРРЕ ЙЪ ПДОПЗП ЙМЙ ВПМЕЕ УФПМВГПЧ ПФМЙЮБФШУС ДТХЗ ПФ ДТХЗБ, ПЗТБОЙЮЕОЙЕ PRIMARY KEY, ДМС ФПЗП ЮФПВЩ ДЕМБФШ Ч ПУОПЧОПН ФП ЦЕ УБНПЕ ЮФП Й UNIQUE ОП У ТБЪМЙЮОЩН ПЛПОЮБОЙЕН, Й ОБЛПОЕГ ПЗТБОЙЮЕОЙЕ CHECK ДМС ПРТЕДЕМЕОЙС ЧБЫЙИ УПВУФЧЕООЩИ УДЕМБООЩИ ОБ ЪБЛБЪ ХУМПЧЙК, ЮФПВЩ ЪОБЮЕОЙС ЧУФТЕЮЕООЩЕ РЕТЕД ОЙНЙ НПЗМЙ ВЩ ВЩФШ ЧЧЕДЕОЩ. лТПНЕ ФПЗП, ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ РТЕДМПЦЕОЙЕ DEFAULT, ЛПФПТПЕ ВХДЕФ БЧФПНБФЙЮЕУЛЙ ЧУФБЧМСФШ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА Ч МАВПЕ РПМЕ У ЙНЕОЕН ОЕ ХЛБЪБООЩН Ч INSERT, ФБЛ ЦЕ ЛБЛ ЧУФБЧМСЕФУС ЪОБЮЕОЙЕ NULL ЛПЗДБ РТЕДМПЦЕОЙЕ DEFAULT ОЕ ХУФБОПЧМЕОП Й ПФУХФУФЧХЕФ ПЗТБОЙЮЕОЙЕ NOT NULL. FOREIGN KEY ЙМЙ REFERENCES ПЗТБОЙЮЕОЙС П ЛПФПТЩИ ЧЩ ХЪОБЕФЕ Ч зМБЧЕ 19 ПЮЕОШ РПИПЦЙ ОБ ОЙИ, ЪБ ЙУЛМАЮЕОЙЕН ФПЗП, ЮФП ПОЙ УЧСЪЩЧБАФ ЗТХРРХ ЙЪ ПДОПЗП ЙМЙ ВПМЕЕ РПМЕК У ДТХЗПК ЗТХРРПК, Й ФБЛЙН ПВТБЪПН УТБЪХ ЧПЪДЕКУФЧХАФ ОБ ЪОБЮЕОЙС ЛПФПТЩЕ НПЗХФ ВЩФШ ЧЧЕДЕОЩ Ч МАВХА ЙЪ ЬФЙИ ЗТХРР. тбвпфб у SQL 1. уПЪДБКФЕ ФБВМЙГХ рПТСДЛПЧ ФБЛ ЮФПВЩ ЧУЕ ЪОБЮЕОЙС РПМ onum, Б ФБЛЦЕ ЧУЕ ЛПНВЙОБГЙЙ РПМЕК cnum Й snum ПФМЙЮБМЙУШ ДТХЗ ПФ ДТХЗБ, Й ФБЛ ЮФП ВЩ ЪОБЮЕОЙС NULL ЙУЛМАЮБМЙУШ ЙЪ РПМС ДБФЩ. 2. уПЪДБКФЕ ФБВМЙГХ рТПДБЧГПЧ ФБЛ ЮФПВЩ ЛПНЙУУЙПООЩЕ, РП ХНПМЮБОЙА, УПУФБЧМСМЙ 10%, ОЕ ТБЪТЕЫБМЙУШ ЪОБЮЕОЙС NULL, ЮФПВЩ РПМЕ snum СЧМСМПУШ РЕТЧЙЮОЩН ЛМАЮПН, Й ЮФПВЩ ЧУЕ ЙНЕОБ ВЩМЙ Ч БМЖБЧЙФОПН РПТСДЛЕ НЕЦДХ A Й M ЧЛМАЮЙФЕМШОП( ХЮЙФЩЧБС, ЮФП ЧУЕ ЙНЕОБ ВХДХФ ОБРЕЮБФБОЩ Ч ЧЕТИОЕН ТЕЗЙУФТЕ ). 3. уПЪДБКФЕ ФБВМЙГХ рПТСДЛПЧ, ВХДХЮЙ ХЧЕТЕООЩНЙ Ч ФПН ЮФП РПМЕ onum ВПМШЫЕ ЮЕН РПМЕ cnum, Б cnum ВПМШЫЕ ЮЕН snum. ъБРТЕЭЕОЩ ЪОБЮЕОЙС NULL Ч МАВПН ЙЪ ЬФЙИ ФТЕИ РПМЕК. ( уН. рТЙМПЦЕОЙЕ A ДМС ПФЧЕФПЧ. )

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