SQL nədir? SQL, T-SQL yoxsa PL/SQL?
SQL nədir? SQL, T-SQL yoxsa PL/SQL?
Salam Dostlar.
Güman edirəm ki, verilənlər bazasının nə olduğunu artıq bilirsiniz. Müasir həyatımızı məlumatsız təsəvvür edə bilmərik. Hər zaman müxtəlif məlumatlarla üzləşirik. Həmin məlumatları televiziya, radio, kitablar, internet və s. vasitələrlə əldə edirik. Bizə lazım olan məlumatları kompüterlərlə və ya digər avtomatlaşdırılmış vasitələrlə ötürülməsi və emal edilməsi üçün yararlı səkilə salsaq və bir yerə, başqa sözlə, bazaya yığsaq, həmin məlumatlar artıq verilənlərə çevrilir və verilənlər bazasını təşkil edir. Biz kitabxananı kitabların saxlanıldığı bir yer kimi tanıyırıq. Kitabxanada kitablar bir və ya bir neçə otaqda yerləşir. Kitabxanaya oxucu gəlir və kitab sifariş edir. Oxucunun istədiyi kitab həmin otaqda yerləşən kitab rəfindən tapılır, gətirilir və ona verilir. Yeni kitab çıxanda kitabxanaya gətirilir, onun üçün kitab rəfində yer ayrılır və orada yerləşdirilir. Köhnəlmış və istifadəyə yararsız kitablar kitabxanadan çıxarılır və arxıvə qoyulur. Bütün bu prosesləri kitabxananın işçiləri icra edir. Bəs biz kitablar barədə məlumatları verilənlərə çevirsək və kompüterdə saxlasaq onlarla necə davranmalıyıq? Yuxarıda sadalanan prosesləri hansı yollarla həyata keçirməliyik? Yəqin ki, kitabxanaya oxucu gələndə onun istədiyi kitabı tapmaq üçün ilk növbədə həmin kitab barədə kitabxananın verilənlər bazasına sorğu verməliyik, kitab orada tapıldıqda kitabın elektron versiyası varsa, onu oxucuya təqdim etməliyik. Yeni kitab çıxanda ona aid məlumatlar kitabxananın verilənlər bazasına daxil etməliyik, kitab yararsız olduqda kitabxananın bazasından silməliyik və s. Bütün bu proseslər: verilənlər bazasına sorğunun verilməsi, yeni verilənlərin əlavə edilməsi, onların yenilənməsi, lazımsız verilənlərin silinməsi və s. verilənlər bazasında hansı vasitələrlə həyata keçirilir?
Yuxarıda sadalanan prosesləri həyata keçirmək və ümumilikdə verilənlərlə işləmək üçün formal, qeyri-prosedur bir dil – SQL (İng. Structured Query Language – “strukturlaşdırılımış sorğu dili”) yaradılmışdır. Ümumilikdə, verilənlər bazalarının texnologiyasının tarixi 60-cı illərin əvvəllərindən başlayır. Həmin illərdə verilənlər bazalarının idarə edilməsi üçün proqram vasitələrinin yaradılması istiqamətində ilk cəhdlər atılmışdır. 1969-cu ildə Edqar Frank Kodd tərəfindən münasibətli (relational) verilənlər modeli təqdim edilmişdir. Münasibətli verilənlər bazasının idarə edilməsi sistemi (gələcəkdə mətndə VBİS) yaradılması üzrə ilk uğurlu cəhd İBM şirkəti tərəfindən edilmişdir. IBM şirkətinin tədqiqat laboratoriyalarından birində 1970-ci illərin əvvəllərində IBM System R eksperimental münasibətli VBİS-i yaradılmışdır. Həmin VBİS-də verilənlərin sadə üsulla idarə olunması üçün SEQUEL adlı xüsusi dil yaradılmışdır. SEQUEL abreviaturası “Structured English Query Language” sözlərinin ilk hərflərindən yaranır və “sorğuların strukturlaşdırılımış ingilis dili” kimi tərcümə olunur. Lakin SEQUEL abreviaturası eyni zamanda “Hawker Siddeley” aviatikinti şirkətlər qrupunun ticarət markası olduğu üçün hüquqi səbəblərdən İBM daha sonra SEQUEL abreviaturasını SQL (Structured Query Language) şəklində təqdim etdi. 1986-cı ildə SQL dilinin birinci standartı ANSI (American National Standards Institute) tərəfindən qəbul olunduqdan sonra onun rəsmi tələffüzü [, es kju:’ el] (es kyu el) oldu. Lakin ingilis dilli mütəxəssislər bu gün də SEQUEL abreviaturasından yadda qalmış “sikvel” işlədirlər.
Tədqiqatın məqsədi proqramlaşdırmanı bacarmayan istənilən istifadəçi tərəfindən istifadə oluna bilən sadə qeyri-prosedur dilinin yaradılması idi. Sorğu dilinin yaradılmasıyla Donald Çemberlin (Donald D. Chamberlin) və Rey Boys (Ray Boyce) məşğul olurdu. Pet Selindjer (Pat Selinger) dəyər optimizatoru (cost-based optimizer), Reymond Lori (Raymond Lorie) sorğuların kompilyatoruyla məşğul olurdu. Yeni dili dəstəkləyən birinci VBİS-lər 1979-cu ildə Relational Software Inc şirkəti (daha sonra Oracle şirkəti olmuş) tərəfindən yaradılmış Oracle V2, və IBM-in System/R əsasında System/38 VBİS-ləri olmuşdur. Beləliklə, E.F.Kodd verilənlərin münasibətli (relational) modelini yaratdı, həmin modeldə olan verilənlər bazasında işləmək üçün dili isə ilk dəfə İBM şirkətinin mütəxəssisləri yaratdı.
Lakin mövcud olan SQL dili server və proqram təminatı ilə məşğul olan şirkətlərinin istəklərini təmin etmirdi və onlar da öz növbəsində özlərinin sorğu dillərini istehsal etməyə başladılar. Məsələn: 1984-cü ildə Mark Hoffman və Bob Epstein tərəfindən Sybase şirkəti yaradıldı və onlar Transact-SQL prosedur dilinin üzərində işləməyə başladılar. 1987-ci ildə Sybase və Microsoft şirkətləri arasında saziş bağlandı və onlar birgə Sybase (Sybase DataServer) VBİS üzərində işləməyə başladılar. Həmçinin, 1983-cü ildə Relational Software, Inc. Oracle Corporation adı altında fəaliyyətini davam etdi və SQL-in dialekti PL/SQL üzərində işləri davam etməyə başladı. Beləliklə, 1980-ci illərin əvvəllərində müxtəlif istehsalçıların bir neçə VBİS-ləri mövcud idi, həm də onların hər birinin verilənlərlə işləmək üçün özünəməxsus dili mövcud idi. Buna görə müxtəlif VBİS-ə daşına bilən vahid bir SQL dilinin standartının yaradılması qərarına gəldilər. Bu cür standartların yaradılmasıyla ANSİ (İng. American National Standards Institute – “Amerika Milli Standartlar İnstitutu”) və İSO (İng. International Organization for Standardization –“Standartaşdırma üzrə Beynəlxalq Təşkilat”) məşğul idi. SQL dilinin ilk standartı 1986-cı ildə ANSİ tərəfindən və 1987-ci ildə İSO tərəfindən buraxıldı. Həmin SQL-86 standartı qeyri-formal olaraq SQL1 adlandırıldı. Lakin həmin standart VBİS istehsalçıları tərəfindən formal olaraq qəbul olunmadı və çoxlu dəyişiklərə məruz qaldı. Məhz bu səbəbdən bəzi ədəbiyyatda SQL dilinin ilk standartı kimi SQL-86 deyil ondan sonra çıxmış SQL-89 standartı göstərilir. SQL-86 standartı yenidən işləndi və 1989-cu ildə yeni SQL-89 standartı qəbul olundu və tətbiq olundu. Daha sonra SQL standartları bir neçə dəfə dəyişdi. 1992-ci ildə SQL-92 və ya SQL2 standartı, 1999-cu ildə SQL:1999 və ya SQL3 standartı, 2003-cü ildə SQL:2003 (bəzi ədəbiyyatda bunu da SQL3 adlandırırlar), 2006-cı ildə SQL:2006, 2008-ci ildə SQL:2008 və nəhayət 2011-ci ildə SQL:2011 qəbul olundu. Göründüyü kimi, SQL standartı dinamik inkişaf etmişdir və standartın mövcudluğu SQL dilini çox güclü və geniş istifadə olunan vasitəyə çevirmişdir. İlk dəfə standarta “uyğunluğun səviyyəsi” anlayışı SQL-92 standartında təklif edilmişdi. VBİS istehsalçılarının əksəriyyəti öz məhsullarını SQL-92 standartına uyğunlaşdırdılar və hal-hazırda mövcud olan VBİS əksəriyyətin əsasını həmin standart təşkil edir və daha sonra çıxan standartlara uyğunluğu üzərində daim iş gedir. Lakin SQL dilinin dialektləri eyni köklü olsa da müxtəlif VBİS-nin özünəməxsus xüsusiyyətləri vardır.
Yəqin ki, ədəbiyyatda SQL abreviaturası ilə yanaşı T-SQL və PL/SQL ilə də rastlaşmısınız. Və təbii ki, sual yaranır: bunlar eyni şeydir, yoxsa bir-birindən tamamilə fərqlidir? SQL dilinin ilk versiyası yaradılandan sonra, hər dəfə dəyişiklərə məruz qalmışdır. Məsələ bundadır ki, SQL-in ilk versiyası deklarativ xarakter daşıyırdı, yəni proqramlaşdırma dilində olan imperativ əmrlər və hesablamalar onda mövcud deyildi və SQL sadəcə qeyri-prosedur sorğu dili kimi istifadə edilirdi. Bu da VBİS-də müəyyən çətinliklər yaradırdı. SQL dilinin vahid standartı qəbul olunsa da VBİS istehsalçıları mövcud olan məhdudiyyətləri dəf etmək məqsədiylə yeni həllər axtarmağa başladılar. Aydınlıq gətirmək üçün qeyd etmək lazımdır ki, deklarativ və imperativ proqramlaşdırma mövcuddur. İmperativ proqramlaşdırmada proqram icra olunmalı hərəkətlər yığımı kimi təqdim olunur. Yəni kod məsələnin həllini təsvir edir. İmperativ dillərin tipik nümayəndələri – C, Pascal, BASIC. Deklarativ proqramlaşdırmada kod məsələnin özünü təsvir edir (onun həlli üsulunu deyil). Deklarativ dillərin nümayəndələri: Lisp, ML, Prolog, Haskell… Bəzən imperativ dillərinə deklarativ dillərinin elementləri daxildir və əksinə. Məsələn: C# da olan atributlar deklarativ proqramlaşdırmanın elementidir. Beləliklə, Oracle ilkin SQL-də olan məhdudiyyəti aradan qaldırmaq üçün klassik SQL dilinə əlavələr etdi. Məsələn: dəyişənlərlə, sabitlərlə, prosedurlarla, funksiyalarla, modullarla, şərti operatorlarla, dövrlərlə işləmək, istisnaları emal etmək, paketlər və triqqerlər yaratmaq imkanı əlavə etdi. Nəticədə, SQL dilinə prosedur dilinin elementləri əlavə edilməklə SQL dilinin yeni dialektini, yəni PL/SQL (Procedural Language / Structured Query Language) yaradıldı.
Eyni zamanda, 1984-cü ildə Sybase şirkəti Transact-SQL dilinin üzərində işləməyə başladı. 1987-ci ildə Sybase və Microsoft şirkətləri arasında saziş bağlandı və onlar birgə VBİS üzərində işləməyə başladılar. 1992-ci ildə Microsoft və Sybase birgə səyləri nəticəsində SQL Server 4.2 VBİS buraxıldı. Daha sonra, 1994-cü ildə, Microsoft və Sybase ayrıldılar və Microsoft Transact-SQL (və ya T-SQL) dilini inkişaf etdirməyə davam etdi. Adından göründüyü kimi, SQL dilinə əsasən tranzaksiyalarla işləmək imkanı əlavə olunub. Daha sonra Microsoft T-SQL dilinə prosedur elementlər də əlavə etdi, yəni funksiyalarla, proseduralarla, triqqerlərlə işləmək imkanı. Beləliklə, deyə bilərik ki, PL/SQL və T-SQL klassik SQL standartı əsasında qurulub və T-SQL dilində yazılan əksər kodlar PL/SQL də icra olunacaqdır. Lakin, fərqli imkanlar olduğu üçün T-SQL-də yazılmış bəzi xüsusi kodlar PL/SQL-də işləməyəcək və əksinə. Həmçinin qeyd edə bilərik ki, 1996-cı ilə qədər SQL proqramlaşdırma dili deyildi. Həmin ildə SQL/PSM standartı qəbul olundu (PSM – İng. Persistent Stored Modules – “Daim Saxlanılan Modullar”) və SQL dilinə prosedur proqramlaşdırma imkanları əlavə edildi. Həmin ildən başlayaraq SQL/PSM də, onun dialektləri də: PL/SQL və T-SQL proqramlaşdırma dillərinin imkanlarına malikdirlər və proqramlaşdırma dili kimi təqdim oluna bilərlər.
VBİS-də SQL meydana çıxana qədər verilənlərlə işləmək üçün bir-biri ilə əlaqəsi olmayan ən azı üç dil dəstəkləmək lazım olurdu: məlumatların təyinatı dili; verilənlərlə manipulyasiya dili; və verilənlər bazasının inzibatçılıq dili. Bundan başqa, əgər VBİS-in istifadəçilərinə verilənlər bazasına interaktiv girişi vermək tələb olunurdusa, operatorları dialoq rejimində yerinə yetirilən daha bir dil daxil etmək lazım olurdu. SQL dili bütün bu məsələləri həll etmək üçün yaradıldı. Daha bir neçə ayrı-ayrı proqramlaşdırma dilinə ehtiyac qalmadı və verilənlərlə işləmək üçün vahid bir dil yaradıldı. SQL dilinin bütün operatorları bir neçə qrupa bölünür:
DDL (İng. Data Definition Language – “Verilənlərin Təyini Dili”)
Verilənlər bazasının strukturunu və ya sxemini təyin etmək üçün istifadə olunur. Bəzi nümunələr:
CREATE – bazada obyektlərin yaratmaq;
ALTER – bazanın strukturunu dəyişmək;
DROP – verilənlər bazasının obyektlərini silmək;
TRUNCATE – cədvəldə olan bütün verilənləri silmək; verilənlərin yazılması üçün təyin olunmuş sətirlər silinir;
COMMENT – verilənlər lüğətinə şərh əlavə etmək;
RENAME – obyektin adını dəyişmək.
DML (İng. Data Manipulation Language – “Verilənlərin Emalı Dili” )
Verilənlər bazasının obyektlərinin emalı üçün nəzərdə tutulub. Bəzi nümunələr:
SELECT – verilənlər bazasından məlumat almaq;
INSERT – cədvələ verilənlər daxil etmək;
UPDATE – cədvəldə verilənləri dəyişmək;
DELETE – cədvəldə olan verilənləri silmək; verilənlərin yazılması üçün təyin olunmuş sətirlər yerində qalır;
MERGE – cədvələ digər cədvəldən verilənlər daxil etmək və ya dəyişmək;
DCL (İng. Data Control Language – “Verilənlərin Nəzarəti Dili”)
Verilənlər bazasının obyektlərinin üzərində nəzarət etmək üçün nəzərdə tutulub.
GRANT – verilənlər bazasına istifadəçiyə müəyyən icazələr vermək;
REVOKE – verilənlər bazasına istifadəçiyə müəyyən icazələri geri almaq.
TCL (İng. Transactional Control Language – “Tranzaksiyaların Nəzarəti Dili”)
Verilənlər bazasında baş verən müxtəlif əməliyyatları idarə etmək üçün istifadə olunur. Bəzi nümunələr:
COMMIT – tranzaksiyanın təsdiqlənməsi;
ROLLBACK – tranzaksiyanın dayandırılması və ya tamamlanması.
Beləliklə, bugünkü məqalənin də sonuna gəlib çatdıq. Güman edirəm ki, SQL-in nə olduğunu və SQL, T-SQL, PL/SQL abreviaturalarının da mənasını artıq bilirsiniz.
Nəzəri yazıların məqsədi yeni başlayan mütəxəssislərə istiqamət göstərməkdir, necə ki bir yerə getmək üçün həmin yerə gedən avtobusun marşrutunu bilməliyik. Tələbələrin ən çox verdiyi suallardan biri: SQL dialektlərinin hansını öyrənim? Bəzən onlara belə cavab verilir: Oracle verilənlər bazasıyla işləyəcəksənsə PL/SQL öyrən, Microsoft SQL Server verilənlər bazasıyla işləyəcəksənsə Transact-SQL öyrən, MySQL verilənlər bazasıyla işləyəcəksənsə SQL/PSM öyrən. Əslində cavab düzdür. Lakin müasir proqram təminatlarının əksəriyyəti (əsasən ERP əsaslı) bütün sadalanan verilənlər bazalarında işləyə bilirlər. Və mənim fikrimcə SQL dilinin standartını bilmək daha səmərəlidir, çünki bütün dialektlərin kökündə həmin standart durur. T-SQL və PL/SQL dialektlərinin həmin standartdan kənar əlavələrini və xüsusiyyətlərini də bilsək (nəzərə alsaq ki, onların sayı o qədər də çox deyil) bütün sadalanan VBİS-də asanlıqla işləyə bilərik.
Növbəti məqalələrdə SQL dilinin standartı əsasında T-SQL və PL/SQL olan fərqlər və xüsusiyyətlər göstərməklə praktik hissəyə keçəcəyik. Beləliklə də, Ana dilimizdə daha dolğun və səmərəli yeni bir SQL dərsliyi İnşaAllah ərsəyə gələcək. Bu prosesdə əziz oxucuların iştirakı olduqca vacibdir, çünki hər bir yeni yazı və ya dərslik oxuculardan gələn təkliflər və tövsiyələr əsasında qurulur.
Növbəti məqalələrdə görüşənədək.
Diqqətinizə görə təşəkkür edirəm.
Şərhlər ( 4 )
Salam.bu suala cavab tapa bilmirəm zəhmət olmasa düzgün cavab yazardız.
SQL(course10)
SQL(course 8) length hansi dogrudur
SQL(course12)
Salam. Zəhmət olmasa sualınızı dəqiqləşdirin. Saytın sual-cavab bölməsi var. Sualınızı ora da yaza bilərsiniz. Belə olan halda, digər həmkarlar da yardımçı ola bilər.
Təşəkkür edirəm.
çox saqolun.Bu sual imtahanda düşüb.Amma başa düşməmişəm.SQL-ə aid test vəsaiti axtarıram.Kömək eləyin
Cox sagolun