МиСКЛ – Како уметнути нови ред само ако подаци не постоје

Miskl Kako Umetnuti Novi Red Samo Ako Podaci Ne Postoje



МиСКЛ је познати РДБМС отвореног кода за складиштење података у базама података. Уметање података у табеле ваше базе података је уобичајен задатак. Понекад корисници не желе да убацују дуплиране податке како би елиминисали редундантност. МиСКЛ омогућава корисницима да убаце податке само ако слични подаци већ не постоје.

Овај пост ће расправљати о уметању новог реда само ако подаци већ не постоје у МиСКЛ табели. Пре него што почнете са овом објавом, уверите се да сте пријављени на свој МиСКЛ локални сервер и да сте изабрали базу података у којој желите да радите.

Уметните нови ред само ако подаци не постоје помоћу изјаве „ИНСЕРТ ИГНОРЕ“.

Па, одговор на питање из наслова је прилично једноставан и јасан. Једноставно користите „ ИНСЕРТ ” кључна реч заједно са „ ИГНОРЕ ” Кључна реч. Ово ће осигурати да се нови подаци или упит за уметање извршавају само када ниједан претходни унос података није пронађен у МиСКЛ-у. Да бисте добили кратак преглед овога, погледајте следећу синтаксу:







ИНСЕРТ ИГНОРЕ У [ сто - име ] ( [ колона1 - име ] , [ колона2 - име ] , [ колона3 - име ] ) ВРЕДНОСТИ ( [ вредност1 ] , [ вредност2 ] , [ вредност3 ] ) ;

Погледајмо пример ако корисник жели да унесе вредност реда „ 1 ”, “ Јохн ' и ' Дое ” у „ Цустомер ” табела за колоне “ Ид ,” “ Име ' и ' Презиме ' редом. Покрените овај упит да бисте уметнули ове вредности ако их има ако већ не постоји ред са овим вредностима:



СЕЛЕЦТ * ИЗ Купац;
ИНСЕРТ ИГНОРЕ У Цустомер ( Ид , Име , Презиме ) ВРЕДНОСТИ ( 1 , 'Јован' , 'срна' ) ;

Излаз садржи две табеле које приказују податке табеле пре и после извршавања упита. Можете приметити да се ништа не мења у табели јер је ред већ постојао тако да је МиСКЛ успешно игнорисао процес уметања без приказа грешке:







Уметните нови ред само ако подаци не постоје користећи клаузулу „ГДЕ НЕ ПОСТОЈИ“

У МиСКЛ-у, „ ГДЕ НЕ ПОСТОЈИ ” клаузула спречава уметање редова ако већ постоје у табели када се користи у „ ИНСЕРТ ИНТО ” израз са потупитом за дефинисање услова. Када се ова клаузула користи са потупитом „ (СЕЛЕЦТ * ФРОМ [име-табеле] [име-колоне]=[израз]); ” проверава да ли у табели постоји ред који испуњава услов. Ако постоји ред, „ ГДЈЕ НЕ ПОСТОЈИ ” клаузула ће вратити лажну вредност, а „ СЕЛЕЦТ ” израз неће вратити ниједан ред. Као резултат, ред неће бити уметнут у табелу. Синтакса је дата у наставку:

ИНСЕРТ У [ сто - име ] ( [ колона1 - име ] , [ колона2 - име ] , [ колона3 - име ] )
СЕЛЕЦТ [ вредност1 ] , [ вредност2 ] , [ вредност3 ]
ГДЕ НЕ ПОСТОЈИ ( СЕЛЕЦТ * ИЗ [ сто - име ] [ колона - име ] = [ израз ] ) ;

Хајде да видимо пример ако корисник жели да убаци ред у табелу запослених који садржи вредности „ 1 ”, “ Американац ' и ' Хенриот “ у колонама “ ид ”, “ Име компаније ' и ' Контакт Име ' редом. Али само ако је ред са ИД-ом „ 1 ” се не налази у табели или не постоји. У том конкретном случају, упит ће бити:



СЕЛЕЦТ * ИЗ запослени;

ИНСЕРТ У запослени ( ид , Име компаније , Контакт Име )
СЕЛЕЦТ 1 , 'Американац' , 'Хенриот'
ГДЕ НЕ ПОСТОЈИ ( СЕЛЕЦТ * ИЗ запослени ГДЕ ид = 1 ) ;

Излаз приказује нови ред који није уметнут као ред са „ ид ' једнако ' 1 ” је већ постојао.

Уметните нови ред само ако подаци не постоје користећи клаузулу „ОН ДУПЛИкат КЉУЧА АЖУРИРАЊЕ“

Па, други начин је да користите „ НА АЖУРИРАЊЕ ДУПЛИКАТА КЉУЧА ” клаузула у МиСКЛ. Пошто ће се ова клаузула користити са упитом „ИНСЕРТ ИНТО“ који формира „иф-елсе“ извршење. То значи да ће подаци унутар табеле бити ажурирани само ако су јединствени. У супротном, до промене не би дошло. Општа синтакса за ово је следећа:

ИНСЕРТ У [ сто - име ] ( [ колона1 - име ] , [ колона2 - име ] , [ колона3 - име ] ) ВРЕДНОСТИ ( [ вредност1 ] , [ вредност2 ] , [ вредност3 ] )
НА ДУПЛИЦАТЕ КЉУЧ АЖУРИРАЊЕ [ колона1 - име ] = [ колона1 - име ] ;

Хајде да видимо пример, да убацимо вредности у „ 2 ”, “ Пасцале ”, “ Никон ”, “ Лондон ”, “ УК ' и “(171) 555-7788 ' у табели ' Цустомер “ за колоне “ Ид ”, “ Име ”, “ Презиме ”, “ град ”, “ земља ' и ' телефон ' редом. Ако ред већ не постоји, биће уметнут. У супротном, ажурираће вредности где је „ Ид=Ид ” услов испуњава. Покрените овај упит:

СЕЛЕЦТ * ИЗ Цустомер ;
ИНСЕРТ У Цустомер ( Ид , Име , Презиме , град , земља , телефон )
ВРЕДНОСТИ ( 2 , 'Пасцале' , 'Никон' , 'Лондон' , 'УК' , '(171) 555-7788' )
НА ДУПЛИЦАТЕ КЉУЧ АЖУРИРАЊЕ Ид = Ид;

Ово је табела пре покретања упита, можете видети „ Ид ' једнако ' 2 ' не постоји:

Након покретања упита, овај упит ће уметнути нове редове у табелу:

Успешно сте убацили нови ред, пошто подаци не постоје пре покретања упита.

Закључак

У МиСКЛ, уметните нови ред само ако подаци већ не постоје користећи „ ИНСЕРТ ИГНОРЕ ” изјава или “ ГДЈЕ НЕ ПОСТОЈИ “ клаузула у “ ИНСЕРТ ИНТО ' изјава. Други начин да се то уради је коришћење „ НА АЖУРИРАЊЕ ДУПЛИКАТА КЉУЧА “ клаузула у “ ИНСЕРТ ИНТО ” за ажурирање ако ред већ постоји. У супротном, додајте нови ред. У посту се говорило о томе како уметнути нови ред само ако подаци не постоје.