Transact-SQL. FOREIGN KEY, CHECK & DEFAULT. Açar məhdudiyyətləri
Salam Dostlar.
Keçən dərsimizdə Transact-SQL sorğu dilinin UNIQUE və PRIMARY KEY açar məhdudiyyətləri ilə tanış olduq. Dərsimizin sonunda tapşırıq verilmişdi. Həmin tapşırığın cavabını nəzərinizə çatdırıram:
Tapşırıq 1. Yuxarıda göstərilən verilənlər bazası sxeminə uyğun olaraq Department və Phone cədvəllərinin PRİMARY KEY açar məhdudiyyətlərini təyin edin.
USE kadrlar; GO ALTER TABLE dbo.Department ADD CONSTRAINT PK_Department PRIMARY KEY (Dep_ID); GO ALTER TABLE dbo.Phone ADD CONSTRAINT PK_Phone PRIMARY KEY (Tel_ID); GO
Microsoft SQL Serverdə açarlar vasitəsilə məhdudiyyətin beş növü vardır: UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK və DEFAULT. Bugünkü dərsimizdə FOREIGN KEY, CHECK və DEFAULT məhdudiyyətləri barədə danışacağıq.
Bildiyiniz kimi, verilənlər bazasının yaradılması prosesində ən vacib işlərdən biri onun struktur sxeminin çəkilməsidir. Bu sxem əsasında bazanın cədvəlləri qurulur və onların arasında qurulacaq əlaqələr təyin olunur. Belə bir sxemlə biz keçən dərslərimizdə işləmişik və bu gün də həmin sxem üzərində çalışmamızı davam edəcəyik. Həmin verilənlər bazasının quruluşunu bir daha yadımıza salaq:
Fərz edək ki, ilkin mərhələdə bazamız üç cədvəldən ibarətdir: “Department”, “Personnel” və “Phone”:
FOREIGN KEY
Bu cədvəllərin PRIMARY KEY açarlarını biz artıq təyin etmişik: Department cədvəlində – Dep_İD sütunu, Personnel cədvəlində – Per_İD sütunu, Phone cədvəlində – Tel_İD sütunu. Bu məhdudiyyətlərə məntiqli və rahat anlaşılan adın verilməsi olduqca vacibdir, çünki onlar gələcəkdə cədvəllər arasında əlaqələrin qurulmasında istifadə olunacaq (asan anlaşılması üçün mətndə “cədvəllər arasında əlaqələr” söz birləşməsindən istifadə edilib. Nəzəri dərsələrimizdən bildiyiniz kimi verilənlər bazasında cədvəllər dedikdə çoxluqlar nəzərdə tutulur, əlaqələr dedikdə isə çoxluqlar arasında münasibətlər nəzərdə tutulur). Həmçinin PRIMARY KEY məhdudiyyəti təyin olunacaq sütunların adları məntiqli və rahat anlaşılan olması məsləhətdir. Təcrübəyə əsasən surrogate PRIMARY KEY açarları təyin olunan sütunlar cədvəlin adına və ya adının bir neçə ilk hərfinə _İD əlavə etməklə adlandırlır.
Həmin bazada olan cədvəllərin hər biri ilə ayrı-ayrılıqda işləmək olar; məsələn: Personnel cədvəlindən əməkdaşın ünvanları, adı, soyadı barədə məlumat əldə etmək olar. Lakin elə məlumatlar var ki, iki və ya bir neçə cədvəldən alınır. Məsələn: əməkdaşın çalışdığı departament barədə məlumatı əldə etmək üçün Personnel və Department cədvəlləri arasında əlaqələr yaradılmalıdır. Belə əlaqələrin qurulması üçün SQL – də daha bir məhdudiyyət açarından istifadə olunur: FOREIGN KEY. Adından aydındır ki, cədvəlin özündə deyil, cədvəldən xaric bir açardan (məhdudiyyət qoyulmuş sütundan) söhbət gedir. Bir cədvəldə digər cədvələ aid sütunla bağlılıq əlavə edilir və buna xarici açar deyilir. Istinad olunan xarici sütun aid olduğu cədvəldə unikal açarlardan birinə malik olmalıdır: PRİMARY KEY və ya UNİQUE. Əksər hallarda cədvəllər arasında əlaqələr yaratmaq üçün PRİMARY KEY açar məhdudiyyətindən istifadə olunur. Beləliklə, FOREIGN KEY – digər cədvəldə məlumatların axtarışı üçün istinad kimi istifadə olunan cədvəlin sütunu və ya sütunların birləşməsidir. Cədvəlin FOREIGN KEY xarici açar sütunundaki verilənlər təkrarlana bilər, lakin istinad olunan digər cədvəlin sütunundakı verilənlər təkrarlana bilməz və unikal olmalıdır. Bununla da istinad olunan cədvəldə mövcud olmayan məlumatların cədvələ daxil edilməsinin qarşısı alınır. Yuxarıdakı sxemə diqqət etsək görərik ki, Department cədvəlinin Dep_İD sütunu vardır. Həmin sütuna Department cədvəlində PRİMARY KEY açar məhdudiyyəti təyin olunub. Personnel cədvəlində də eyni adlı sütun görürük. Bu cədvəldəki Dep_İD sütunu Department cədvəlinin Dep_İD sütununa istinad edir və buna görə də Personnel cədvəlinin FOREIGN KEY xarici açarıdır. Bu sütun xüsusi olaraq bu məqsəd üçün öncədən yaradılıb və Department cədvəlindəki sütunla eyni adla adlandırılıb. Lakin bu qayda məcburi deyil və adlar fərqlənə də bilər, sadəcə təcrübəyə əsasən asan anlaşılması üçün belə sütunlar eyni adlandırlır. Personnel cədvəlinin Dep_İD sütununda iki dəfə 1 rəqəmini görürük. Deməli, həmin sətirlərdəki verilənlər Department cədvəlinin Dep_İD sütununun 1 rəqəmi olan sətrinə istinad edir. Lakin biz Personnel cədvəlinin Dep_İD sütununa 1, 2, 3, 4, 5 rəqəmlərdən başqa rəqəm, məsələn 7 rəqəmini əlavə etmək istəsək bunu edə bilməyəcəyik və VBİS Department cədvəlinin Dep_İD sütununda həmin verilənlərin mövcud olmaması barədə bizə səhv mesajı verəcək. Bununla da cədvəllər arasında əlaqə bütövlülüyü (referential integrity) təmin edilir.
FOREİGN KEY açar məhdudiyyətini CREATE TABLE əmri ilə cədvəl yaradılan zaman ayrı-ayrı sütunlar və tam cədvəl səviyyəsində təyin etmək olar. Həmçinin cədvəllər artıq mövcuddursa, FOREİGN KEY açar məhdudiyyəti ALTER TABLE əmri ilə cədvəldə dəyişiklik etməklə təyin olunur. FOREIGN KEY xarici açar məhdudiyyətin sintaksisinə nümunə üzərində baxaq:
Cədvəl sütununa FOREIGN KEY xarici açar məhdudiyyətinin təyin olunması:
USE kadrlar GO IF EXISTS (SELECT 1 from sys.objects WHERE name = 'Personnel'and TYPE = 'u') DROP TABLE Personnel CREATE TABLE dbo.Personnel ( Per_ID int NOT NULL CONSTRAINT PK_Personnel PRIMARY KEY, FirstName nvarchar(50) NULL, LastName nvarchar(50) NULL, Address nvarchar(100) NULL, Dep_ID int NULL REFERENCES dbo.Department (Dep_ID) )
FOREİGN KEY məhdudiyyəti cədvəl yaradılarkən bir sütuna qoyulursa bu sütun qarşısında REFERENCES əmri, istinad olunan cədvəlin adı və mötərizədə istinad olunan sütunun adı yazılır. Gördüyünüz kimi bu üsulda FOREİGN KEY əmri istifadə olunmur. FOREİGN KEY məhdudiyyəti cədvəl yaradılarkən sütun səviyyəsində qoyulursa cəmi bir sütun qeyd etmək olar.
Bu nümunədə biz İF EXİST əmrindən istifadə etdik. Bu əmr vasitəsilə əgər cədvəl verilənlər bazasında artıq mövcuddursa, silinəcək və daha sonra həmin cədvəl CREATE TABLE əmri ilə yenidən yaradılacaq. Bu əmri yeni baza yaradılan zaman yazmamaq olar, lakin dərslərimizdə göstərilən nümunələr tez-tez təkrarlandığı üçün, bu əmrdən istifadə olunması məsləhətdir, çünki keçən dərsdən qalan cədvəl və ya sütun ola bilər. Bu əmrlə siz sadəcə əmin olursunuz ki, cədvəl mövcuddursa silinəcək və yenidən yaradılacaq.
Tam cədvəl səviyyəsində FOREIGN KEY xarici açar məhdudiyyətinin təyin olunması:
USE kadrlar GO IF EXISTS (SELECT 1 from sys.objects WHERE name = 'Personnel'and TYPE = 'u') DROP TABLE Personnel CREATE TABLE dbo.Personnel ( Per_ID int NOT NULL CONSTRAINT PK_Personnel PRIMARY KEY, FirstName nvarchar(50) NOT NULL, LastName nvarchar(50) NOT NULL, Address nvarchar(100) NULL, Dep_ID int NULL, CONSTRAINT FK_Personnel_Department FOREIGN KEY (Dep_ID) REFERENCES dbo.Department (Dep_ID) )
Gördüyünüz kimi bu sintaksisdə sonuncu sütunun izahından sonra CONSTRAİNT əmri, açarın məntiqli və anlaşılan adı, FOREİGN KEY əmri, mötərizədə məhdudiyyət təyin olunan sütun, REFERENCES əmri, istinad olunan cədvəlin adı və sonda mötərizədə istinad olunan sütunun adı yazılır. Bu üsulla bir və ya bir neçə sütuna FOREİGN KEY açarını təyin etmək olar. Alınan nəticəyə baxaq:
Cədvəllər artıq mövcuddursa, ALTER TABLE əmri ilə cədvəldə dəyişiklik etməklə FOREIGN KEY xarici açar məhdudiyyətinin təyin olunması:
USE kadrlar; GO ALTER TABLE dbo.Personnel ADD CONSTRAINT FK_Personnel_Department FOREIGN KEY (Dep_ID) REFERENCES dbo.Department (Dep_ID); GO
Gördüyünüz kimi, burada ADD əmrindən istifadə olunub, bu da ALTER TABLE əmri ilə cədvəldə dəyişiklik olunanda istifadə olunan bir operatordur. Bir daha yadınıza salmaq istəyirəm ki, təcrübəyə əsasən verilənlər bazası yaradılan zaman ilk öncə cədvəllər yaradılması və daha sonra ALTER TABLE əmri ilə cədvəldə dəyişiklik etməklə məhdudiyyət açarlarının yaradılması tövsiyə olunur.
FOREİGN KEY açarı barədə deyilənlərin qısa məcmusunu təyin edək:
- FOREIGN KEY – digər cədvəldə məlumatların axtarışı üçün istinad kimi istifadə olunan cədvəlin sütunu və ya sütunların birləşməsidir.
- Cədvəlin FOREIGN KEY xarici açar sütunundaki verilənlər təkrarlana bilər, lakin istinad olunan digər cədvəlin sütunundakı verilənlər təkrarlana bilməz və unikal olmalıdır.
- FOREIGN KEY təyin olunmuş sütun istinad olunan cədvəldə unikal açarlardan biri olmalıdır: PRİMARY KEY və ya UNİQUE.
- FOREİGN KEY açar məhdudiyyəti CREATE TABLE əmri ilə cədvəl yaradılan zaman ayrı-ayrı sütunlar və tam cədvəl səviyyəsində təyin edilir.
- Cədvəl mövcuddursa FOREİGN KEY açar məhdudiyyəti cədvəldə ALTER TABLE əmri ilə dəyişiklik etməklə təyin edilir.
CHECK CONSTRAİNT
Yuxarıda göstərilən kadrlar verilənlər bazasının sxemində ilkin olaraq cəmi üç cədvəl əlavə etmişdik. Bildiyiniz kimi, verilənlər bazası tam qurulunadək onun sxemi və cədvəlləri üzərində müəyyən işlər görülür, bazada əlavə cədvəllər yaradılır və s. Fərz edək ki, həmin bazada işçilərin əmək haqqı barədə məlumatları da əlavə etməliyik. Bunun üçün bazada yeni bir cədvəl yaratmalıyıq. Cədvəlin adını “SalaryCosts” təyin edək. Cədvəldə üç sütun yaradaq: Salari_İD, Salary və Per_İD. Salari_İD – cədvəlin PRİMARY KEY açarı, Per_İD isə Personnel cədvəlinə istinad edən FOREİGN KEY açarıdır:
USE kadrlar; GO IF EXISTS (SELECT 1 from sys.objects WHERE name = 'SalaryCosts'and TYPE = 'u') DROP TABLE SalaryCosts CREATE TABLE SalaryCosts ( Salary_ID int NOT NULL, Salary decimal (10,2) NULL, Per_ID int NULL ) ALTER TABLE dbo.SalaryCosts ADD CONSTRAINT PK_Salary PRIMARY KEY (Salary_ID), CONSTRAINT FK_Salary_Personnel FOREIGN KEY (Per_ID) REFERENCES dbo.Personnel (Per_ID); GO
Bizə məlumat verilir ki, işçinin əmək haqqı məbləğı 140 manatdan aşağı və 50000 manatdan yuxarı olmamalıdır. Bu şərti təyin etmək üçün CHECK yoxlama məhdudiyyəti təyin etmək olar. Qoyulan şərti məntiqi ifadələrlə təyin etmək olar. Həmin ifadələrin nəticəsi TRUE və ya FALSE ola bilər. Məsələn: bizim şərtdə məntiqi ifadə əmri aşağıdakı şəkildə olacaq:
salary >= 140.00 AND salary <= 50000.00
CHECK məhdudiyyətlərində =, >=, <= və <> məntiqi verilənlər tipli operatorlar, predikatlardan, məsələn: İN və ya LİKE istifadə olunur.
CHECK yoxlama məhdudiyyəti – sütuna daxil edilən qiymətlərə müəyyən qaydalarla məhdudiyyətin qoyulması üçün istifadə edilir. Sütuna daxil edilən qiymətlər artıq verilənlərin tipi ilə məhddulaşdırılıb, CHECK yoxlama məhdudiyyətiylə qiymətlərin diapazonu və icazə verilən qiymətlərdən ibarət əlavə məhdudiyyət qoyulur. Bununla da cədvəlin bütövlülüyü qorunur. Şərtə uyğun gəlməyən verilənlərin bazaya daxil edilməsinin qarşısı alınır.
ALTER TABLE əmri ilə cədvəldə dəyişiklik etməklə yeni yaratdığımız cədvəlin Salary sütununa CHECK yoxlama məhdudiyyətini təyin edək.
ALTER TABLE dbo.SalaryCosts
ADD CONSTRAINT CHK_Salary
CHECK (Salary >= 140.00 AND Salary <= 50000.00);
GO
Alınan nəticəyə baxaq:
Həmçinin CHECK yoxlama məhdudiyyətini CREATE TABLE əmri ilə cədvəl yaradılan zaman ayrı-ayrı sütunlar və tam cədvəl səviyyəsində təyin etmək olar.
Cədvəl sütununa CHECK yoxlama məhdudiyyətinin təyin olunması:
USE kadrlar; GO IF EXISTS (SELECT 1 from sys.objects WHERE name = 'SalaryCosts'and TYPE = 'u') DROP TABLE SalaryCosts CREATE TABLE SalaryCosts ( Salary_ID int NOT NULL, Salary decimal (10,2) NULL CHECK (Salary >= 140.00 AND Salary <= 50000.00), Per_ID int NULL )
Tam cədvəl səviyyəsində CHECK yoxlama məhdudiyyətinin təyin olunması:
USE kadrlar; GO IF EXISTS (SELECT 1 from sys.objects WHERE name = 'SalaryCosts'and TYPE = 'u') DROP TABLE SalaryCosts CREATE TABLE SalaryCosts ( Salary_ID int NOT NULL, Salary decimal (10,2) NULL, Per_ID int NULL, CONSTRAINT CHK_Salary CHECK (Salary >= 140.00 AND Salary <= 50000.00) )
Yoxlama məhdudiyyətinin işləmə prinsipini nümunə üzərində göstərək. SalaryCosts cədvəlinə bəzi məlumatlar əlavə edək:
INSERT INTO dbo.SalaryCosts (Salary_ID, Salary) VALUES (1, 141.00); GO
Daxil etdiyimiz 141,00 manat yoxlamadan keçəcək çünki, şərtimizə uyğundur. Microsoft SQL Server əmrin müvəffəqiyyətlə icrası barədə mesaj çıxacaq:
Command(s) completed successfully.
Digər bir məbləğ əlavə edək:
INSERT INTO dbo.SalaryCosts (Salary_ID, Salary) VALUES (2, 139.00); GO
Daxil etdiyimiz 139,00 manat CHECK məhdudiyyətinə görə yoxlamadan keçməyəcək və Microsoft SQL Server əmrin icra olunmadığı barədə səhv mesajı çıxaracaq:
Msg 547, Level 16, State 0, Line 1 The INSERT statement conflicted with the CHECK constraint "CHK_Salary". The conflict occurred in database "kadrlar", table "dbo.SalaryCosts", column 'Salary'. The statement has been terminated.
Yeni bir məbləğ əlavə edək:
INSERT INTO dbo.SalaryCosts (Salary_ID, Salary) VALUES (3, 51000.00); GO
Daxil etdiyimiz 51000,00 manat CHECK məhdudiyyətinə görə yoxlamadan keçməyəcək və Microsoft SQL Server əmrin icra olunmadığı barədə yuxarıda göstərilən səhv mesajı çıxaracaq. Alınan nəticəyə baxaq:
Bu nümunələr sadəcə işləmə prinsipinin nümayişi üçün istifadə olunub. İNSERT əmri ilə növbəti dərslərimizdə tanış olacağıq.
DEFAULT CONSTRAİNT
Transact-SQL – də istifadə olunan sonuncu məhdudiyyət DEFAULT məhdudiyyətidir. Faktiki demək olar ki, DEFAULT məhdudiyyəti heç nəyə məhdudiyyət qoymur və sadəcə İNSERT əmri ilə verilənlərin daxil edilməsi zamanı digər şərt qoyulmayıbsa, hər-hansı bir seçilmiş ilkin təyinetmə qiymətinin (default) yazılması üçün istifadə olunur. Bu məhdudiyyət NULL məhdudiyyəti qoyulmuş sütunlarda daha çox istifadə olunur. NULL məhdudiyyəti sütunda boş və ya heç bir qiyməti olmayan sətirlərin qarşısını alır. Lakin biz deyə bilərik ki, daxil edilən məlumat əlimizdə yoxdursa və ya onu bilmiriksə, İNSERT əmri ilə məlumatın daxil edilməsi dayanmasın və icra olunsun. Bunu əldə etmək üçün həmin sütuna DEFAULT məhdudiyyəti qoyulur. DEFAULT məhdudiyyəti ilə hər-hansı bir ilkin qiymət təyin olunur, məsələn: Salary sütununa 500 manat DEFAULT məhdudiyyətini təyin etsək, işçinin əmək haqqını bilmiriksə, həmin işçiyə ilkin olaraq 500 manat təyin olunacaq.
DEFAULT məhdudiyyətini cədvəldə ALTER TABLE əmri ilə dəyişiklik etməklə təyin etmək olar. Lakin təcrübəyə əsasən bu məhdudiyyət CREATE TABLE əmri ilə cədvəl yaradılan zaman ayrı-ayrı sütunlara təyin olunur. DEFAULT məhdudiyyətinin təyin olunması prosesinə nümunə üzərində baxaq:
Cədvəldə ALTER TABLE əmri ilə dəyişiklik etməklə DEFAULT məhdudiyyətinin təyin olunması:
USE kadrlar; GO ALTER TABLE dbo.SalaryCosts ADD CONSTRAINT DFT_SalaryCosts_Salary DEFAULT (500.00) FOR Salary GO
Microsoft SQL Server Management Studio – da alınan nəticəyə baxaq:
Gördüyünüz kimi, DEFAULT məhdudiyyətinə DFT_SalaryCosts_Salary adı təyin olunmuşdur. Təcrübəyə əsasən məhdudiyyətlərə adların verilməsi məsləhət olunur, çünki gələcəkdə cədvəllər və ya bazalar arasında əlaqələr yaradılanda həmin adlardan istifadə olunur və s.
CREATE TABLE əmri ilə cədvəl sütununa DEFAULT məhdudiyyətinin təyin olunması:
USE kadrlar; GO IF EXISTS (SELECT 1 from sys.objects WHERE name = 'SalaryCosts'and TYPE = 'u') DROP TABLE SalaryCosts CREATE TABLE SalaryCosts ( Salary_ID int NOT NULL, Salary decimal (10,2) NOT NULL CONSTRAINT DFT_SalaryCosts_Salary DEFAULT (500.00), Per_ID int NULL )
Burada DEFAULT məhdudiyyətinə DFT_SalaryCosts_Salary adı təyin olunmuşdur. CONSTRAINT DFT_SalaryCosts_Salary əmrlərini yazmaya da bilərik, bu zaman VBİS özü məhdudiyyətə qarışıq bir ad təyin edəcək. Lakin yuxarıda deyildiyi kimi, təcrübəyə əsasən məhdudiyyətlərə adların verilməsi məsləhət olunur.
Qeyd etmək lazımdır ki, CTREATE TABLE əmri ilə tam cədvəl səviyyəsində DEFAULT məhdudiyyətini təyin etmək olmur və yalnız cədvəl sütununa təyin oluna bilər. Məsələ burasındadır ki, ANSİ SQL standartında DEFAULT sütunun atributu kimi təsvir olunub, Microsoft SQL Server – də isə məhdudiyyətin bir növü kimi istifadə olunur.
DEFAULT məhdudiyyətinin işləmə prinsipini nümunə üzərində göstərək:
Yuxarıda göstərilən qaydada CREATE TABLE əmri ilə cədvəl sütununa DEFAULT məhdudiyyətinin təyin edək. Daha sonra bazaya bəzi məlumatlar daxil edək:
INSERT INTO dbo.SalaryCosts (Salary_ID, Per_ID) VALUES (1,4)
Və cədvəldə olan bütün məlumata sorğu verək:
SELECT * FROM SalaryCosts; GO
Microsoft SQL Server Management Studio – da alınan nəticəyə baxaq:
Göründüyü kimi, biz Salary sütunu üçün qiymət təyin etmədik, həmçinin Salary sütununda NULL qiymətinə də icazə verilmir, lakin 500,00 qiyməti Salary sütununa daxil edildi. Bu rəqəm DEFAULT məhdudiyyətindən götürüldü.
Beləliklə bugünkü dərsimizi yekunlaşdıraq və qısa məcmusunu təyin edək:
- FOREIGN KEY – digər cədvəldə məlumatların axtarışı üçün istinad kimi istifadə olunan cədvəlin sütunu və ya sütunların birləşməsidir.
- Cədvəlin FOREIGN KEY xarici açar sütunundaki verilənlər təkrarlana bilər, lakin istinad olunan digər cədvəlin sütunundakı verilənlər təkrarlana bilməz və unikal olmalıdır.
- FOREIGN KEY təyin olunmuş sütun istinad olunan cədvəldə unikal açarlardan biri olmalıdır: PRİMARY KEY və ya UNİQUE.
- FOREİGN KEY açar məhdudiyyətini CREATE TABLE əmri ilə cədvəl yaradılan zaman ayrı-ayrı sütunlar və tam cədvəl səviyyəsində təyin edilir
- Cədvəl mövcuddursa, FOREİGN KEY açar məhdudiyyətini cədvəldə ALTER TABLE əmri ilə dəyişiklik etməklə təyin edilir.
- CHECK yoxlama məhdudiyyəti – sütuna daxil edilən qiymətlərə müəyyən qaydalarla məhdudiyyətin qoyulması üçün istifadə edilir.
- CHECK yoxlama məhdudiyyətini CREATE TABLE əmri ilə cədvəl yaradılan zaman ayrı-ayrı sütunlar və tam cədvəl səviyyəsində təyin etmək olar.
- CHECK yoxlama məhdudiyyətini ALTER TABLE əmri ilə dəyişiklik etməklə təyin etmək olar.
- DEFAULT məhdudiyyəti İNSERT əmri ilə verilənlərin daxil edilməsi zamanı digər şərt qoyulmayıbsa, hər-hansı bir seçilmiş ilkin təyinetmə qiymətinin (default) yazılması üçün istifadə olunur.
- CTREATE TABLE əmri ilə tam cədvəl səviyyəsində DEFAULT məhdudiyyətini təyin etmək olmur və yalnız cədvəl sütununa təyin oluna bilər.
- Təcrübəyə əsasən DEFAULT məhdudiyyəti CREATE TABLE əmri ilə cədvəl yaradılan zaman ayrı-ayrı sütunlara təyin olunur.
Yuxarıda göstərilən SQL kod nümunələrinin əksəriyyəti (DEFAULT məhdudiyyətindən başqa) həm Microsoft SQL Server, həm də Oracle Database tərəfindən dəstəklənir və siz onları T-SQL və PL/SQL məşğələlərində istifadə edə bilərsiniz.
Tapşırıqlar:
- Yuxarıda göstərilən verilənlər bazası sxeminə uyğun olaraq Personnel və Phone cədvəlləri arasında əlaqə yaratmaq üçün Phone cədvəllərinin FOREİGN KEY açar məhdudiyyətlərini təyin edin.
- Əməkdaşların əmək haqqı maksimal məbləğini 8000 manat təyin edin.
- Əməkdaşların hansı departamentində çalışacağını bilmiriksə, ilkin olaraq onlar HR departamentinə təyin olunmalıdır
Növbəti məqalələrdə görüşənədək.
Diqqətinizə görə təşəkkür edirəm.
Dərsliyin əvvəlki hissələrini aşağıdakı keçidlərdən tapa bilərsiniz:
Transact-SQL. UNIQUE & PRIMARY KEY. Açar məhdudiyyətləri
Transact-SQL. CREATE TABLE operatoru. Cədvəllərin yaradılması
Books Online for SQL Server 2014 (BOL). T-SQL sintaksisinin oxunuş qaydası
Transact-SQL və CREATE DATABASE operatoru nümunələrlə