JavaRush /Java Blogu /Random-AZ /Tərtibatçı müsahibəsi: verilənlər bazası suallarının təhl...

Tərtibatçı müsahibəsi: verilənlər bazası suallarının təhlili

Qrupda dərc edilmişdir
Hamıya salam! Biz hamımız burada bir məqsəd istiqamətində çalışırıq - Java Tərtibatçıları olmaq . Peşəkar olmaq yolunda bəlkə də ən vacib mərhələ texniki müsahibədir. Bir qayda olaraq, müsahibə götürən şəxs bir-iki sual verməklə əsas mövzulardan keçir. Bu yazıda belə bir əsas mövzudan biri haqqında danışacağıq - verilənlər bazası . Ən çox yayılmış suallara baxaq və materiala dərindən dalmadan onlara cavab verməyə çalışaq, çünki bu halda kitabın həcmi bizim üçün kifayət etməyəcək! Beləliklə, gedək.Tərtibatçı müsahibəsi: verilənlər bazası suallarının təhlili - 1

1. Verilənlər bazaları nələrdir? Onlar hansı növlərə bölünürlər?

DBMS dedikdə nə nəzərdə tutulur?

Tərtibatçı müsahibəsi: verilənlər bazası suallarının təhlili - 2Verilənlər bazası (VB) əsasən böyük həcmli məlumatların saxlanması, dəyişdirilməsi və işlənməsi üçün nəzərdə tutulmuş mütəşəkkil strukturdur. Başqa sözlə, verilənlər bazası strukturlaşdırılmış məlumat yaddaşıdır. Məsələn, telefon kitabçası.

Verilənlər bazası növləri

  1. Əlaqəli verilənlər bazası, aralarında əvvəlcədən müəyyən edilmiş əlaqələri olan verilənlər toplusudur. Məlumatlar sütun və sətirlərdən ibarət cədvəllər toplusu kimi saxlanılır. Cədvəllər verilənlər bazasında təmsil olunan obyektlər haqqında məlumatları saxlayır. Hər bir cədvəl sütunu müəyyən bir məlumat tipini saxlayır və hər bir hüceyrə bir atribut dəyərini saxlayır.
  2. Qeyri-relational sistemlər (NoSQL) çevik sxemləri olan xüsusi məlumat modelləri üçün nəzərdə tutulmuş sistemlərdir. Başqa sözlə desək, bunlar verilənləri cədvəl sxemləri, sətirlər və sütunlar şəklində deyil, başqa formatlarda saxlayan verilənlər bazalarıdır.
Əlaqəli olmayan verilənlər bazaları haqqında daha çox bu məqalədə oxuya bilərsiniz: Tərtibatçılar üçün NoSQL üçün bələdçi . Verilənlər bazası idarəetmə sistemi (DBMS) istifadəçinin verilənlər bazası (VB) yarada və onlar üzərində müxtəlif əməliyyatları həyata keçirə biləcəyi proqram təminatı toplusudur: əlavə etmək, yeniləmək, silmək, seçmək və s. məlumat saxlama və verilənlər bazası idarəçiliyinə giriş icazəsi verməyə imkan verir. Nümunə olaraq, MySql relational verilənlər bazasına və ya qeyri-relational üçün MongoDB-yə girişi təmin edən DBMS-dir.

2. Normallaşma nədir? Normallaşdırılmış forma? Normallaşmanın neçə forması var? İlk üçünü adlandırın.

Normallaşdırma, artıqlığı və asılılıqların uyğunsuzluğunu aradan qaldırmaqla verilənlər bazasında daha çox çeviklik təmin edən verilənlər bazasında məlumatların təşkili və strukturlaşdırılması prosesidir. Normal forma cədvəlin quruluşunun sadəliyi və düzgünlüyü baxımından xarakterizə edən normallaşdırma kontekstində nəzərdən keçirilən xüsusiyyətidir. Normal forma cədvəlin təmin etməli olduğu tələblər toplusu kimi müəyyən edilir. Ümumilikdə altı normal forma var, lakin praktikada ilk üçdən çox istifadə edilmir:
  1. Birinci normal forma:
    • Bütün atributlar sadədir (yəni atomik və bölünməzdir);
    • Bütün məlumatlar skalyardır (yəni müsbət);
    • Dublikat sətirlər yoxdur (bunun üçün hər sətir üçün əsas açar yaradılır).
  2. İkinci normal forma:
    • Birinci normal formanın şərtləri yerinə yetirilir;
    • Açar olmayan hər bir atribut əsas açara istinad edir.
  3. Üçüncü normal forma:
    • İkinci normal qrupun şərtləri yerinə yetirilir;
    • Açar olmayan sahələr digər açar olmayan sahələrdən müstəqildir: onlar yalnız əsas açarla əlaqələndirilə bilər.

3. Denormalizasiya

Denormalizasiya , verilənlər bazası normallaşdırma formalarının qəsdən azaldılması və ya pozulmasıdır, adətən lazımsız məlumat əlavə etməklə verilənlər bazasından oxumağı sürətləndirmək üçün. Ümumiyyətlə, bu normallaşmaya tərs bir prosesdir. Bu, normal formalar nəzəriyyəsinin praktikada həmişə tətbiq oluna bilməməsi səbəbindən baş verir. Məsələn, qeyri-atom dəyərləri həmişə "şər" deyil: bəzən hətta əksinə. Bəzi hallarda, sorğuların icrası zamanı, xüsusən də böyük həcmli məlumatların işlənməsi zamanı əlavə birləşmələr lazımdır. Bu, nəticədə performansı yaxşılaşdıra bilər. Sorğunun icrasını sürətləndirmək üçün analitika üçün nəzərdə tutulan verilənlər bazaları tez-tez normallaşdırılır. Məsələn, siz tez-tez əsas olmayan sütunların bir-biri ilə əlaqəli olacağı hesabatlar üçün bəzi məlumatları seçəcəksiniz. Siz qəsdən normallaşdırmanın üçüncü formasını silirsiniz və nümunə götürmə asanlığı üçün hər şeyi bir cədvəldə birləşdirirsiniz - belə ki, digər cədvəllərə əlavə sorğular etmək lazım deyil.

4. İndekslər

İndeks verilənlərin axtarışını sürətləndirən müəyyən bir sütunla cədvəl və ya görünüşlə əlaqəli sıralanmış dəyərlər toplusudur. Yəni bu, bir növ indeksdir: soyadla axtarış edərkən bizə kömək edən telefon kitabçasındakı əlifba kimi. Düzgün istifadə olunarsa, bu funksiya böyük verilənlər bazası ilə işləyərkən performansı xeyli yaxşılaşdıra bilər. Və ya çox aşağı sala bilərsiniz. Axtarışı sürətləndirmək üçün bu açarlar axtarışın həyata keçirildiyi balanslaşdırılmış ağac strukturunda saxlanılır. Bir qayda olaraq, indekslər ən çox axtarılan sahələrə daxil edilməlidir. Ən azı 10 min qeydiniz olduqdan əvvəl bir indeks yaratmağı düşünməlisiniz. Əks təqdirdə, nəzərə çarpan bir nəticə görməyəcəksiniz, çünki vaxtından əvvəl optimallaşdırma EVIL . Bir indeks sistemin performansına necə təsir edə bilər, soruşursunuz? Yeni məlumatlar daxil edildikdə və ya köhnə məlumatlar silindikdə, balanslaşdırılmış ağac strukturu yenidən hesablanacaq. Əslində, nə qədər çox məlumat və indeks varsa, bir o qədər çox ağacın sayılması lazımdır. Vəziyyəti təsəvvür edin: bu cədvəldə təxminən 20.000 qeyd və 7 indeksiniz var. Yəni məlumatları daxil edərkən hər biri 20.000 qeyd olan 7 ağacı yenidən hesablamaq lazımdır. Düzünü desək, verilənlərin tez-tez əlavə olunacağı/silinəcəyi cədvəllər üçün indekslərdən istifadə etmək qətiyyən tövsiyə edilmir. Nəhayət, qeyd etmək istərdim ki, dəyərin tez-tez tapıldığı sütunlar üçün indekslər nullo qədər də təsirli olmayacaq, ona görə də onları belə sütunlara əlavə etməyə dəyməz.

SQL-də çoxluqlu və klasterli olmayan indekslər arasında fərq nədir?

Çoxluq:

  • Seçilmiş sahə üçün fiziki qaydanı təmin edir;
  • Cədvəldə klaster indeksi varsa, onun çoxluqlu olduğu deyilir;
  • Cədvəl üçün birdən çox indeks tələb olunmur;
  • MySQL-də klasterli indeks istifadəçi tərəfindən açıq şəkildə göstərilmir, çünki siz cədvəlinizdə ƏSAS AÇAR təyin etməsəniz, MySQL UNIQUEbütün əsas sütunların olduğu ilk indeksi tapır NOT NULLvə InnoDB ondan klaster indeksi kimi istifadə edir.

Qeyri-klaster:

  • Cədvəl üçün 999-a qədər qruplaşdırılmamış indekslər mümkündür;
  • Cədvəldə real verilənləri olan sətirlərə göstərici ehtiva edir;
  • Fiziki nizamı təmin etmir;
  • Qeyri-klasterli indekslər üçün çeşidlənmiş verilənləri olan ayrıca cədvəllər, yəni indeksin yerləşdiyi bir sütun üçün bir cədvəl var, buna görə də verilmiş sahənin bir hissəsi olmayan məlumatlar tələb edildikdə, sorğu əvvəlcə bu cədvəldəki sahə və yalnız bundan sonra orijinal cədvəldəki sətirə qarşı əlavə sorğu.
Qeyri-klaster indeksinin yaradılması:
CREATE INDEX index_name ON table_name(column_name)

6. Kompozit indeks nədir?

Kompozit indeks - eyni anda bir neçə sütuna göndərmə ilə qurulmuşdur. Başqa sözlə, bir neçə sütundan ibarət mürəkkəb indeksdir. Belə indekslər bir sorğuda birdən çox sütun göründükdə istifadə olunur. Kompozit indeksin yaradılması:
CREATE INDEX index_name ON table_name(first_column_name, second_column_name, third_column_name)
Tipik olaraq, bu indekslər çoxlu sütunlardakı məlumatlar məntiqi olaraq əlaqəli olduqda istifadə olunur.

7. Örtmə indeksi nədir? Unikal indeks?

Əhatə indeksi, cədvəlin özünə daxil olmadan bir sorğuya cavab vermək üçün kifayət olan bir indeksdir. Bu indeksdən istifadə edərək, bütün məlumat sırasını əldə edə bilərsiniz, amma əslində bu sadəcə lazım deyil. Birbaşa mənbə cədvəlinə keçməyiniz lazım olmadığından və yalnız indeksdən istifadə edərək cavab verə bildiyiniz üçün, əhatə edən indekslərdən istifadə etmək bir qədər tezdir. Eyni zamanda, unutmayın ki, sütunlar nə qədər çox olarsa, indeksin özü də bir o qədər çətin və yavaş olur. Buna görə də bundan sui-istifadə etməməlisiniz. Yuxarıda unikal ola bilən çoxluqlu və qeyri-klaster indeksləri haqqında danışdıq . Bu o deməkdir ki, indeks açarı üçün heç bir iki sahə eyni dəyərə malik deyil. Əks halda, indeks unikal olmayacaq, çünki bir neçə sıra eyni dəyəri ehtiva edə bilər. Unikal qeyri-klaster indeksinin yaradılması nümunəsi:
CREATE UNIQUE INDEX index_name ON table_name(column_name)

8. İlkin açar nədir

İlkin açar verilənlər bazası cədvəlindəki hər bir sətiri müəyyən edən cədvəldəki sahədir. Cədvəldə yalnız bir belə sahə ola bilər və bütün dəyərlər unikal olmalıdır. Sizə heç nə xatırlatmadı? Tərtibatçı müsahibəsi: verilənlər bazası suallarının təhlili - 3Axı, əsas açar unikal, qruplaşdırılmış indeksdən başqa bir şey deyil. Bir qayda olaraq, cədvəl yaratarkən əsas açarlar yaradılır:
CREATE TABLE table_name(
column_name int PRIMARY KEY,..)
Məhdudiyyət avtomatik olaraq bu sütuna əlavə olunacaq - NOT NULL. Siz həmçinin artıq yaradılmış cədvəl üçün açar təyin edə bilərsiniz:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
Əgər yuxarıda göstərilən qaydada əsas açar əlavə edilərsə, onda əsas açar ( column_name) kimi göstərilən sahələrin dəyərləri yoxlanılır ki, onlarda boş dəyərlər yoxdur (məhdudiyyət də əlavə olunacaq - NOT NULL).

Xarici açar nədir?

Xarici açar, cədvəllər arasında əlaqəni təmin etmək üçün yaradılmış bir xüsusiyyətdir. Tipik olaraq, xarici açar alt cədvəldəki sütunlara qoyulur və əsas cədvəldəki sütunlardan birinə işarə edir. Cədvəl yaratarkən aşağıdakı kimi təyin edilə bilər:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) }
Beləliklə, cədvəl yaratdıqdan sonra:
ALTER TABLE table_name
ADD FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name));
Xarici açarın istinad etdiyi sahəni manipulyasiya edərkən onun davranışını təyin edə bilərsiniz. Manipulyasiyalar aşağıdakı növlərdə ola ON DELETEbilər ON UPDATE: Mümkün davranış variantları:
  • CASCADE— bu xassə ilə əsas cədvəldə əlaqəli sətirlər silindikdə və ya dəyişdirildikdə asılı cədvəldəki sətirlər avtomatik olaraq silinəcək və ya dəyişdiriləcək;
  • SET NULL— bu xassə ilə əlaqəli sətir əsas cədvəldən silindikdə və ya yeniləndikdə, NULLxarici açar sütununun dəyəri təyin ediləcək;
  • NO ACTION— asılı cədvəldə əlaqəli sətirlər varsa, əsas cədvəldə sətirləri silmək və ya dəyişmək cəhdlərini rədd edir;
  • RESTRICT- bərabərdir NO ACTION;
  • SET DEFAULT- bu xassə ilə əlaqəli sətir əsas cədvəldən silindikdə və ya yeniləndikdə, xarici açar sütunu üçün standart dəyər (əgər varsa) təyin olunacaq.
İstifadə nümunəsi:
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 DELETEDavranış üçün və açıq şəkildə təyin edilməyibsə ON UPDATE, davranış olaraq təyin olunacaq RESTRICT.

10. Cədvəllər arasında əlaqə növləri (Qoşulun)

Cədvəllər arasında əlaqə ümumi məlumatlar (sahələr) əsasında təmin edilir. Bu JOIN, bir cədvəldəki sətirləri digərindəki sətirlərlə uyğunlaşdıran bir əməliyyat olan operatordan istifadə etməklə baş verir. Xəritəçəkmə elə aparılır ki, hər iki cədvəlin sütunları ayrı-ayrı cədvəllərdən əldə oluna bilsə də, bitişik olsun. Üç cədvəl üçün ümumi sahələrimiz varsa, onların məlumatlarını bir ümumi cədvəl kimi göstərə bilərik. Bununla belə, nəzərə almaq lazımdır ki, birləşdirilmiş cədvəllər nə qədər az olsa, sorğu bir o qədər sürətli işləyəcək. Beləliklə, növlər JOIN:
  • INNER JOIN- yalnız birinci cədvəldən ikinci cədvəldəki bəzi məlumatlara uyğun gələn məlumatları göstərən əlaqə. Qalanları aşağı düşür.Tərtibatçı müsahibəsi: verilənlər bazası suallarının təhlili - 4
  • LEFT JOIN- birinci cədvəldəki bütün məlumatları və əgər varsa, ikincidən müvafiq məlumatları göstərən əlaqə. Müvafiq məlumat yoxdursa, ikinci cədvəldəki məlumatlar üçün sahələr boş olacaq.Tərtibatçı müsahibəsi: verilənlər bazası suallarının təhlili - 5
  • RIGHT JOIN- ikinci cədvəldəki bütün məlumatları və əgər varsa, birincidən müvafiq məlumatları göstərən əlaqə. Müvafiq məlumat yoxdursa, birinci cədvəldəki məlumatlar üçün sahələr boş olacaq.Tərtibatçı müsahibəsi: verilənlər bazası suallarının təhlili - 6
  • FULL JOIN- birinci və ikinci cədvəllərdən bütün məlumatları göstərən əlaqə. Digər cədvəldə heç bir əlaqəli məlumat yoxdursa, bu məlumat üçün sahələr boş olacaq.Tərtibatçı müsahibəsi: verilənlər bazası suallarının təhlili - 7
  • CROSS JOIN- birinci cədvəlin hər bir sətirinin ikinci cədvəlin hər cərgəsinə birləşdirildiyi çarpaz birləşmə (hər birinə). Yəni iki cədvəlin hər biri 3 sıra olarsa, bu birləşmədən sonra 9 sıra nəticə əldə edəcəyik.Tərtibatçı müsahibəsi: verilənlər bazası suallarının təhlili - 8
Misal Join(inner):
SELECT *
FROM first_table
INNER JOIN second_table ON first_table.some_column = second_table.some_column

11. Verilənlər bazasında ACID xassəsi nədir?

A - Atomicity , heç bir əməliyyatın sistemə qismən bağlanmamasını təmin edir. Ya onun bütün alt əməliyyatları yerinə yetirilir, ya da heç biri yoxdur. Məsələn, bankdan başqa hesaba pul köçürmək iki əməliyyatı əhatə edir:
  1. Bank hesabına pul köçürün.
  2. Bir bank hesabından müəyyən bir hesaba pul köçürün.
Amma hər şey ola bilər. Məsələn, banka gedəcəklər, sonra hansısa xəta baş verəcək və ikinci əməliyyat başa çatmayacaq. Və ya əksinə: yalnız ikinci əməliyyat həyata keçiriləcək. Buna görə də, bu hərəkətlər bir əməliyyat çərçivəsində həyata keçirilir və nəticə ya hamısı, ya da heç bir şey deyil. C - Ardıcıllıq : Hər bir uğurlu əməliyyat həmişə yalnız həll edilə bilən nəticələri qeyd edir. Bu, bütün məhdudiyyətlərin yerinə yetirilməsini təmin edir (məsələn, NOT NULL), əks halda əməliyyat geri qaytarılacaq. Və - təcrid : əməliyyatın icrası zamanı paralel əməliyyatlar onun nəticəsinə təsir etməməlidir. Bu, bizə yekun olmayan məlumat vəziyyətini hər kəsdən gizlətmək imkanı verir. Əslində buna görə də uğursuz əməliyyatlar heç nəyi poza bilməz. Bir az aşağı tranzaksiyaların izolyasiya səviyyələri ilə tanış olacağıq. D - Davamlılıq : Əgər əməliyyat tamamlanıbsa, o zaman əmin ola bilərsiniz ki, onun etdiyi dəyişikliklər hansısa uğursuzluq səbəbindən ləğv edilməyəcək.

12. Tranzaksiyaların izolyasiya səviyyələri

Hər bir izolyasiya səviyyəsi müəyyən hərəkətlərə (imkanlara) icazə verir/qadağan edir:
  • fantom oxu - eyni əməliyyat çərçivəsində eyni məlumat sorğusu başqa (paralel) əməliyyat tərəfindən məlumatların əlavə edilməsi səbəbindən baş verən fərqli nəticələr verir.
  • təkrarlanmayan oxunuş - eyni əməliyyat çərçivəsində eyni məlumat sorğusu başqa (paralel) əməliyyat tərəfindən məlumatların dəyişdirilməsi və ya silinməsi nəticəsində baş verən müxtəlif nəticələr verir.
  • "çirkli" oxumaq - sonradan geri qaytarılmayacaq bir əməliyyat tərəfindən əlavə edilmiş və ya dəyişdirilmiş oxu məlumatları;
  • itirilmiş yeniləmə - müxtəlif əməliyyatlar eyni məlumat blokunu eyni vaxtda dəyişdirdikdə, sonuncudan başqa bütün dəyişikliklər itirilir (çox iş parçacığındakı "yarış vəziyyətinə" bənzər).
Rahatlıq üçün cədvəldə izolyasiya səviyyələrini və onların imkanlarını nəzərdən keçiririk:
İzolyasiya səviyyələri Fantom oxu Təkrarlanmayan oxu "çirkli" oxu itirilmiş yeniləmə
SERİYALANABİLƏN + + + +
TƏKRARLANABİLƏN_OXUYUN - + + +
READ_COMMITTED - - + +
READ_UNCOMMITTED - - - +

13. SQL injection nədir?

SQL inyeksiyasıGET veb-saytı sındırmaq üsullarından biridir, onun mahiyyəti sorğular və ya kukilər vasitəsilə bəzi SQL kodunun verilənlərə yeridilməsidir POST. Əgər veb-sayt bu cür inyeksiyalar həyata keçirirsə, verilənlər bazasına daxil olmaq və tətbiqi sındırmaq mümkündür. Məsələn, biz hansısa dəyişənin adını bilirik. column_nameTiplə deyək boolean. Sistem inyeksiyalara həssasdırsa, OR column_name=trueverilənlər bazasından bizə lazım olan hər şeyi əlavə edib yaza bilərik. OROR şərti yaradacaq və ondan sonrakı ifadəmiz həmişə olacaq true, bu da bizi daha da irəli aparacaq. SQL injection kimi vebsayta hücum, SQL sorğularında istifadə edilən daxil olan məlumatların düzgün işlənməməsi səbəbindən mümkündür. JDBC istifadə edərək verilənlər bazasına qoşulduqda siz müxtəlif Statements. PreparedStatementTəhlükəsizliyi artırmaq üçün adi əvəzinə istifadə etmək lazımdır Statement, çünki istifadə edildikdə, Statementsorğu sətirləri və dəyərlər sadəcə olaraq bir-birinə əlavə olunur və inyeksiyaları mümkün edir. Öz növbəsində, PreparedStatementxüsusi bir sorğu şablonu var və məlumatlar dırnaq işarələri ilə əks etdirilərək ona daxil edilir. Nəticədə, SQL inyeksiyaları yalnız bəzi sahənin simli təsviri kimi qəbul ediləcək. SQL inyeksiyalarından qorunmaq üçün müntəzəm ifadələrə əsaslanan yoxlamalardan istifadə edə bilərsiniz ( bu məqalədə müntəzəm ifadələr haqqında ətraflı oxuya bilərsiniz ). Собеседование разработчика: разбор вопросов по базам данных - 9Başqa bir seçim, daxil olan parametrlərin simvollarının sayına məhdudiyyət qoymaqdır: məsələn, 9999-dan çox olmayan bir nömrə alsanız, dörd gələn simvoldan ibarət bir məhdudiyyət olacaq. Bu, SQL inyeksiyalarından istifadə edərək hakerlik riskini azaldacaq.Siz Java-da təhlükəsizlik haqqında daha çox məlumatı “Java-da təhlükəsizlik: ən yaxşı təcrübələr” məqaləsindən öyrənə bilərsiniz .

14. Saxlanılan prosedurlar hansılardır? Saxlanılan funksiyalar? Tətik?

SQL-də saxlanılan prosedurlar verilənlər bazasındakı varlıqdır ki, bu da bir dəfə tərtib edilən və serverdə saxlanılan SQL təlimatları toplusudur. Bir sözlə, bu Java-da metodların analoqudur. Saxlanılan prosedurlar həm normal sorğular, həm də normal sorğular üçün əlçatan olmayan bəzi hərəkətlər olmaqla verilənlər üzərində hərəkətləri yerinə yetirə bilər. Prosedur bir dəfə yaradılan və sonra arqumentlər ötürməklə çağırılan SQL obyektidir. Bu yanaşmanın üstünlüyü ondan ibarətdir ki, bu təlimatlar bir dəfədən çox təkrar istifadə edilə bilər. Saxlanılan prosedurlar performansı yaxşılaşdırır, proqramlaşdırma imkanlarını artırır və məlumat təhlükəsizliyi xüsusiyyətlərini dəstəkləyir. Bir prosedur yaratmağı nəzərdən keçirək:
CREATE PROCEDURE procedure_name (first_param some_type, second_param some_type..)
 begin
……...
 end
Proseduru çağırmaq:
CALL procedure_name (first_param, second_param…..);
Saxlanan funksiya saxlanılan prosedurun bir növüdür. Funksiya arasındakı fərq ondan ibarətdir ki, o, həmişə yalnız bir dəyər qaytarır, prosedur isə bir sıra dəyərləri qaytarır. Saxlanılan prosedurları adi SQL ilə qarışdırmaq olmaz, lakin saxlanılan funksiya ola bilər - və bu, onun üstünlüyüdür. Digər tərəfdən, saxlanılan funksiyaların prosedurlardan daha çox məhdudiyyətləri var. Saxlanılan funksiyanın yaradılması:
CREATE FUNCTION function_name (first_param, second_param…..)
RETURNS some_type
 begin
……...
RETURN some_value;
end
Saxlanılan funksiyanın çağırılması:
SELECT function_name(first_param, second_param…..);
Tətik istifadəçi tərəfindən birbaşa çağırılmayan, lakin verilənlər dəyişdirildikdə aktivləşdirilən başqa bir saxlanılan prosedur növüdür. Yəni, bu prosedur müəyyən şərtlər yerinə yetirildikdə aktivləşdirilir, məsələn, INSERTvə ya DELETE, və ya UPDATEverilmiş cədvəlin müəyyən sütununda verilənlər. Tətikin işə salınması açar sözlərdən BEFORE(əlaqəli hadisədən əvvəl tetikleyici yanğınlar) və ya AFTER(hadisədən sonra) istifadə edilməklə müəyyən edilir.
CREATE TRIGGER trigger_name
ON table_name
AFTER INSERT
 begin
……...
 end

15. Təcrübə edin

Nə olursa olsun, müsahibədə ən çox yayılmış SQL sualı təcrübə olacaq - problemin həlli. Hansı vəzifələrlə qarşılaşacağınızı təxmin etməyə çalışmağın mənası yoxdur, çünki hər şey qarşıdakı insanın təxəyyülünün mürəkkəbliyindən asılıdır. Buna görə də, yeganə iş variantı müxtəlif mürəkkəblikdəki SQL sorğularında daha yaxşı olmaq olardı. sql-ex.ru müxtəlif tapşırıqlar üzərində məşq etmək üçün mənbə kimi xidmət edə bilər . İlk iyirmi tamamlanmış tapşırıqdan sonra həmsöhbətinizin sizi hər hansı bir SQL tapşırığı ilə qorxutması olduqca çətin olacaq. Собеседование разработчика: разбор вопросов по базам данных - 11Hamısı bu gün üçün: Ümid edirəm ki, bu məqaləni oxuduqdan sonra verilənlər bazası ilə bağlı suallar heç bir çətinlik və ya problem yaratmayacaq. Diqqətiniz üçün təşəkkür edirəm və yenidən görüşərik!
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION