JavaRush /Java блогу /Random-KY /Иштеп чыгуучу интервью: маалыматтар базасынын суроолоруна...
Константин
Деңгээл

Иштеп чыгуучу интервью: маалыматтар базасынын суроолоруна талдоо

Группада жарыяланган
Баарына салам! Биз баарыбыз бул жерде бир максат үчүн иштеп жатабыз - Java Developers болуу . Балким, кесипкөй болуу жолунда эң маанилүү этап техникалык интервью болуп саналат. Эреже катары, интервью алуучу бир-эки суроолорду берип, негизги темалардан өтөт. Бул макалада биз ушундай негизги темалардын бири жөнүндө сүйлөшөбүз - маалымат базалары . Келгиле, эң көп берилүүчү суроолорду карап көрөлү жана аларга материалга терең сүңгүп кирбестен жооп бергенге аракет кылалы, анткени мындай учурда китептин көлөмү бизге жетпей калат! Ошентип, кетели.Иштеп чыгуучунун интервьюсу: маалыматтар базасынын суроолоруна талдоо - 1

1. Маалымат базалары деген эмне? Алар кандай түрлөргө бөлүнөт?

DBMS деген эмнени билдирет?

Иштеп чыгуучунун интервьюсу: маалыматтар базасынын суроолоруна талдоо - 2Берorштер базасы (МБ) – негизинен чоң көлөмдөгү өз ара байланышкан маалыматты сактоо, өзгөртүү жана иштетүү үчүн арналган уюшкан структура. Башка сөз менен айтканда, маалымат базасы структураланган маалыматтарды сактоо болуп саналат. Мисалы, телефон китепчеси.

Маалымат базасынын түрлөрү

  1. Реляциялык маалымат базасы - бул алардын ортосунда алдын ала аныкталган мамилелери бар маалыматтардын жыйындысы. Маалыматтар тилкелерден жана саптардан турган tableлардын жыйындысы катары сакталат. Таблицалар маалымат базасында көрсөтүлгөн an objectтер жөнүндө маалыматты сактайт. Ар бир table тилкесинде белгилүү бир маалымат түрү сакталат жана ар бир клетка атрибут маанисин сактайт.
  2. Реляциялык эмес системалар (NoSQL) ийкемдүү схемалары бар белгилүү бир маалымат моделдери үчүн иштелип чыккан системалар. Башкача айтканда, бул маалыматтарды tableлык схемалар, саптар жана мамычалар түрүндө эмес, башка форматтарда сактаган маалымат базалары.
Реляциялык эмес маалымат базалары жөнүндө көбүрөөк маалыматты бул макаладан окуй аласыз: Иштеп чыгуучулар үчүн NoSQL колдонмосу . Берorштер базасын башкаруу системасы (МББ) – бул колдонуучу маалымат базасын (МБ) түзүп, алар боюнча ар кандай операцияларды: толуктоо, жаңыртуу, жок кылуу, тандоо ж.б.у.с. аткара ала турган программалык камсыздоонун жыйындысы. маалыматтарды сактоо жана маалымат базасын башкаруу мүмкүнчүлүгүн берүүгө мүмкүндүк берет. Мисал катары, MySql реляциялык маалымат базасына же MongoDBге байланышы жок маалымат базасына кирүү мүмкүнчүлүгүн камсыз кылган DBMS болуп саналат.

2. Нормалдаштыруу деген эмне? Нормалдаштырылган формабы? Нормалдаштыруунун канча формасы бар? Биринчи үчөөнү атаңыз.

Нормалдаштыруу - бул ашыкча жана көз карандылыктын ыраатсыздыгын жоюу аркылуу маалымат базасынын ийкемдүүлүгүн камсыз кылган маалымат базасындагы маалыматтарды уюштуруу жана структуралаштыруу процесси. Нормалдуу форма – tableны түзүмдүн жөнөкөйлүгү жана тууралыгы боюнча мүнөздөгөн нормалдаштыруу контекстинде каралуучу tableнын касиети. Кадимки форма table канааттандырууга тийиш болгон талаптардын жыйындысы катары аныкталат. Жалпысынан алты нормалдуу форма бар, бирок иш жүзүндө биринчи үчтөн көп эмес колдонулат:
  1. Биринчи нормалдуу формасы:
    • Бардык атрибуттар жөнөкөй (башкача айтканда, атомдук жана бөлүнгүс);
    • Бардык маалыматтар скаляр (башкача айтканда, оң);
    • Кайталануучу саптар жок (бул үчүн ар бир сап үчүн негизги ачкыч түзүлөт).
  2. Экинчи нормалдуу түрү:
    • Биринчи нормалдуу форманын шарттары аткарылат;
    • Ар бир ачкыч эмес атрибут негизги ачкычка шилтеме кылат.
  3. Үчүнчү нормалдуу түрү:
    • Экинчи нормалдуу топтун шарттары аткарылат;
    • Ачкыч эмес талаалар башка ачкыч эмес талаалардан көз каранды эмес: аларды негизги ачкыч менен гана байланыштырууга болот.

3. Нормализация

Денормализация - бул маалымат базасын нормалдаштыруу формаларын атайылап кыскартуу же бузуу, адатта ашыкча маалыматтарды кошуу менен маалымат базасынан окууну тездетүү. Жалпысынан алганда, бул нормалдаштырууга тескери процесс. Бул нормалдуу формалар теориясы практикада дайыма эле колдонула бербейт. Мисалы, атомдук эмес баалуулуктар дайыма эле "жаман" эмес: кээде тескерисинче. Кээ бир учурларда, суроо-талаптарды аткарууда, өзгөчө чоң көлөмдөгү маалыматты иштеп чыгууда кошумча кошулмалар зарыл. Бул акыры аткарууну жакшыртышы мүмкүн. Аналитика үчүн арналган маалымат базалары көбүнчө сурамдардын аткарылышын тездетүү үчүн нормадан ажыратылат. Мисалы, сиз көп учурда негизги эмес мамычалар бири-бири менен байланышта боло турган отчеттор үчүн кээ бир маалыматтарды тандайсыз. Сиз атайылап нормалдаштыруунун үчүнчү түрүн алып салыңыз жана үлгү алуу оңой болушу үчүн бардыгын бир tableга бириктиресиз - башка tableларга кошумча сурамдарды жасоонун кереги жок.

4. Индекстер

Индекс - бул маалыматтарды издөөнү тездетүүчү белгилүү бир тилке менен table же көрүнүш менен байланышкан баалуулуктардын сорттолгон жыйындысы. Башкача айтканда, бул индекстин бир түрү: телефон китепчесиндеги алфавит сыяктуу, фамorя боюнча издөөдө бизге жардам берет. Эгер туура колдонулса, бул функция чоң маалымат базалары менен иштөөдө натыйжалуулукту бир топ жакшыртат. Же сиз аны бир топ төмөндөтсөңүз болот. Издөөнү тездетүү үчүн бул ачкычтар тең салмактуу дарак структурасында сакталат, ал аркылуу издөө жүргүзүлөт. Эреже катары, индекстер эң көп изделген талааларга киргизorши керек. Сизде жок дегенде 10 миң жазуу болгондон эрте эмес индексти түзүү жөнүндө ойлонушуңуз керек. Болбосо, сиз байкалаарлык натыйжаны көрбөйсүз, анткени мөөнөтүнөн мурда оптималдаштыруу - EVIL . Жана индекс системанын иштешине кандай таасир этиши мүмкүн, сиз сурайсызбы? Жаңы маалыматтар киргизилгенде же эски маалыматтар жок кылынганда, тең салмактуу дарак түзүмү кайра эсептелинет. Чынында, маалымат жана индекстер канчалык көп болсо, ошончолук көп дарактарды санаш керек. Кырдаалды элестетиңиз: бул tableда сизде 20 000ге жакын жазуу жана 7 индекс бар. Башкача айтканда, маалыматтарды киргизүүдө ар биринде 20 000 жазуу бар 7 даракты кайра эсептөө керек. Тактап айтканда, маалыматтар тез-тез кошула турган/жок кылына турган tableлар үчүн индекстерди колдонуу такыр сунушталbyte. Акырында белгилеп кетким келет, көп учурда мааниси табылган мамычалар үчүн индекстер nullанчалык эффективдүү болбой калат, андыктан аларды мындай тилкелерге кошуунун кереги жок.

SQLдеги кластердик жана кластердик эмес индекстердин ортосунда кандай айырма бар?

Кластердик:

  • Тандалган талаа үчүн физикалык тартипти камсыз кылат;
  • Эгерде tableда кластердик индекс болсо, анда ал кластерленген деп айтылат;
  • Ар бир tableга бирден ашык индекс талап кылынbyte;
  • MySQLде кластердик индекс колдонуучу тарабынан ачык көрсөтүлбөйт, анткени үстөлүңүздө БАШКЫ АЧКЫЧты аныктабасаңыз, MySQL UNIQUEбардык негизги мамычалар турган биринчи индексти табат NOT NULLжана InnoDB аны кластердик индекс катары колдонот.

Кластердик эмес:

  • Бир tableда 999га чейин кластердик эмес индекстер болушу мүмкүн;
  • Таблицадагы реалдуу маалыматтары бар саптарга көрсөткүчтү камтыйт;
  • Физикалык тартипти камсыз кылbyte;
  • Кластердик эмес индекстер үчүн сорттолгон маалыматтары бар өзүнчө tableлар бар, тактап айтканда, индекс жайгашкан бир мамыча үчүн бир table, ошондуктан, берилген талаага кирбеген маалыматтарды сураганда, сурам биринчи кезекте аткарылат. бул tableдагы талаа, андан кийин гана баштапкы tableдагы сапка каршы кошумча суроо.
Кластердик эмес индексти түзүү:
CREATE INDEX index_name ON table_name(column_name)

6. Курама индекс деген эмне?

Композиттик индекс - бир эле учурда бир нече тилкеге ​​жөнөтүү менен курулган. Башкача айтканда, бул бир нече тилкеден турган татаал индекс. Мындай индекстер бир суроодо бирден ашык тилке пайда болгондо колдонулат. Композиттик индексти түзүү:
CREATE INDEX index_name ON table_name(first_column_name, second_column_name, third_column_name)
Адатта, бул индекстер бир нече тилкелердеги маалыматтар логикалык жактан байланышкан учурда колдонулат.

7. Камтуу индекси деген эмне? Уникалдуу индекс?

Жабуучу индекс – бул tableга кирбестен суроого жооп берүү үчүн жетиштүү болгон индекс. Бул индексти колдонуу менен, сиз маалыматтардын бардык сабын ала аласыз, бирок чындыгында бул жөн эле зарыл эмес. Түздөн-түз булак tableсына өтүүнүн кереги жок жана индексти колдонуу менен жооп бере алсаңыз, камтуу индекстерин колдонуу бир аз ылдамыраак. Ошол эле учурда, канчалык көп мамычалар, индекстин өзү ошончолук түйшүктүү жана жай болоорун унутпаңыз. Андыктан муну кыянаттык менен колдонбошуңуз керек. Жогоруда биз уникалдуу болушу мүмкүн болгон кластердик жана кластердик эмес индекстер жөнүндө сүйлөштүк . Бул индекс ачкычы үчүн эки талаа бирдей мааниге ээ эмес дегенди билдирет. Болбосо, индекс уникалдуу болбойт, анткени бир нече саптар бирдей маанини камтышы мүмкүн. Уникалдуу кластердик эмес индексти түзүүнүн мисалы:
CREATE UNIQUE INDEX index_name ON table_name(column_name)

8. Негизги ачкыч деген эмне

Негизги ачкыч - tableдагы талаа, ал маалымат базасынын tableсындагы ар бир сапты аныктайт. Таблицада бир гана ушундай талаа болушу мүмкүн жана бардык баалуулуктар уникалдуу болушу керек. Сизге эч нерсени эскерткен жоксузбу? Иштеп чыгуучунун интервьюсу: маалыматтар базасынын суроолоруна талдоо - 3Анткени, негизги ачкыч уникалдуу, кластердик индекстен башка эч нерсе эмес. Эреже катары, table түзүүдө негизги ачкычтар түзүлөт:
CREATE TABLE table_name(
column_name int PRIMARY KEY,..)
Бул тилкеге ​​чектөө автоматтык түрдө кошулат - NOT NULL. Сиз буга чейин түзүлгөн table үчүн да ачкыч орното аласыз:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
Эгерде негизги ачкыч жогоруда айтылгандай кошулса, анда негизги ачкыч ( ) катары көрсөтүлгөн талаалардын маанилери column_nameнөл маанилерди камтыбашы үчүн текшерилет (чектөө да кошулат - NOT NULL).

Чет элдик ачкыч деген эмне?

Тышкы ачкыч tableлардын ортосундагы байланышты камсыз кылуу үчүн түзүлгөн касиет. Адатта, тышкы ачкыч субtableдагы мамычаларга коюлат жана негизги tableдагы тилкелердин бирине көрсөтөт. Таблицаны түзүүдө катары белгилениши мүмкүн:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) }
Ошентип, tableны түзгөндөн кийин:
ALTER TABLE table_name
ADD FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name));
Сиз чет өлкөлүк ачкычтын аракетин ал тиешелүү талааны манипуляциялоодо орното аласыз. Манипуляциялар төмөнкүдөй ON DELETEтүрлөрү болушу мүмкүн ON UPDATE: Мүмкүн болгон жүрүм-турум варианттары:
  • CASCADE— бул касиет менен, негизги tableда тиешелүү саптар өчүрүлгөндө же өзгөртүлгөндө, көз каранды tableдагы саптар автоматтык түрдө өчүрүлөт же өзгөртүлөт;
  • SET NULL— бул касиет менен, тиешелүү сап негизги tableдан өчүрүлгөндө же жаңыртылганда, NULLчет өлкөлүк ачкыч мамычасынын мааниси коюлат;
  • NO ACTION— эгерде көз каранды tableда тиешелүү саптар бар болсо, негизги tableдагы саптарды өчүрүү же өзгөртүү аракеттерин четке кагат;
  • RESTRICT- эквиваленттүү NO ACTION;
  • SET DEFAULT- бул касиет менен, тиешелүү сап негизги tableдан өчүрүлгөндө же жаңыртылганда, чет өлкөлүк ачкыч мамычасынын демейки мааниси (эгерде бар болсо) коюлат.
Колдонуу мисалы:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) ON UPDATE CASCADE ON DELETE CASCADE }
ON DELETEЭгерде жүрүм- турум ачык коюлбаса ON UPDATE, жүрүм-турум деп коюлат RESTRICT.

10. Таблицалардын ортосундагы байланыштардын түрлөрү (кошулуу)

Таблицалардын ортосундагы байланыш жалпы маалыматтарга (талааларга) негизделген. JOINБул бир tableдагы саптар менен башка саптар менен дал келген оператордун жардамы менен болот . Карталоо эки tableнын мамычалары жанаша тургандай кылып жасалат, бирок аларды өзүнчө tableлардан алууга болот. Ал эми бизде үч table үчүн жалпы талаалар болсо, алардын маалыматтарын бир жалпы table катары көрсөтө алабыз. Бирок, кошулган tableлар канчалык аз болсо, суроо ошончолук тезирээк иштей турганын эске алуу керек. Ошентип, түрлөрү JOIN:
  • INNER JOIN- биринчи tableдагы экинчи tableдагы кээ бир маалыматтарга дал келген маалыматтарды гана көрсөткөн байланыш. Калгандары түшөт.Иштеп чыгуучу интервью: маалымат базасынын суроолоруна талдоо - 4
  • LEFT JOIN- биринчи tableдагы бардык маалыматтарды жана эгер бар болсо, экинчиден тиешелүү маалыматтарды көрсөткөн байланыш. Эгерде тиешелүү маалыматтар жок болсо, экинчи tableдагы маалыматтар үчүн талаалар бош болот.Иштеп чыгуучунун интервьюсу: маалыматтар базасынын суроолоруна талдоо - 5
  • RIGHT JOIN- экинчи tableдагы бардык маалыматтарды жана эгерде бар болсо, биринчиден тиешелүү маалыматтарды көрсөткөн байланыш. Эгерде тиешелүү маалыматтар жок болсо, биринчи tableдагы маалыматтар үчүн талаалар бош болот.Иштеп чыгуучу интервью: маалыматтар базасынын суроолоруна талдоо - 6
  • FULL JOIN- биринчи жана экинчи tableлардагы бардык маалыматтарды көрсөткөн байланыш. Эгерде башка tableда тиешелүү маалыматтар жок болсо, анда ал маалыматтар үчүн талаалар бош болот.Иштеп чыгуучу интервью: маалыматтар базасынын суроолоруна талдоо - 7
  • CROSS JOIN- биринчи tableнын ар бир сабы экинчи tableнын ар бир сабына кошулган кайчылаш кошулуу (ар бирине). Башкача айтканда, эки tableда ар биринде 3 сап болсо, бул кошулгандан кийин биз 9 саптын натыйжасын алабыз.Иштеп чыгуучу интервью: маалыматтар базасынын суроолоруна талдоо - 8
Мисал Join(inner):
SELECT *
FROM first_table
INNER JOIN second_table ON first_table.some_column = second_table.some_column

11. Маалыматтар базасындагы ACID касиети деген эмне?

A - Atomicity , эч кандай транзакция жарым-жартылай системага берилгенин камсыздайт. Же анын бардык субоперациялары аткарылат, же бири дагы аткарылbyte. Мисалы, банктан башка эсепке акча которуу эки операцияны камтыйт:
  1. Банк эсебине акча которуу.
  2. Банк эсебинен белгилүү бир эсепке акча которуу.
Бирок баары болушу мүмкүн. Мисалы, алар банкка барышат, анан кандайдыр бир ката болуп, экинчи операция бүтпөй калат. Же тескерисинче: экинчи операция гана аткарылат. Ошондуктан, бул иш-аракеттер бир бүтүм ичинде жүзөгө ашырылат, жана натыйжасы же баары же эч нерсе. C - ырааттуулугу : Ар бир ийгorктүү транзакция дайыма чечиле турган натыйжаларды гана жазат. Бул бардык чектөөлөрдүн аткарылышын камсыздайт (мисалы, NOT NULL), антпесе транзакция артка кайтарылат. Жана - изоляция : бүтүмдү аткаруу учурунда, параллелдүү бүтүмдөр анын натыйжасына таасир этпеши керек. Бул бизге акыркы эмес маалымат абалын бардыгынан жашыруу мүмкүнчүлүгүн берет. Чындыгында, ушул себептен ийгorксиз транзакциялар эч нерсени буза алbyte. Бир аз төмөн, биз транзакциялардын изоляциясынын деңгээли менен таанышабыз. D - Узактыгы : Эгер транзакция бүтсө, анда ал киргизилген өзгөртүүлөр кандайдыр бир катачылыктан улам жокко чыгарылbyte деп ишенсеңиз болот.

12. Транзакциянын изоляциясынын деңгээли

Ар бир обочолонуу деңгээли белгилүү бир аракеттерге (мүмкүнчүлүктөргө) уруксат берет/тыю салат:
  • фантомдук окуу - бир эле транзакциянын ичинде бир эле маалымат суроосу башка (параллель) транзакция менен маалыматтарды кошуудан улам пайда болгон ар кандай натыйжаларды берет.
  • кайталанбаган окуу - бир эле транзакциянын чегинде бир эле маалымат суроо-талаптары башка (параллель) транзакция менен маалыматтарды өзгөртүүдөн же жок кылуудан улам пайда болгон ар кандай натыйжаларды берет.
  • "кир" окуу - транзакция менен кошулган же өзгөртүлгөн маалыматтарды окуу, алар кийинчерээк артка кайтарылbyte;
  • жоголгон жаңыртуу - ар кандай транзакциялар бир эле учурда бир маалымат блогун өзгөрткөндө, акыркысынан башка бардык өзгөртүүлөр жоголот (көп агымдагы "жарыш шартына" окшош).
Ыңгайлуу болуу үчүн tableда изоляциянын деңгээлин жана алардын мүмкүнчүлүктөрүн карап чыгабыз:
Изоляция деңгээли Фантомдук окуу Кайталанбаган окуу "кир" окуу жоголгон жаңыртуу
СЕРИЯЛАШТЫРУУЧУ + + + +
REPEATABLE_READ - + + +
READ_COMMITTED - - + +
READ_UNCOMMITTED - - - +

13. SQL инъекциясы деген эмне?

SQL инъекциясыGET – бул веб-сайтты бузуп алуу ыкмаларынын бири, анын маңызы сурамдар POSTже кукилер аркылуу берorштерге SQL codeун киргизүү болуп саналат . Эгерде веб-сайт ушундай инъекцияларды жасаса, анда маалымат базасына кирүү жана тиркемени бузуп алуу мүмкүн. Мисалы, биз кандайдыр бир өзгөрмөнүн атын билебиз. column_nameтүрү менен айталы boolean. Эгерде система инъекцияларга дуушар болсо, биз OR column_name=trueмаалымат базасынан керектүү нерселердин баарын кошуп, анан жаза алабыз. ORЖЕ шартын түзөт жана андан кийинки биздин туюнтма ар дайым болот true, бул бизди алдыга алып барат. SQL инъекциясы сыяктуу веб-сайтка чабуул SQL сурамдарында колдонулган кирүүчү маалыматтарды туура эмес иштетүүдөн улам болушу мүмкүн. JDBC аркылуу маалымат базасына туташып жатканда , сиз ар кандай колдоносуз Statements. PreparedStatementКоопсуздукту жогорулатуу үчүн, адаттагыдай эмес колдонуу керек Statement, анткени колдонулганда, Statementсуроо саптары жана баалуулуктары жөн гана кошулуп, инъекцияларды жасоого мүмкүндүк берет. Өз кезегинде, PreparedStatementсуроо-талаптын белгилүү бир шаблону бар жана ага маалыматтар тырмакчалар менен киргизилет. Натыйжада, SQL инъекциялары кээ бир талаанын сап чагылдырылышы катары гана кабыл алынат. SQL инъекцияларынан коргоо үчүн, сиз кадимки туюнтмалардын негизинде текшерүүлөрдү колдонсоңуз болот (сиз бул макалада туруктуу сөз айкаштары жөнүндө көбүрөөк окуй аласыз ). Собеседование разработчика: разбор вопросов по базам данных - 9Дагы бир вариант - кирүүчү параметрлердин символдорунун санына чектөө коюу: мисалы, эгер сиз 9999дан ашпаган санды алышыңыз керек болсо, анда келген төрт символдон турган чек аткарылат. Бул SQL инъекцияларын колдонуу менен хакерлик кылуу коркунучун азайтат.Сиз Javaдагы коопсуздук тууралуу көбүрөөк биле аласыз “Javaдагы коопсуздук: мыкты тажрыйбалар” деген макаладан .

14. Сакталган proceduresалар деген эмне? Сакталган функциялар? Trigger?

SQLде сакталган proceduresалар – бул бир жолу түзүлүп, serverде сакталган SQL нускамаларынын жыйындысы болгон маалымат базасындагы an object. Бир сөз менен айтканда, бул Java методдорунун аналогу. Сакталган proceduresалар кадимки сурамдарда да, кадимки сурамдар үчүн жеткorксиз болгон кээ бир аракеттерде да, берorштер боюнча аракеттерди жасай алат. Процедура бир жолу түзүлүп, андан кийин аргументтерди өткөрүү аркылуу чакырылган SQL an objectиси. Бул ыкманын артыкчылыгы - бул нускамаларды бир нече жолу колдонууга болот. Сакталган proceduresалар аткарууну жакшыртат, программалоо мүмкүнчүлүктөрүн өркүндөтөт жана маалымат коопсуздук функцияларын колдойт. Келгиле, proceduresаны түзүүнү карап көрөлү:
CREATE PROCEDURE procedure_name (first_param some_type, second_param some_type..)
 begin
……...
 end
Процедураны чакыруу:
CALL procedure_name (first_param, second_param…..);
Сакталган функция сакталган proceduresанын бир түрү болуп саналат. Функциянын айырмасы - ал ар дайым бир гана маанини кайтарат, ал эми proceduresа ар дайым маанилердин жыйындысын кайтарат. Сакталган proceduresаларды кадимки SQL менен аралаштырууга болбойт, ал эми сакталган функция мүмкүн - бул анын артыкчылыгы. Башка жагынан алганда, сакталган функциялар proceduresаларга караганда көбүрөөк чектөөлөргө ээ. Сакталган функцияны түзүү:
CREATE FUNCTION function_name (first_param, second_param…..)
RETURNS some_type
 begin
……...
RETURN some_value;
end
Сакталган функцияны чакыруу:
SELECT function_name(first_param, second_param…..);
Триггер – бул сакталган proceduresанын дагы бир түрү, аны колдонуучу түздөн-түз чакырbyte, бирок маалыматтар өзгөртүлгөндө иштетилет. Башкача айтканда, бул proceduresа белгилүү шарттар аткарылганда, мисалы, INSERTже DELETE, же UPDATEберилген tableнын белгилүү тилкесиндеги маалыматтар иштетилет. Качан триггер иштетилгени ачкыч сөздөрдүн жардамы менен аныкталат BEFORE(байланышкан окуяга чейин триггер оту) же AFTER(окуядан кийин).
CREATE TRIGGER trigger_name
ON table_name
AFTER INSERT
 begin
……...
 end

15. Практика

Кандай болбосун, интервьюда эң кеңири таралган SQL суроосу практика болот - көйгөйдү чечүү. Сизге кандай тапшырмалар келерин болжолдоонун мааниси жок, анткени баары карама-каршы адамдын фантазиясынын татаалдыгынан көз каранды. Ошондуктан, бир гана жумушчу вариант - ар кандай татаалдыктагы SQL сурамдарын жакшыраак алуу. sql-ex.ru ар кандай тапшырмаларды аткаруу үчүн булак катары кызмат кыла алат . Биринчи жыйырма тапшырманы аткаргандан кийин, маектешиңиз сизди кандайдыр бир SQL тапшырмасы менен коркутуу абдан кыйын болот. Собеседование разработчика: разбор вопросов по базам данных - 11Бүгүнкү күндө бардыгы: бул макаланы окуп чыккандан кийин, маалымат базалары жөнүндө суроолор эч кандай кыйынчылыктарды же көйгөйлөрдү жаратпайт деп үмүттөнөм. Көңүл бурганыңыз үчүн рахмат жана кайрадан көрүшкөнчө!
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION