СКЛите ИНСЕРТ, УПДАТЕ, ДЕЛЕТЕ упит са примером

Преглед садржаја:

Anonim

Клаузуле о модификацији података у СКЛитеу су изрази ИНСЕРТ, УПДАТЕ и ДЕЛЕТЕ. Користи се за уметање нових редова, ажурирање постојећих вредности или брисање редова из базе података.

У овом упутству ћете научити-

  • ИНСЕРТ
  • ажурирање
  • Избриши
  • Клаузула о сукобу

Имајте на уму да за све следеће примере морате покренути склите3.еке и отворити везу са узором базе података као текућу:

Корак 1) У овом кораку,

  1. Отворите Мој рачунар и идите до следећег директоријума " Ц: \ склите " и
  2. Затим отворите " склите3.еке ":

Корак 2) Отворите базу података " ТуториалсСамплеДБ.дб " следећом командом:

.опен ТуториалсСамплеДБ.дб

Сада сте спремни за покретање било које врсте упита у бази података.

СКЛите ИНСЕРТ

СКЛите ИНСЕРТ се користи за уметање записа у одређену табелу базе података. морате користити клаузулу 'ИНСЕРТ'. Синтакса клаузуле ИНСЕРТ је следећа:

  • Након клаузуле ИНСЕРТ, требали бисте навести у коју табелу треба да уметнете вредности.
  • После имена табеле у коју напишете листу колона, желите да уметнете вредности у.
  • Можете занемарити име колона и не писати им.
  • Ако не напишете име колона, вредности ће бити уметнуте у све колоне пронађене у табели истим редоследом, колоне су дефинисане у табели.
  • Након клаузуле ВАЛУЕС, требали бисте навести вредности које треба убацити.
  • Свака клаузула ИНСЕРТ убацује само један ред. Ако желите да уметнете више редова, требало би да напишете више клаузула ИНСЕРТ, по једну за сваки ред.

Пример уметања СКЛите-а

У следећем примеру ћемо у табелу ученика уметнути 2 реда, по један за сваког ученика:

ИНСЕРТ ИНТО Студентс (СтудентИд, СтудентНаме, ДепартментИд, ДатеОфБиртх)ВРЕДНОСТИ (11, 'Ахмад', 4, '1997-10-12');УМЕСТИ У ВРЕДНОСТИ ученика (12, 'Али', 4, '1996-10-12');

Ово би требало успешно да се покрене и за то нема резултата:

Ово ће уметнути два ученика:

  • Први студент са СтудентИд = 11, СтудентНаме = Ахмад, ДепартментИд = 4 и ДатеОфБиртх = 1997-10-12.
  • Други студент са СтудентИд = 12, СтудентНаме = Али, ДепартментИд = 4 и ДатеОфБиртх = 1996-10-12 '.

У првој изјави навели смо имена колона „ СтудентИд, СтудентНаме, ДепартментИд, ДатеОфБиртх “. Међутим, у другој изјави нисмо.

Четири вредности " 12, 'Али', 4, '1996-10-12' " биће уметнуте у све четири колоне табеле Студенти истим редоследом у којем су дефинисане колоне.

Сада, хајде да проверимо да ли су два ученика убачена у табелу Студенти покретањем следећег упита:

СЕЛЕЦТ * ФРОМ Студенти;

Тада бисте требали видети два ученика која су се вратила из тог упита на следећи начин:

СКЛите Упдате

СКЛите УПДАТЕ Упит се користи за модификовање постојећих записа у табели. Можете користити клаузулу ВХЕРЕ са УПДАТЕ упитом за ажурирање изабраних редова. Клаузула УПДАТЕ ажурира табелу променом вредности за одређени ступац. Следи синтакса клаузуле УПДАТЕ:

Гласи:

  • Након „клаузуле ажурирања“, требали бисте написати име табеле за ажурирање.
  • Морате да напишете „клаузулу СЕТ“ која се користи за писање имена колоне за ажурирање и вредности коју треба ажурирати.
  • Можете да ажурирате више колона. Између сваког ретка можете користити зарез.
  • Можете одредити клаузулу ВХЕРЕ да бисте навели само неке редове. Ажурирају се само редови које израз вреднује као тачно. Ако нисте навели клаузулу ВХЕРЕ, сви редови ће бити ажурирани.

Пример ажурирања СКЛите-а

У следећој изјави УПДАТЕ ажурираћемо одељење за студента са СтудентИд = 6 на 3:

АЖУРИРАЊЕ СтудентиСЕТ ДепартментИд = 3ГДЕ СтудентИд = 6;

Ово би требало успешно да се изводи и не бисте требали добијати излаз:

У клаузули УПДАТЕ навели смо да желимо да ажурирамо табелу Студенти.

  • У клаузули ВХЕРЕ филтрирали смо све ученике да би изабрали само ред за СтудентИд = 6.
  • Клаузула СЕТ ће ажурирати вредност Ид одељења за изабране студенте на 3.

Сада, хајде да проверимо да ли је студент са ИД-ом 6 ажуриран, покретањем следеће команде:

СЕЛЕЦТ * ФРОМ Студенти ВХЕРЕ СтудентИд = 6;

Сада бисте требали да видите да је вредност Ид одељења сада 3 како следи:

СКЛите Делете

СКЛите ДЕЛЕТЕ упит се користи за уклањање постојећих записа из наведене табеле. Можете користити клаузулу ВХЕРЕ са упитима ДЕЛЕТЕ да бисте избрисали изабране редове.

Клаузула ДЕЛЕТЕ има следећу синтаксу:

  • Морате написати име табеле након клаузуле ДЕЛЕТЕ ФРОМ, из које желите да избришете записе. ( Напомена: да ДЕЛЕТЕ клаузула . Користи се за брисање неке податке из табеле или избрисати све податке и неће избрисати саму сто Међутим, КАП клаузула се користи за брисање целу табелу са свим подацима о њему. )
  • Ако клаузулу ДЕЛЕТЕ напишете овако „ДЕЛЕТЕ ФРОМ гуру“, ово ће избрисати све записе из табеле „гуру“.
  • Можете изразом ВХЕРЕ одредити израз ако желите да избришете неке одређене редове. Биће избрисани само редови за које израз вреднује као тачно. На пример, „ИЗбриши са гуруа ГДЕ ид> 5“ - ово ће избрисати само записе који имају ид већи од 5.

Пример

У следећој изјави избрисаћемо два ученика са СтудентИд 11 и 12:

ОБРИШИ ОД ученика ГДЕ је СтудентИд = 11 ИЛИ СтудентИд = 12;

Израз " СтудентИд = 11 ИЛИ СтудентИд = 12 " биће тачан само за студенте са ИД-овима 11 и 12. Дакле, клаузула ДЕЛЕТЕ примењиваће се на обоје и само ће их избрисати.

Ова наредба би се требала успјешно покренути и не бисте требали добијати излаз као што слиједи:

Можете потврдити да су два ученика избрисана одабиром свих записа из табеле Студенти на следећи начин:

СЕЛЕЦТ * ФРОМ Студенти;

Не бисте требали видети двоје ученика са ИД-овима 11 и 12 на следећи начин:

Клаузула о СКЛите сукобу

Претпоставимо да имате колону која има једно од следећих ограничења колоне: УНИКУЕ, НОТ НУЛЛ, ЦХЕЦК или ПРИМАРИ КЕИ. А онда сте покушали да уметнете или ажурирате вредност у ту колону са вредношћу која је у сукобу са овим ограничењем.

На пример, ако колона има ограничење УНИКУЕ и покушали сте да уметнете вредност која већ постоји (дупликата вредности), што је у сукобу са ограничењем УНИКУЕ. Тада вам клаузула ЦОНФЛИЦТ омогућава да изаберете шта ћете радити у таквим случајевима да бисте решили овај сукоб.

Пре него што наставимо да објашњавамо како клаузула ЦОНФЛИЦТ решава сукоб. Требали бисте разумјети шта је трансакција базе података.

Трансакција базе података:

Појам трансакција базе података је листа СКЛите операција (уметање, ажурирање или брисање). Трансакција базе података мора се извршити као једна јединица, било да су све операције успјешно изведене или уопће нису. Све операције ће бити отказане ако једна од њих није успела да се изврши.

Пример трансакције базе података:

Трансакција за пренос новца са једног банковног рачуна на други подразумеваће неколико активности. Ова трансакциона операција укључује повлачење новца са првог рачуна и његово полагање на други рачун. Ова трансакција мора бити у потпуности завршена или у потпуности отказана и не сме пропасти на пола пута.

Ево листе од пет резолуција које можете одабрати у клаузули ЦОНФЛИЦТ:

  1. РОЛЛБАЦК - ово ће повратити трансакцију у којој је тренутни СКЛите израз који има сукоб (поништиће целу трансакцију). На пример, ако покушавате да ажурирате 10 редова, а пети ред има вредност која се сукобљава са ограничењем, тада ниједан ред неће бити ажуриран, 10 редова ће остати исти. Избациће се грешка.
  2. ПРЕКИНИ - ово ће прекинути (отказати) тренутни СКЛите израз само у сукобу и трансакција неће бити отказана. На пример, ако покушавате да ажурирате 10 редова, а пети ред има вредност која се сукобљава са ограничењем, тада се неће ажурирати само пета вредност, већ ће се ажурирати осталих 9 редова. Избациће се грешка.
  3. ФАИЛ - прекида тренутни СКЛите израз који има сукоб. Међутим, трансакција се неће наставити, али ће се извршити претходне промене извршене у редовима пре реда који има сукоб. На пример, ако покушавате да ажурирате 10 редова, а пети ред има вредност која се сукобљава са ограничењем, тада ће се ажурирати само 4, а други неће. Избациће се грешка.
  1. ИГНОРЕ - ово ће прескочити ред који садржи кршење ограничења и наставити обрађивати остале наредне редове СКЛите израза. На пример, ако покушавате да ажурирате 10 редова, а пети ред има вредност која се сукобљава са ограничењем, тада ће се ажурирати само 4, а други неће. Неће даље наставити да ажурира друге редове и зауставити се на реду који има вредност сукоба. Ниједна грешка неће бити избачена.
  1. ЗАМЕНА - зависи од врсте ограничења које има кршење:
  • Када постоји кршење ограничења за УНИКАТНО или ПРИМАРНО КЉУЧНО ограничење. ЗАМЕНА ће заменити ред који узрокује кршење новим уметнутим или ажурираним редом.
  • Када постоји повреда ограничења НОТ НУЛЛ, клаузула РЕПЛАЦЕ ће заменити НУЛЛ вредност подразумеваном вредношћу те колоне. Ако колона нема подразумевану вредност, тада ће СКЛите прекинути израз (израз ће бити отказан)
  • АКО СЕ догоди кршење ограничења ЦХЕЦК, клаузула ће бити поништена.

Напомена: Горњих 5 резолуција су опције како желите да решите сукоб. Можда није неопходно оно што је применљиво за решавање једног сукоба применљиво и за решавање других врста сукоба.

Како се декларише клаузула ЦОНФЛИЦТ

Клаузулу ОН ЦОНФЛИЦТ можете прогласити када дефинирате ограничење за дефиницију ступца унутар клаузуле ЦРЕАТЕ ТАБЛЕ. Користећи следећу синтаксу:

Можете одабрати једну од пет резолуција за решавање сукоба како је претходно објашњено.

О СУКОБУ ИГНОРЕ Пример

Корак 1) Направите нову тему табеле на следећи начин:

СТВОРИ ТАБЕЛУ [Предмети] ([СубјецтИд] ИНТЕГЕР НИЈЕ ПОРУЧНИ ПРИМАРНИ КЉУЧ КОНФЛИКТНОГ ИГНОРА,[СубјецтНаме] НВАРЦХАР НИЈЕ НУЛЛ); 

Приметите да смо дефинисали ограничење ПРИМАРНОГ КЉУЧА на колони СубјецтИд. Ограничење примарног кључа не дозвољава уметање две дуплиране вредности у колону СубјецтИд, тако да би све вредности у тој колони морале бити јединствене. Такође, имајте на уму да смо решење за сукоб изабрали за „ ИГНОРЕ “.

Команда би требало да се успешно изводи и не бисте смели да добијате грешке:

Корак 2) Убацимо неке вредности у нове предмете табеле, али са вредношћу која крши ограничење примарног кључа:

ИНСЕРТ ИНТО Субјецтс ВАЛУЕС (1, 'Алгебра');ИНСЕРТ ИНТО Субјецтс ВАЛУЕС (2, 'Курс базе података');ИНСЕРТ ИНТО Субјецтс ВАЛУЕС (2, 'Структуре података');ИНСЕРТ ИНТО Субјецтс ВАЛУЕС (4, 'Алгоритхмс');

У ову ИНСЕРТ изјаву покушали смо да убацимо два курса са истим ИД-ом предмета примарног кључа 2, што представља кршење ограничења примарног кључа.

Команде би требало да се извршавају у реду и не бисте смели да добијате грешке. Гласи:

Корак 3) Изаберите све предмете из табеле на следећи начин:

СЕЛЕЦТ * ФРОМ Субјецтс;

Ово ће вам дати списак предмета:

Приметите да су уместо 4 реда уметнута само три предмета „ Алгебра, курс базе података и алгоритми “.

Ред који има вредност која крши ограничење примарног кључа, а то је „Структуре података“, игнорисан је и није убачен. Међутим, СКЛите наставља извршавати друге изразе након тог реда.

Корак 4) ИЗБРИШИТЕ предмете табеле да бисте их поново креирали са другом клаузулом ОН ЦОНФЛИЦТ за следећи пример покретањем следеће наредбе:

ТАБЛА ЗА КАПАЊЕ Предмети; 

Команда дроп брише целу табелу. Предмети табеле сада не постоје.

О ЗАМЕНИ СУКОБА Пример

Корак 1) Направите нову тему табеле на следећи начин:

СТВОРИ ТАБЕЛУ [Предмети] ([СубјецтИд] ИНТЕГРИРАНИ НИЈЕЛИ ПРИМАРНИ КЉУЧ ЗАМЕНЕ КОНФЛИКТА,[СубјецтНаме] НВАРЦХАР НИЈЕ НУЛЛ); 

Приметите да смо дефинисали ограничење ПРИМАРНОГ КЉУЧА на колони СубјецтИд. Ограничење примарног кључа не дозвољава уметање две дуплиране вредности у колону СубјецтИд, тако да би све вредности у тој колони морале бити јединствене.

Такође приметите да смо изабрали опцију решавања сукоба као „ ЗАМЕНИ “. Команда би требало да се успешно изводи и не бисте смели да добијате грешке:

Корак 2) Убацимо неке вредности у нову тему Табеле, али са вредношћу која крши ограничење примарног кључа:

ИНСЕРТ ИНТО Субјецтс ВАЛУЕС (1, 'Алгебра');ИНСЕРТ ИНТО Субјецтс ВАЛУЕС (2, 'Курс базе података');ИНСЕРТ ИНТО Субјецтс ВАЛУЕС (2, 'Структуре података');ИНСЕРТ ИНТО Субјецтс ВАЛУЕС (4, 'Алгоритхмс');

У ову ИНСЕРТ изјаву покушали смо да убацимо два курса са истим ИД-ом предмета примарног кључа 2, што представља кршење ограничења примарног кључа.

Команде би требало да се извршавају у реду и не бисте смели да добијате грешке. Гласи:

Корак 3) Изаберите све предмете из табеле на следећи начин:

СЕЛЕЦТ * ФРОМ Субјецтс;

Ово ће вам дати списак предмета:

Приметите да су убачена само три предмета „ Алгебра, структуре података и алгоритми “, док смо покушали да убацимо 4 реда.

Ред који има вредност која крши ограничење примарног кључа, а то је „ Структуре података “, заменио је вредност „ Курс базе података “ на следећи начин:

  • Прве две изјаве за уметање раде без проблема. Два предмета Алгебра и курс базе података биће уметнути са ИД-овима 1, 2.
  • Када СКЛите покуша да покрене трећу изјаву за уметање са СубјецтИд 2 и СубјецтНаме " Структуре података ", открива да већ постоји субјект са СубјецтИд = 2. Што представља кршење ограничења примарног кључа дефинисаног у колони СубјецтИд.
  • СКЛите ће изабрати РЕПЛАЦЕ резолуцију за овај сукоб. Замењује вредност која већ постоји у табели субјеката новом вредношћу из наредбе инсерт. Дакле, назив предметаКурс базе података “ биће замењен називом „ Структуре података “.

Резиме:

Клаузуле ИНСЕРТ, УПДАТЕ и ДЕЛЕТЕ користе се за модификовање података у бази података СКЛите. Клаузула ЦОНФЛИЦТ је моћна клаузула за решавање било ког сукоба између података и података које треба изменити.