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.
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?
Verilə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
- Ə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.
- 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:
- 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).
- İkinci normal forma:
- Birinci normal formanın şərtləri yerinə yetirilir;
- Açar olmayan hər bir atribut əsas açara istinad edir.
- Üçü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
null
o 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
UNIQUE
bütün əsas sütunların olduğu ilk indeksi tapır NOT NULL
və 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ı?
Axı, ə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 DELETE
bilə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ə, NULL
xarici 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 DELETE
Davranış üçü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.
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.
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.
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.
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.
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:
- Bank hesabına pul köçürün.
- 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_name
Tiplə deyək
boolean
. Sistem inyeksiyalara həssasdırsa,
OR column_name=true
verilənlər bazasından bizə lazım olan hər şeyi əlavə edib yaza bilərik.
OR
OR şə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
.
PreparedStatement
Təhlükəsizliyi artırmaq üçün adi əvəzinə istifadə etmək lazımdır
Statement
, çünki istifadə edildikdə,
Statement
sorğ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ə,
PreparedStatement
xü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 ).
Baş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,
INSERT
və ya
DELETE
, və ya
UPDATE
verilmiş 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.
Hamı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!
GO TO FULL VERSION