Ms sql server sorğuları. MS SQL Server verilənlər bazasında sorğunun (Query) yaradılması nümunəsi

Son yeniləmə: 07/05/2017

Əvvəlki mövzuda SQL Management Studio proqramında bir cədvəldən ibarət sadə verilənlər bazası yaradılmışdı. İndi ilk SQL sorğusunu təyin edib icra edək. Bunu etmək üçün SQL Management Studio proqramını açın, Object Explorer-də (server adı) yuxarı səviyyəli elementə sağ klikləyin və görünən kontekst menyusundan New Query seçin:

Bundan sonra proqramın mərkəzi hissəsində SQL əmrlərini daxil etmək üçün pəncərə açılacaqdır.

Əvvəlki mövzuda yaradılmış cədvəldə sorğu keçirək, xüsusən də ondan bütün məlumatları alacağıq. Bizim verilənlər bazamız universitet adlanır və cədvəl dbo.Students-dir, ona görə də cədvəldən məlumatları əldə etmək üçün aşağıdakı sorğunu daxil edirik:

* SEÇİN universitet.dbo.Students

SELECT ifadəsi sizə məlumatları seçməyə imkan verir. FROM məlumatların alınacağı mənbəni təyin edir. Əslində, bu sorğu ilə biz “hamını universitet.dbo.Tələbə cədvəlindən SEÇİN” deyirik. Qeyd etmək lazımdır ki, cədvəlin adı verilənlər bazası və sxemi göstərən tam yolundan istifadə edir.

Sorğunu daxil etdikdən sonra alətlər panelindəki İcra düyməsini sıxın və ya F5 düyməsini sıxa bilərsiniz.

Sorğunun icrası nəticəsində proqramın aşağı hissəsində sorğunun nəticələrini - yəni Tələbələr cədvəlindəki bütün məlumatları əks etdirən kiçik bir cədvəl görünəcəkdir.

Eyni verilənlər bazasına qarşı çoxlu sorğular etməliyiksə, onda verilənlər bazasını icra etmək üçün USE əmrindən istifadə edə bilərik. Bu halda, cədvəlləri sorğulayarkən verilənlər bazası adı və sxemi olmadan onların adını qeyd etmək kifayətdir:

Universitet SEÇİMİ * Tələbələrdən İSTİFADƏ EDİN

Bu halda biz server üçün bütövlükdə sorğunu icra edirik, serverdəki istənilən verilənlər bazasına daxil ola bilərik; Lakin biz sorğuları yalnız müəyyən verilənlər bazası daxilində də yerinə yetirə bilərik. Bunu etmək üçün istədiyiniz verilənlər bazasına sağ vurun və kontekst menyusundan Yeni Sorğu seçin:

Əgər bu halda yuxarıda istifadə olunan Tələbələr cədvəlini sorğulamaq istəsək, sorğuda verilənlər bazası adını və sxemini qeyd etməli olmazdıq, çünki bu dəyərlər artıq aydın olardı.

SQL Server Management Studio bütün növ sorğuların yaradılması üçün tam alət təqdim edir. Onun köməyi ilə siz sorğular yarada, saxlaya, yükləyə və redaktə edə bilərsiniz. Bundan əlavə, heç bir serverə qoşulmadan sorğular üzərində işləyə bilərsiniz. Bu alət həmçinin müxtəlif layihələr üçün sorğular hazırlamaq imkanı verir.

Siz həm Sorğu Redaktoru, həm də Həll Explorer-dən istifadə edərək sorğularla işləyə bilərsiniz. Bu məqalə bu alətlərin hər ikisini əhatə edir. SQL Server Management Studio-nun bu iki komponentinə əlavə olaraq, biz daxili sazlayıcıdan istifadə edərək SQL kodunun sazlanmasına baxacağıq.

Sorğu redaktoru

Sorğu Redaktoru panelini açmaq üçün Sorğu redaktoru, SQL Server Management Studio alətlər panelində Yeni Sorğu düyməsini klikləyin. Bu panel təkcə Database Engine sorğularını deyil, bütün mümkün sorğuları yaratmaq üçün düymələri göstərmək üçün genişləndirilə bilər. Varsayılan olaraq, yeni Database Engine sorğusu yaradılır, lakin siz alətlər panelindəki müvafiq düyməni klikləməklə MDX, XMLA və digər sorğuları da yarada bilərsiniz.

Sorğu Redaktoru panelinin altındakı status çubuğu redaktorun serverlə əlaqə vəziyyətini göstərir. Əgər siz serverə avtomatik qoşulmasanız, Sorğu Redaktorunu işə saldığınız zaman qoşulacağınız serveri və autentifikasiya rejimini seçməyə imkan verən Serverə Qoşulun informasiya qutusu görünür.

Sorğuları oflayn redaktə etmək serverə qoşulduqdan daha çox çeviklik təmin edir. Sorğuları redaktə etmək üçün serverə qoşulmaq lazım deyil və sorğu redaktoru pəncərəsini bir serverdən ayırmaq (Query -> Connection -> Disconnect menyu əmrindən istifadə etməklə) başqa redaktor pəncərəsini açmadan digərinə qoşulmaq olar. Oflayn redaktə rejimini seçmək üçün xüsusi sorğu növü üçün redaktoru işə saldığınız zaman açılan server bağlantısı dialoqunda Ləğv et düyməsini sıxmağınız kifayətdir.

Aşağıdakı tapşırıqları yerinə yetirmək üçün Sorğu Redaktorundan istifadə edə bilərsiniz:

    Transact-SQL ifadələrinin yaradılması və icrası;

    yaradılmış Transact-SQL dil ifadələrinin faylda saxlanması;

    ümumi sorğular üçün icra planlarının yaradılması və təhlili;

    seçilmiş sorğunun icra planını qrafik şəkildə təsvir etmək.

Sorğu Redaktoru daxili mətn redaktoru və müxtəlif hərəkətlər üçün düymələr dəsti olan alətlər panelini ehtiva edir. Əsas sorğu redaktoru pəncərəsi üfüqi olaraq sorğu panelinə (yuxarıda) və nəticələr panelinə (aşağıda) bölünür. İcra ediləcək Transact-SQL ifadələri (yəni sorğular) yuxarı panelə daxil edilir və sistemin həmin sorğuların işlənməsinin nəticələri isə aşağı paneldə göstərilir. Aşağıdakı şəkildə sorğu redaktoruna sorğunun daxil edilməsi nümunəsi və həmin sorğunun icrasının nəticələri göstərilir:

İlk USE sorğu bəyanatı SampleDb verilənlər bazasını cari verilənlər bazası kimi istifadə etməyi müəyyən edir. İkinci ifadə, SELECT, İşçi cədvəlindən bütün sətirləri götürür. Bu sorğunu yerinə yetirmək və nəticələri göstərmək üçün Sorğu Redaktoru alətlər panelində İcra düyməsini basın və ya F5 düyməsini basın.

Bir neçə Sorğu Redaktoru pəncərəsini aça bilərsiniz, yəni. Verilənlər Bazası Mühərrikinin bir və ya bir neçə nümunəsi ilə çoxlu əlaqə yaradın. SQL Server Management Studio alətlər panelində Yeni Sorğu düyməsini klikləməklə yeni əlaqə yaradılır.

Sorğu Redaktoru pəncərəsinin altındakı vəziyyət çubuğu sorğu ifadələrinin icrası ilə bağlı aşağıdakı məlumatları göstərir:

    cari əməliyyatın vəziyyəti (məsələn, "Sorğu uğurla tamamlandı");

    verilənlər bazası serverinin adı;

    cari istifadəçi adı və server proses identifikatoru;

    cari verilənlər bazası adı;

    son sorğunun icrasına sərf olunan vaxt;

    tapılan sətirlərin sayı.

SQL Server Management Studio-nun əsas üstünlüklərindən biri onun istifadəsi asanlığıdır ki, bu da Sorğu Redaktoruna aiddir. Sorğu Redaktoru Transact-SQL ifadələrinin kodlaşdırılmasını asanlaşdırmaq üçün bir çox funksiyalar təqdim edir. Xüsusilə, Transact-SQL ifadələrinin oxunaqlılığını yaxşılaşdırmaq üçün sintaksis işıqlandırmasından istifadə edir. Bütün qorunan sözlər mavi, dəyişənlər qara, sətirlər qırmızı, şərhlər isə yaşıl rəngdə göstərilir.

Bundan əlavə, sorğu redaktoru çağırılan kontekstdə həssas yardımla təchiz edilmişdir Dinamik Yardım, onun vasitəsilə siz konkret təlimat haqqında məlumat əldə edə bilərsiniz. Əgər təlimatın sintaksisini bilmirsinizsə, onu redaktorda seçin və sonra F1 düyməsini basın. Siz həmçinin Books Online-dan kömək almaq üçün müxtəlif Transact-SQL ifadələrinin parametrlərini vurğulaya bilərsiniz.

SQL Management Studio bir növ avtomatik tamamlama aləti olan SQL Intellisense-i dəstəkləyir. Başqa sözlə, bu modul qismən daxil edilmiş Transact-SQL ifadə elementlərinin çox güman ki, tamamlanmasını təklif edir.

Obyekt tədqiqatçısı həmçinin sorğuları redaktə etməyə kömək edə bilər. Məsələn, İşçi cədvəli üçün CREATE TABLE bəyanatının necə yaradılacağını bilmək istəyirsinizsə, Object Explorer-də cədvələ sağ vurun və kontekst menyusundan Skript Cədvəli kimi --> CREATE to --> New Query Editor Window seçin. cədvəllər --> CREATE-dən istifadə --> Yeni Sorğu Redaktoru Pəncərəsi görünür. Bu şəkildə yaradılmış CREATE TABLE ifadəsini ehtiva edən Sorğu Redaktoru pəncərəsi aşağıdakı şəkildə göstərilmişdir. Bu xüsusiyyət saxlanılan prosedurlar və funksiyalar kimi digər obyektlərə də aiddir.

Obyekt brauzeri müəyyən sorğunun icra planını qrafik şəkildə göstərmək üçün çox faydalıdır. Sorğunun icra planı, müəyyən bir sorğunun icrası üçün bir neçə mümkün variant arasında sorğu optimallaşdırıcısı tərəfindən seçilmiş icra variantıdır. Tələb olunan sorğunu redaktorun yuxarı panelinə daxil edin, Sorğu --> Təxmini icra planını göstər menyusundan əmrlər ardıcıllığını seçin və bu sorğunun icra planı redaktor pəncərəsinin aşağı panelində göstəriləcək.

Həll Explorer

SQL Server Management Studio-da sorğunun redaktəsi həllər metoduna əsaslanır. Yeni Sorğu düyməsini istifadə edərək boş sorğu yaratsanız, o, boş həllə əsaslanacaq. Boş sorğunu açdıqdan dərhal sonra Görünüş -> Həll Explorer menyusundan əmrlər ardıcıllığını yerinə yetirməklə bunu görə bilərsiniz.

Qərar heç bir, bir və ya bir neçə layihə ilə bağlı ola bilər. Heç bir layihə ilə əlaqəli olmayan boş bir həll. Layihəni həll yolu ilə əlaqələndirmək üçün boş həlli, Həll Explorer və Sorğu Redaktorunu bağlayın və Fayl -> Yeni -> Layihəni işlətməklə yeni layihə yaradın. Açılan Yeni Layihə pəncərəsində orta paneldə SQL Server Skriptləri seçimini seçin. Layihə müəyyən bir yerdə faylları təşkil etmək üsuludur. Siz layihəyə ad təyin edə və onun yeri üçün diskdə yer seçə bilərsiniz. Yeni layihə yaratdığınız zaman yeni həll avtomatik olaraq işə salınır. Siz Solution Explorer istifadə edərək mövcud həllə layihə əlavə edə bilərsiniz.

Yaradılmış hər bir layihə üçün Solution Explorer Əlaqələr, Sorğular və Müxtəlif qovluqları göstərir. Verilmiş layihə üçün yeni Sorğu Redaktoru pəncərəsini açmaq üçün onun Sorğular qovluğuna sağ klikləyin və kontekst menyusundan Yeni Sorğu seçin.

SQL Serverdə sazlama

SQL Server, SQL Server 2008-dən başlayaraq, daxili kod sazlayıcısına malikdir. Sazlama sessiyasına başlamaq üçün SQL Server Management Studio əsas menyusundan Debug -> Start Debugging seçin. Biz komandalar toplusundan istifadə edərək bir nümunədən istifadə edərək sazlayıcının necə işlədiyinə baxacağıq. Partiya, ehtiva etdiyi bütün ifadələri yerinə yetirmək üçün Database Engine-ə göndərilən SQL ifadələrinin və prosedur genişləndirmələrinin məntiqi ardıcıllığıdır.

Aşağıdakı şəkildə p1 layihəsində işləyən işçilərin sayını hesablayan paket göstərilir. Bu rəqəm 4 və ya daha çox olarsa, müvafiq mesaj göstərilir. Əks halda, işçilərin ad və soyadları göstərilir.

Müəyyən bir göstərişdə paketin icrasını dayandırmaq üçün şəkildə göstərildiyi kimi kəsilmə nöqtələrini təyin edə bilərsiniz. Bunu etmək üçün dayanmaq istədiyiniz xəttin soluna klikləyin. Sazlama başlayanda icra sarı ox ilə qeyd olunan kodun ilk sətirində dayanır. İcra və sazlamaya davam etmək üçün Debug -> Continue menyu əmrini seçin. Dəstə təlimatları birinci kəsilmə nöqtəsinə qədər icra etməyə davam edəcək və sarı ox həmin nöqtədə dayanacaq.

Sazlama prosesi ilə bağlı məlumat Sorğu Redaktoru pəncərəsinin altındakı iki paneldə göstərilir. Müxtəlif növ sazlama məlumatı haqqında məlumat bu panellərdə bir neçə tabda qruplaşdırılıb. Sol paneldə Avtomatlar nişanı, Yerlilər nişanı və beşə qədər Baxış nişanı var. Sağ paneldə Zəng yığını, mövzular, kəsilmə nöqtələri, əmr pəncərəsi, dərhal pəncərə və çıxış nişanları var. Yerlilər nişanı dəyişən dəyərləri, Zəng yığını nişanı zəng yığını dəyərlərini və Breakpoints nişanı kəsilmə nöqtəsi məlumatlarını göstərir.

Sazlama prosesini bitirmək üçün əsas menyudan Debug -> Stop Debugging menyusundan əmrlər ardıcıllığını yerinə yetirin və ya sazlayıcı alətlər panelində mavi düyməni basın.

SQL Server 2012 SQL Server Management Studio-da quraşdırılmış sazlayıcıya bir neçə yeni xüsusiyyət əlavə edir. İndi onda aşağıdakı əməliyyatların bir sırasını yerinə yetirə bilərsiniz:

    Kəsmə nöqtəsi şərtini təyin edin. Kəsmə nöqtəsi vəziyyəti qiymətləndirilmiş dəyəri kodun icrasının verilmiş nöqtədə dayanıb-dayanmayacağını müəyyən edən SQL ifadəsidir. Kəsmə nöqtəsi şərtini təyin etmək üçün qırmızı kəsmə nöqtəsi simgesini sağ klikləyin və kontekst menyusundan Şərt seçin. Tələb olunan Boolean ifadəsini daxil etməyə imkan verən Breakpoint Condition dialoq qutusu açılır. Bundan əlavə, əgər ifadə doğrudursa, icranı dayandırmaq lazımdırsa, Doğrudur keçidini təyin etməlisiniz. İfadə dəyişibsə, icranı dayandırmaq lazımdırsa, o zaman Dəyişən zaman açarını təyin etməlisiniz.

    Kəsmə nöqtəsində vuruşların sayını təyin edin. Vuruşların sayı icra zamanı kəsilmə nöqtəsinin vurulma sayına əsaslanaraq verilmiş nöqtədə icranın dayandırılması şərtidir. Müəyyən edilmiş keçidlərin sayına və verilmiş kəsilmə nöqtəsi üçün müəyyən edilmiş hər hansı digər şərtə çatdıqda, sazlayıcı müəyyən edilmiş hərəkəti yerinə yetirir. Xitlərin sayına görə icranın dayandırılması şərti aşağıdakılardan biri ola bilər:

    1. şərtsiz (defolt hərəkət) (Həmişə fasilə);

      vuruşların sayı göstərilən dəyərə bərabərdirsə (Sayı müəyyən edilmiş dəyərə bərabər olduqda kəsin);

      vuruşların sayı müəyyən edilmiş dəyərin qatıdırsa (vuruşların sayı müəyyən edilmiş dəyərin qatına bərabər olduqda kəsin);

      Onun sayı müəyyən edilmiş dəyərdən böyük və ya bərabər olduqda kəsin.

    Sazlama zamanı hitlərin sayını təyin etmək üçün Breakpoints sekmesinde tələb olunan kəsmə nöqtəsi ikonasını sağ vurun, kontekst menyusundan Hit Count seçin, sonra əvvəlki siyahıdan açılan Breakpoint Hit Count dialoq qutusunda şərtlərdən birini seçin. Dəyər tələb edən seçimlər üçün onu şərtlər açılan siyahısının sağındakı mətn qutusuna daxil edin. Göstərilən şərtləri saxlamaq üçün OK düyməsini basın.

    Kəsmə nöqtəsi filtrini təyin edin. Kəsmə nöqtəsi filtri kəsmə nöqtəsi əməliyyatını yalnız müəyyən edilmiş kompüterlər, proseslər və ya mövzularla məhdudlaşdırır. Kəsmə nöqtəsi filtrini təyin etmək üçün istədiyiniz kəsmə nöqtəsinə sağ vurun və kontekst menyusundan Filtr seçin. Sonra açılan Breakpoint Filters dialoq qutusunda bu kəsilmə nöqtəsinin icrasını məhdudlaşdırmaq istədiyiniz resursları göstərin. Göstərilən şərtləri saxlamaq üçün OK düyməsini basın.

    Kəsmə nöqtəsində hərəkəti təyin edin. Zaman Vuruş şərti toplu icrası verilmiş kəsilmə nöqtəsinə çatdıqda görüləcək hərəkəti müəyyən edir. Varsayılan olaraq, həm vuruş sayı şərti, həm də dayandırma şərti təmin edildikdə, icra dayandırılır. Alternativ olaraq, əvvəlcədən təyin edilmiş mesaj göstərilə bilər.

    Kəsmə nöqtəsi vurulduqda nə edəcəyini müəyyən etmək üçün kəsilmə nöqtəsi üçün qırmızı işarəni sağ klikləyin və kontekst menyusundan Vurduğumuz zaman seçin. Açılan Breakpoint is Hit dialoq qutusunda yerinə yetirmək istədiyiniz hərəkəti seçin. Göstərilən şərtləri saxlamaq üçün OK düyməsini basın.

    Tez İzləmə pəncərəsindən istifadə edin. Siz QuickWatch pəncərəsində Transact-SQL ifadəsinin dəyərinə baxa və sonra ifadəni Baxış pəncərəsində saxlaya bilərsiniz. Tez İzləmə pəncərəsini açmaq üçün Debug menyusundan Quick Watch seçin. Bu pəncərədəki ifadə ya İfadə açılan siyahısından seçilə bilər, ya da bu sahəyə daxil edilə bilər.

    Tez Məlumat alət ipucundan istifadə edin. Siçanınızı kod identifikatorunun üzərinə gətirdiyiniz zaman Sürətli Məlumat aləti elanı açılan pəncərədə göstərir.

Cədvəl ifadələri cədvəlin olması gözlənilən yerlərdə istifadə olunan alt sorğular adlanır. Cədvəl ifadələrinin iki növü var:

    əldə edilmiş cədvəllər;

    ümumiləşdirilmiş cədvəl ifadələri.

Cədvəl ifadələrinin bu iki forması aşağıdakı alt bölmələrdə müzakirə olunur.

Əldə edilmiş cədvəllər

Əldə edilmiş cədvəl sorğunun FROM bəndinə daxil edilmiş cədvəl ifadəsidir. Əldə edilmiş cədvəllər sütun ləqəblərindən istifadənin mümkün olmadığı hallarda istifadə edilə bilər, çünki SQL tərcüməçisi ləqəb məlum olmayana qədər başqa bir ifadəni emal edir. Aşağıdakı nümunə, təxəllüsün tanınmasından əvvəl başqa bəndin işləndiyi bir vəziyyətdə sütun ləqəbindən istifadə cəhdini göstərir:

Nümunə Db-dən istifadə edin; AYI(GirişTarixi) daxil_ay kimi SEÇİN FROM Works_on QRUP BY enter_month;

Bu sorğunu yerinə yetirməyə çalışmaq aşağıdakı xəta mesajını verəcək:

Mesaj 207, Səviyyə 16, Dövlət 1, Sətir 5 Yanlış sütun adı "enter_month". (Mesaj 207: Səviyyə 16, Dövlət 1, Sətir 5 Yanlış sütun adı enter_month)

Xətanın səbəbi odur ki, GROUP BY bəndi SELECT ifadəsinin müvafiq siyahısı emal edilməmişdən əvvəl işlənir və qrup işlənən zaman enter_month sütununun ləqəbi bilinmir.

Bu problemi özündən əvvəlki sorğunu (GROUP BY bəndi olmadan) ehtiva edən törəmə cədvəldən istifadə etməklə həll etmək olar, çünki FROM bəndi GROUP BY bəndindən əvvəl yerinə yetirilir:

Nümunə Db-dən istifadə edin; GİRİŞ_AYI SEÇİN (AYI SEÇİN(GirişTarixi) Işləmədən_ay kimi daxil edin) m GROUP BY enter_month;

Bu sorğunun icrasının nəticəsi belə olacaq:

Tipik olaraq, cədvəl ifadəsi SELECT ifadəsinin cədvəl adının görünə biləcəyi istənilən yerə yerləşdirilə bilər. (Cədvəl ifadəsinin nəticəsi həmişə cədvəl və ya xüsusi hallarda ifadədir.) Aşağıdakı nümunə SELECT ifadəsinin seçim siyahısında cədvəl ifadəsinin istifadəsini göstərir:

Bu sorğunun nəticəsi:

Ümumi cədvəl ifadələri

Ümumi Cədvəl İfadəsi (OTB) Transact-SQL dili tərəfindən dəstəklənən adlandırılmış cədvəl ifadəsidir. Ümumi cədvəl ifadələri aşağıdakı iki sorğu növündə istifadə olunur:

    qeyri-rekursiv;

    rekursiv.

Bu iki növ sorğu aşağıdakı bölmələrdə müzakirə olunur.

OTB və qeyri-rekursiv sorğular

OTB-nin rekursiv olmayan forması törəmə cədvəllərə və görünüşlərə alternativ olaraq istifadə edilə bilər. Tipik olaraq OTB ilə müəyyən edilir İLƏ bəndlər və WITH bəndində istifadə olunan ada istinad edən əlavə sorğu. Transact-SQL-də WITH açar sözünün mənası birmənalı deyil. Qeyri-müəyyənliyin qarşısını almaq üçün WITH ifadəsindən əvvəlki ifadə nöqtəli vergüllə dayandırılmalıdır.

AdventureWorks2012-dən istifadə edin; Sales.SalesOrderHeader-DƏN SalesOrderID SEÇİN. TotalDue > (Sales.SalesOrderHeader-DƏN AVG(TotalDue) HARADA İL(SifarişTarixi) = "2005") VƏ Yükdaşıma > (Sales.SalesOrderHeader-DƏN AVG(TotalDue) =YILDAN SEÇİN. ")/2.5;

Bu misaldakı sorğu ümumi vergiləri (TotalDue) bütün vergilərin orta qiymətindən çox olan və daşıma haqları (Freight) orta vergilərin 40%-dən çox olan sifarişləri seçir. Bu sorğunun əsas xüsusiyyəti onun uzunluğudur, çünki alt sorğunun iki dəfə yazılması lazımdır. Sorğu konstruksiyasının ölçüsünü azaltmağın mümkün yollarından biri alt sorğu ehtiva edən görünüş yaratmaqdır. Lakin bu həll bir qədər mürəkkəbdir, çünki sorğunun icrası başa çatdıqdan sonra görünüş yaratmaq və sonra onu silmək lazımdır. Daha yaxşı yanaşma OTB yaratmaq olardı. Aşağıdakı nümunə yuxarıdakı sorğu tərifini qısaldan rekursiv olmayan OTB-nin istifadəsini göstərir:

AdventureWorks2012-dən istifadə edin; price_calc(il_2005) İLƏ (Satış.SalesOrderHeader-DƏN AVG(TotalDue) İLƏ SEÇİN(Sifariş Tarixi) = "2005") Sales.SalesOrderHeader FROM HARƏDƏ SalesOrderID SEÇİN > (SEÇİM il_2005) hesablamaq ) /2.5;

Rekursiv olmayan sorğularda WITH bəndinin sintaksisi aşağıdakı kimidir:

cte_name parametri nəticələnən cədvəli təyin edən OTB adını, column_list parametri isə cədvəl ifadəsinin sütunlarının siyahısını təmsil edir. (Yuxarıdakı misalda OTB qiymət_hesablama adlanır və bir sütuna malikdir, year_2005.) Inner_query parametri müvafiq cədvəl ifadəsinin nəticə dəstini təyin edən SELECT ifadəsini təmsil edir. Müəyyən edilmiş cədvəl ifadəsi daha sonra xarici_sorğuda istifadə edilə bilər. (Yuxarıdakı misaldakı xarici sorğu, ikiqat yuvalanmış sorğunu sadələşdirmək üçün OTB price_calc və onun year_2005 sütunundan istifadə edir.)

OTB və rekursiv sorğular

Bu bölmə artan mürəkkəblik materialını təqdim edir. Ona görə də onu ilk dəfə oxuyarkən onu atlayıb sonra qayıtmaq məsləhətdir. OTB-lər rekursiyaları həyata keçirmək üçün istifadə edilə bilər, çünki OTB-lər özlərinə istinadlar ehtiva edə bilər. Rekursiv sorğu üçün əsas OTB sintaksisi belə görünür:

cte_name və column_list parametrləri rekursiv olmayan sorğular üçün OTB-də olduğu kimi eyni məna daşıyır. WITH bəndinin əsas hissəsi operator tərəfindən birləşdirilən iki sorğudan ibarətdir BÜTÜN BİRLİK. Birinci sorğu yalnız bir dəfə çağırılır və o, rekursiyanın nəticəsini toplamağa başlayır. UNION ALL operatorunun birinci operandı OTB-yə istinad etmir. Bu sorğuya istinad sorğusu və ya mənbə deyilir.

İkinci sorğuda OTB-yə istinad var və onun rekursiv hissəsini təmsil edir. Bu səbəbdən ona rekursiv üzv deyilir. Rekursiv hissəyə ilk zəngdə OTB arayışı istinad sorğusunun nəticəsini təmsil edir. Rekursiv üzv ilk sorğu çağırışının nəticəsini istifadə edir. Bundan sonra sistem rekursiv hissəni yenidən çağırır. Rekursiv üzvə edilən zəng, ona əvvəlki zəng boş nəticə dəstini qaytardıqda dayandırılır.

UNION ALL operatoru hazırda yığılmış cərgələrə, eləcə də cari çağırışla rekursiv üzvə əlavə edilmiş əlavə sıralara qoşulur. (UNION ALL operatorunun olması o deməkdir ki, dublikat sətirlər nəticədən silinməyəcək.)

Nəhayət, outer_query parametri OTB-nin hər iki üzvün birləşməsinə bütün zəngləri almaq üçün istifadə etdiyi xarici sorğunu müəyyən edir.

OTB-nin rekursiv formasını nümayiş etdirmək üçün biz aşağıdakı nümunədə göstərilən kodla müəyyən edilmiş və doldurulmuş Təyyarə cədvəlindən istifadə edirik:

Nümunə Db-dən istifadə edin; CREATE TABLE Airplane(ContainingAssembly VARCHAR(10), ContainedAssembly VARCHAR(10), QuantityContained INT, UnitCost DECIMAL(6,2)); Təyyarə DƏYƏRLƏRİNƏ DAXİL EDİN (“Təyyarə”, “Gücə”, 1, 10); Təyyarə DƏYƏRLƏRİNƏ DAXİL EDİN ("Təyyarə", "Qanadlar", 1, 11); Təyyarə DƏYƏRLƏRİNƏ DAXİL EDİN ("Təyyarə", "Quyruq", 1, 12); Təyyarə DƏYƏRLƏRİNƏ DAXİL EDİN ("Gücə", "Salon", 1, 13); Təyyarə DƏYƏRLƏRİNƏ DAXİL EDİN ("Gücə", "Kokpit", 1, 14); Təyyarə DƏYƏRLƏRİNƏ DAXİL EDİN ("Gücə", "Burun",1, 15); Təyyarə DƏYƏRLƏRİNƏ DAXİL EDİN ("Kabin", NULL, 1,13); Təyyarə DƏYƏRLƏRİNƏ DAXİL EDİN ("Kokpit", NULL, 1, 14); Təyyarə QİYMƏTLƏRİNƏ INSERT INSERT ("Burun", NULL, 1, 15); Təyyarə QİYMƏTLƏRİNƏ INSERT INSERT ("Wings", NULL,2, 11); Təyyarə QİYMƏTLƏRİNƏ INSERT INSERT ("Quyruq", NULL, 1, 12);

Təyyarə cədvəlində dörd sütun var. ContainingAssembly sütunu montajı, ContainedAssembly sütunu isə müvafiq montajı təşkil edən hissələri (bir-bir) müəyyən edir. Aşağıdakı şəkildə təyyarənin mümkün növünün və onun komponent hissələrinin qrafik təsviri göstərilir:

Təyyarə cədvəli aşağıdakı 11 sətirdən ibarətdir:

Aşağıdakı nümunə, hər bir quruluşun ümumi dəyərini hesablayan bir sorğu təyin etmək üçün WITH bəndindən istifadə edir:

Nümunə Db-dən istifadə edin; Hissələrin_siyahısı (montaj1, kəmiyyət, qiymət) İLƏ (Tərkibli Yığıncağın NULL BİRLİK OLDUĞUNDA Təyyarədən Tərkibli Yığıncağı, Miqdarı, Vahid Xərcini SEÇİN HAMISI SEÇİN a.Tərkibli Yığma, a.MəqsədəTərkibli, Kəmiyyət(AS.6,ƏK) ) Hissələrin_siyahısından l, Təyyarə a HARADA l.montaj1 = a.Tərkibli Yığma) SEÇİN montaj1 "Hissə", kəmiyyət "Kəmiyyət", hissələr_siyahısından "Qiymət" dəyəri;

WITH bəndi üç sütundan ibarət list_of_parts adlı OTB siyahısını müəyyən edir: montaj1, kəmiyyət və qiymət. Nümunədə ilk SELECT ifadəsi rekursiya prosesinin ilk addımının nəticələrini saxlamaq üçün yalnız bir dəfə çağırılır. Nümunənin son sətirindəki SELECT ifadəsi aşağıdakı nəticəni göstərir.

Hər birimiz müntəzəm olaraq müxtəlif verilənlər bazası ilə qarşılaşırıq və istifadə edirik. E-poçt ünvanı seçdiyimiz zaman verilənlər bazası ilə işləyirik. Verilənlər bazaları axtarış xidmətləri, banklar tərəfindən müştəri məlumatlarını saxlamaq üçün istifadə olunur və s.

Lakin verilənlər bazalarının daimi istifadəsinə baxmayaraq, hətta bir çox proqram sistemi tərtibatçıları üçün eyni terminlərin müxtəlif şərhləri səbəbindən hələ də bir çox kor nöqtələr var. SQL dilini əhatə etməzdən əvvəl baza verilənlər bazası terminlərinin qısa tərifini verəcəyik. Belə ki.

Verilənlər bazası - sifarişli məlumat strukturlarını və onların əlaqələrini saxlamaq üçün fayl və ya fayllar toplusu. Çox vaxt idarəetmə sistemi verilənlər bazası adlanır - bu, yalnız müəyyən bir formatda məlumat deposudur və müxtəlif DBMS-lərlə işləyə bilər.

Cədvəl - Təsəvvür edək ki, sənədlərin saxlandığı qovluğu müəyyən bir xüsusiyyətə görə qruplaşdırmaq, məsələn, son bir ay üçün sifarişlərin siyahısı. Bu kompüterdəki cədvəldir. Ayrı bir cədvəlin özünəməxsus adı var.

Məlumat növü - ayrıca sütun və ya sətirdə saxlanmasına icazə verilən məlumat növü. Bunlar rəqəmlər və ya müəyyən formatın mətni ola bilər.

Sütun və Sıra- Biz hamımız elektron cədvəllərlə işləmişik, onların da sətirləri və sütunları var. İstənilən əlaqəli verilənlər bazası cədvəllərlə oxşar şəkildə işləyir. Satırlar bəzən qeydlər adlanır.

Əsas açar- Cədvəlin hər bir sətirində onu unikal şəkildə müəyyən etmək üçün bir və ya bir neçə sütun ola bilər. Əsas açar olmadan istədiyiniz sətirləri yeniləmək, dəyişdirmək və silmək çox çətindir.

SQL nədir?

SQL(İngilis dili - strukturlaşdırılmış sorğu dili) yalnız verilənlər bazası ilə işləmək üçün hazırlanmışdır və hazırda bütün məşhur DBMS-lər üçün standartdır. Dil sintaksisi az sayda operatordan ibarətdir və öyrənmək asandır. Lakin, görünən sadəliyinə baxmayaraq, istənilən ölçülü verilənlər bazası ilə mürəkkəb əməliyyatlar üçün sql sorğuları yaratmağa imkan verir.

1992-ci ildən bəri ANSI SQL adlı ümumi qəbul edilmiş standart mövcuddur. O, operatorların əsas sintaksisini və funksiyalarını müəyyənləşdirir və ORACLE kimi bütün DBMS bazar liderləri tərəfindən dəstəklənir. Nümunələr dilin sadəliyini və imkanlarını aydın şəkildə göstərir:

  • verilənlər bazası və cədvəllərin yaradılması;
  • məlumatların seçilməsi;
  • qeydlər əlavə etmək;
  • məlumatların dəyişdirilməsi və silinməsi.

SQL məlumat növləri

Verilənlər bazası cədvəlindəki bütün sütunlar eyni məlumat növünü saxlayır. SQL-də məlumat növləri digər proqramlaşdırma dillərində olduğu kimidir.

Cədvəllər və verilənlər bazası yaradırıq

SQL-də yeni verilənlər bazası, cədvəllər və digər sorğular yaratmağın iki yolu var:

  • DBMS konsolu vasitəsilə
  • Verilənlər bazası serverinə daxil olan interaktiv idarəetmə vasitələrindən istifadə.

Operator tərəfindən yeni verilənlər bazası yaradılır MƏLUMAT BAZASI YARADIN<наименование базы данных>; . Gördüyünüz kimi, sintaksis sadə və yığcamdır.

Aşağıdakı parametrlərlə CREATE TABLE ifadəsindən istifadə edərək verilənlər bazası daxilində cədvəllər yaradırıq:

  • masa adı
  • sütun adları və məlumat növləri

Nümunə olaraq, aşağıdakı sütunlardan ibarət Əmtəə cədvəlini yaradaq:

Cədvəl yaradın:

CƏDVƏL YARATIN Əmtəə

(əmtəə_id CHAR(15) NULL DEYİL,

vendor_id CHAR(15) NULL DEYİL,

əmtəə_adı CHAR(254) NULL,

əmtəə_qiyməti DECIMAL(8,2) NULL,

əmtəə_dec VARCHAR(1000) NULL);

Cədvəl beş sütundan ibarətdir. Addan sonra məlumat növü gəlir, sütunlar vergüllə ayrılır. Sütun dəyəri boş dəyərləri (NULL) qəbul edə bilər və ya doldurulmalıdır (NULL DEYİL) və bu, cədvəl yaradılarkən müəyyən edilir.

Cədvəldən məlumatların alınması

Məlumat alma operatoru ən çox istifadə edilən SQL sorğusudur. Məlumat əldə etmək üçün belə bir cədvəldən nəyi seçmək istədiyimizi göstərməliyik. Əvvəlcə sadə bir nümunə:

Əmtəədən əmtəə_adını SEÇİN

SELECT ifadəsindən sonra biz məlumat əldə etmək üçün sütunun adını, FROM isə cədvəli müəyyənləşdiririk.

Sorğunun nəticəsi verilənlər bazasına daxil edildiyi ardıcıllıqla Əmtəə_adı dəyərləri olan cədvəlin bütün sətirləri olacaq, yəni. heç bir çeşidləmə olmadan. Nəticəni sifariş etmək üçün əlavə ORDER BY bəndindən istifadə olunur.

Bir neçə sahəni sorğulamaq üçün aşağıdakı nümunədə olduğu kimi onları vergüllə ayırın:

Əmtəədən əmtəə_id, əmtəə_adı, əmtəə_qiymətini SEÇİN

Sorğu nəticəsində sətirin bütün sütunlarının qiymətini almaq mümkündür. Bunu etmək üçün "*" işarəsindən istifadə edin:

Əmtəədən * SEÇİN

  • Əlavə olaraq SELECT dəstəkləyir:
  • Məlumatların çeşidlənməsi (SİPARİŞ BY operator)
  • Şərtlərə görə seçim (HARADA)
  • Qruplaşdırma termini (GROUP BY)

Xətt əlavə edin

Cədvələ sətir əlavə etmək üçün INSERT operatoru ilə SQL sorğularından istifadə olunur. Əlavə üç yolla edilə bilər:

  • yeni bütöv bir xətt əlavə edin;
  • simin bir hissəsi;
  • sorğu nəticələri.

Tam sətir əlavə etmək üçün cədvəlin adını və yeni sətirin sütunlarının (sahələrinin) dəyərlərini göstərməlisiniz. Budur bir nümunə:

Əmtəə DƏYƏRLƏRİNƏ DAXİL EDİN("106 ", "50", "Coca-Cola", "1,68", "Alkoqol yoxdur ,)

Nümunə cədvələ yeni məhsul əlavə edir. Dəyərlər hər sütun üçün VALUES-dən sonra verilmişdir. Sütun üçün uyğun dəyər yoxdursa, NULL göstərilməlidir. Sütunlar cədvəl yaradılarkən göstərilən ardıcıllıqla dəyərlərlə doldurulur.

Əgər satırın yalnız bir hissəsini əlavə etsəniz, nümunədə olduğu kimi sütunların adlarını açıq şəkildə göstərməlisiniz:

INSERT INTO əmtəə (əmtəə_id, satıcı_id, əmtəə_adı)

DƏYƏRLƏR("106 ", '50", "Coca-Cola",)

Biz yalnız məhsulun, təchizatçının və onun adının identifikatorlarını daxil etdik və qalan sahələri boş buraxdıq.

Sorğu nəticələrinin əlavə edilməsi

INSERT ilk növbədə sətirləri əlavə etmək üçün istifadə olunur, lakin SELECT ifadəsinin nəticələrini əlavə etmək üçün də istifadə edilə bilər.

Məlumatların dəyişdirilməsi

Verilənlər bazası cədvəlinin sahələrində məlumatı dəyişmək üçün UPDATE bəyanatından istifadə etməlisiniz. Operator iki şəkildə istifadə edilə bilər:

  • Cədvəlin bütün sətirləri yenilənir.
  • Yalnız müəyyən bir xətt üçün.

UPDATE üç əsas elementdən ibarətdir:

  • dəyişikliklərin edilməsi lazım olan cədvəl;
  • sahə adları və onların yeni dəyərləri;
  • dəyişdirmək üçün sətirlərin seçilməsi şərtləri.

Bir nümunəyə baxaq. Tutaq ki, ID=106 olan məhsulun qiyməti dəyişib, ona görə də bu xətti yeniləmək lazımdır. Aşağıdakı operatoru yazırıq:

Əmtəə SET-i YENİLƏNİN əmtəə_qiyməti = "3.2" HARADA əmtəə_id = "106"

Cədvəlin adını, bizim vəziyyətimizdə Əmtəə, yeniləmənin aparılacağı yeri, sonra SET-dən sonra - sütunun yeni dəyərini göstərdik və HARƏ-də tələb olunan ID dəyərini göstərərək istədiyiniz qeydi tapdıq.

Çoxlu sütunları dəyişdirmək üçün SET ifadəsindən sonra vergüllə ayrılmış çoxlu sütun-dəyər cütləri gəlir. Məhsulun adının və qiymətinin yeniləndiyi bir nümunəyə baxaq:

Əmtəə SETini YENİLƏNİN əmtəə_adı='Fanta', əmtəə_qiyməti = "3.2" HARADA əmtəə_id = "106"

Sütundakı məlumatları silmək üçün cədvəl strukturu icazə verərsə, ona NULL dəyərini təyin edə bilərsiniz. Yadda saxlamaq lazımdır ki, NULL dəqiq “yox” dəyəridir, mətn və ya rəqəm şəklində sıfır deyil. Məhsul təsvirini silək:

Əmtəə SETini YENİLƏNİN commodity_desc = NULL HERE commodity_id = "106"

Sıraların çıxarılması

Cədvəldəki sətirləri silmək üçün SQL sorğuları DELETE əmrindən istifadə etməklə yerinə yetirilir. İki istifadə halı var:

  • Cədvəldəki müəyyən sətirlər silinir;
  • Cədvəldəki bütün sətirlər silinir.

Cədvəldən bir sətirin silinməsinə misal:

commodity_id = "106" olduğu Əmtəədən SİLİN

DELETE FROM-dan sonra sətirlərin silinəcəyi cədvəlin adını göstəririk. WHERE bəndi silmək üçün sətirlərin seçiləcəyi şərti ehtiva edir. Nümunədə ID=106 olan məhsul xəttini silirik. HARADA qeyd etmək çox vacibdir, çünki bu ifadəni buraxmaq cədvəldəki bütün sətirləri siləcək. Bu, sahələrin dəyərinin dəyişdirilməsinə də aiddir.

DELETE bəyanatı sütun adlarını və ya meta simvollarını göstərmir. O, sətirləri tamamilə silir, lakin bir sütunu silə bilməz.

Microsoft Access-də SQL-dən istifadə

Adətən interaktiv şəkildə cədvəllər, verilənlər bazaları yaratmaq, verilənlər bazasındakı məlumatları idarə etmək, dəyişdirmək, təhlil etmək və rahat interaktiv sorğu dizayneri (Query Designer) vasitəsilə SQL Access sorğularını həyata keçirmək üçün istifadə olunur, ondan istifadə edərək istənilən mürəkkəblikdə SQL ifadələrini yarada və dərhal icra edə bilərsiniz.

Serverə giriş rejimi də dəstəklənir, burada Access DBMS istənilən ODBC məlumat mənbəyinə SQL sorğularının generatoru kimi istifadə edilə bilər. Bu xüsusiyyət Access proqramlarının istənilən formatla qarşılıqlı əlaqədə olmasına imkan verir.

SQL uzantıları

SQL sorğuları prosedur proqramlaşdırma dillərinin bütün imkanlarına malik olmadığından, məsələn, döngələr, budaqlanma və s., DBMS istehsalçıları qabaqcıl imkanlara malik öz SQL versiyasını inkişaf etdirirlər. İlk növbədə, bu, saxlanılan prosedurlara və prosedur dillərinin standart operatorlarına dəstəkdir.

Dilin ən çox yayılmış dialektləri:

  • Oracle verilənlər bazası - PL/SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL/pgSQL.

İnternetdə SQL

MySQL DBMS pulsuz GNU General Public License altında paylanır. Xüsusi modullar hazırlamaq imkanı olan kommersiya lisenziyası var. Komponent olaraq, o, XAMPP, WAMP və LAMP kimi İnternet serverlərinin ən populyar yığıncaqlarına daxildir və İnternetdə proqramların hazırlanması üçün ən populyar DBMS-dir.

O, Sun Microsystems tərəfindən hazırlanıb və hazırda Oracle Corporation tərəfindən dəstəklənir. Ölçüsü 64 terabata qədər olan verilənlər bazası, SQL:2003 sintaksis standartı, verilənlər bazalarının təkrarlanması və bulud xidmətləri dəstəklənir.

SQL - Strukturlaşdırılmış Sorğu Dili.
Bu araşdırmada biz SQL sorğularının ən çox yayılmış növlərinə baxacağıq.
SQL standartı müəyyən edilmişdir ANSI(Amerika Milli Standartlar İnstitutu).
SQL, xüsusi olaraq əlaqəli verilənlər bazalarına yönəlmiş bir dildir.

SQL bölməsi:


DDL
(Məlumat Tərifi Dili) - ANSI-də Sxem Təsviri dili adlanan, verilənlər bazasında obyektlər (cədvəllər, indekslər, görünüşlər və s.) yaradan əmrlərdən ibarətdir.
DML(Məlumatların Manipulyasiya Dili) istənilən vaxt cədvəllərdə hansı dəyərlərin təmsil olunduğunu müəyyən edən əmrlər toplusudur.
DCD(Data İdarəetmə Dili) istifadəçiyə müəyyən hərəkətlər etməyə icazə verib-verməməyi müəyyən edən obyektlərdən ibarətdir. Onlar ANSI DDL-nin bir hissəsidir. Bu adları unutma. Bunlar fərqli dillər deyil, funksiyalarına görə qruplaşdırılmış SQL əmrlərinin bölmələridir.

Məlumat növləri:

SQL Server - Məlumat növləri

Təsvir

bigint (int 8)

bigint (int 8)

ikili(n)

ikili(n) və ya şəkil

xarakter
(sinonim char)

milli xarakter və ya ntext

xarakter dəyişir(sinonim char dəyişən varchar)

milli xarakter dəyişir və ya ntext

Tarix vaxt

Tarix vaxt

onluq

aka rəqəmli

ikiqat dəqiqlik

ikiqat dəqiqlik

tam (int 4) (sinonim: int)

tam (int 4)

milli xarakter(sinonim: milli xarakter, nchar)

milli xarakter

Rəqəmsal(sinonimlər: onluq, dekabr)

milli xarakter dəyişir(sinonimlər: milli xarakter dəyişir, nvarchar)

Milli xarakter dəyişir

Kiçik tarix vaxtı

Tarix vaxt

kiçik (int 2)

kiçik (int 2)

Kiçik pul

sql_variant

Artıq dəstəklənmir

Nmətn
SQL Server 2005-dən başlayaraq istifadə üçün tövsiyə edilmir.

Vaxt möhürü

Dəstəklənmir

tinyint (int 1)

tinyint (int 1)

Unikal identifikator

unikal identifikator

varbinar(n)

varbinar(n) və ya şəkil

kiçik tarix vaxtı

Tarix vaxt

kiçik (int 2)

kiçik (int 2)

xırda pul

sql_variant

Dəstəklənmir

vaxt damgası

Dəstəklənmir

tinyint (int 1)

tinyint (int 1)

unikal identifikator

unikal identifikator

varbinar(n)

varbinar(n) və ya şəkil

SQL Server 2000-də verilənlər növü cədvəli

SORĞU NƏDİR?

Sorğu verilənlər bazası proqramına verdiyiniz əmrdir. Sorğular DML dilinin bir hissəsidir. Bütün SQL sorğuları bir əmrdən ibarətdir. Bu əmrin strukturu aldadıcı dərəcədə sadədir, çünki siz onu çox mürəkkəb qiymətləndirmələr və məlumat manipulyasiyalarını yerinə yetirmək üçün genişləndirməlisiniz.

SELECT əmri:

SEÇİN“Seç” ən çox istifadə olunan əmrdir, o, cədvəldən məlumatları seçmək üçün istifadə olunur;
SELECT istifadə edərək sorğu növü:

identifikator, istifadəçi_adı, şəhər, ad_gününü users_base FROM SEÇİN;

Belə bir sorğu users_base cədvəlindən SELECT əmrindən sonra vergüllə ayrılmış sütunların bütün dəyərlərini göstərəcəkdir. Həmçinin, bütün sütunları bir simvolla göstərə bilərsiniz, * yəni. SEÇ * FROM users_base ; - belə bir sorğu cədvəldəki bütün məlumatları göstərəcəkdir.

SELECT əmr strukturu:

SELECT (Sorğuda göstərilməli olan vergüllə ayrılmış sütun adları) FROM (verilənlər bazasındakı cədvəl adı)
- Bu, ən sadə sorğu növüdür. Rahat məlumat əldə etmək üçün əlavə əmrlər var (aşağıda “Funksiyalar”a baxın)

DML əmrləri:

Dəyərlər üç DML (Data Manipulation Language) əmrindən istifadə edərək sahələrə yerləşdirilə və silinə bilər:
INSERT(Daxil et)
YENİLƏNİB(Yeniləmə, dəyişdirmə),
SİLİN(Sil)

INSERT əmri:

INSERT INTO users_base (istifadəçi_adı, şəhər, doğum_günü) DƏYƏRLƏR ('Aleksandr', 'Rostov', '06/20/1991');

INSERT əmri INTO (in to) prefiksi ilə gəlir, sonra mötərizədə məlumatları daxil etməli olduğumuz sütunların adları, sonra VALUES əmri (dəyərlər) gəlir və mötərizədə dəyərlər növbə ilə gəlir (bu sütunlarla dəyərlərin sırasına riayət etmək lazımdır, dəyərlər qeyd etdiyiniz sütunlarla eyni sırada olmalıdır).

UPDATE əmri:

YENİLƏNİB users_base SET user_name = 'Aleksey';

UPDATE əmri cədvəldəki dəyərləri yeniləyir. Əvvəlcə UPDATE əmrinin özü, sonra SET əmrindən (dəst) sonra cədvəlin adı, sonra sütun adı və dırnaq içərisindəki dəyəri (qiymət sətir formatındadırsa, rəqəmsal dəyərdirsə, dırnaqlar qoyulur) vchar məlumat növünə və ya hər hansı digər sətir tipinə bağlı deyil, sitatların heç bir mənası yoxdur.)

SİL əmri:

DELETE FROM users_base WHERE user_name = 'Vasily';

DELETE əmri bütün cərgəni silir və WHERE kriteriyasından istifadə edərək sıranı müəyyən edir. Bu halda, bu sorğu user_name sütununun dəyərinin Vasili olduğu bütün sətirləri siləcək. WHERE meyarı və digərləri haqqında bir az sonra danışacağıq.

Meyarlar, funksiyalar, şərtlər və s. SQL-də bizə nə kömək edir:

WHERE bəndi SELECT əmrinin və digər DML əmrlərinin bəndidir ki, sizə şərti cədvəldəki hər hansı sətir üçün doğru və ya yalan ola bilən predikatlar təyin etməyə imkan verir. Komanda cədvəldən yalnız bu ifadənin doğru olduğu sətirləri götürür.
Misal:
user_base FROM identifikator, şəhər, ad_gününü SEÇİN HARADA user_name = ‘Aleksey’;- belə bir sorğu yalnız WHERE şərtinə uyğun gələn satırları, yəni istifadəçi_adı sütununun Aleksey dəyərinə malik olduğu bütün sətirləri göstərəcəkdir.

ORDER BY - seçilmiş cərgələrin çeşidlənməsi şərti. ASC və DESC 2 meyarına malikdir. ASC (A-dan Z-yə və ya 0-dan 9-a qədər çeşidləmə)

DESC (ASC-nin əksinə).
Misal:
user_base FROM ID, şəhər, ad_gününü SEÇİN istifadəçi_adı ASC ilə SİFARİŞ; - belə bir sorğu A-dan Z-ə qədər istifadəçi_adı sütunu ilə çeşidlənmiş dəyərləri göstərəcəkdir (A-Z; 0-9)

Bu şərt WHERE bəndi ilə birlikdə də istifadə edilə bilər.
Misal:
identifikator, şəhər, doğum_günü FROM users_base SEÇİN user_name = ‘Aleksey’ SİFARİŞ AD ASC;

DISTINCT, SELECT bəndinizdən ikiqat dəyərləri aradan qaldırmaq üçün sizə bir yol təqdim edən bir arqumentdir. Bunlar. bir sütunda təkrarlanan dəyərləriniz varsa, deyək user_name, onda DISTINCT sizə yalnız bir dəyər göstərəcək, məsələn, verilənlər bazanızda Aleksey adlı 2 nəfər var, onda DISTINCT funksiyasından istifadə edən sorğu sizə yalnız 1 dəyər göstərəcək. ilk qarşılaşılan...
Misal:
users_base FROM DISTINCT user_name SEÇ;- belə bir sorğu bizə user_name sütunundakı bütün qeydlərin dəyərlərini göstərəcək, lakin onlar təkrarlanmayacaq, yəni. sonsuz sayda təkrarlanan dəyərləriniz varsa, o zaman onlar göstərilməyəcək...

VƏ - arqument kimi iki Boolean (A VƏ B formasında) götürür və onların hər ikisinin doğru olub-olmadığını həqiqətə qarşı qiymətləndirir.
Misal:
SELECT * FROM users_base WHERE city = 'Rostov' AND user_name = 'İsgəndər';- şəhərin adının bir sətirdə göründüyü cədvəldəki bütün dəyərləri göstərəcək (bu halda, Rostov və istifadəçi adı Alexander.

OR - arqument kimi iki Boolean (A OR B şəklində) götürür və onlardan birinin düzgün olub-olmadığını qiymətləndirir.

SELECT * FROM users_base WHERE city = 'Rostov' OR user_name = 'İsgəndər';- Rostov şəhərinin adının və ya Aleksandr istifadəçi adının sətirdə göründüyü cədvəldəki bütün dəyərləri göstərəcək.

NOT - arqument kimi tək Boolean (NOT A şəklində) götürür və onun dəyərini yalandan doğruya və ya doğrudan yalana dəyişir.
SELECT * FROM users_base WHERE city = 'Rostov' OR NOT user_name = 'İsgəndər';- Rostov şəhərinin adının bir sətirdə göründüyü və ya istifadəçi adının dəqiq İskəndər olmadığı cədvəldəki bütün dəyərləri göstərəcək.

IN - verilmiş dəyərin daxil edilə və ya daxil edilə bilməyəcəyi dəyərlər toplusunu müəyyənləşdirir.
SEÇİN * İstifadəçilər_bazasından ŞƏHƏRDƏN ('Vladivostok', 'Rostov');- belə bir sorğu şəhər sütununda göstərilən şəhərlərin adlarını ehtiva edən cədvəldəki bütün dəyərləri göstərəcəkdir

Arası IN operatoruna bənzəyir. IN kimi çoxluqdakı rəqəmlərlə müəyyən etməkdən fərqli olaraq, BETWEEN predikatı doğru etmək üçün dəyərləri azalmalı olan aralığı müəyyən edir.
* 1 VƏ 10 ARASINDA identifikatorun istifadəçilər_bazasından SEÇİN;- id sütununda 1-dən 10-a qədər olan cədvəldəki bütün dəyərləri göstərir

COUNT - Sorğunun seçdiyi sahələrin sıra nömrələrini və ya NULL olmayan dəyərlərini yaradır.
users_base FROM COUNT (*) SEÇİN;- bu cədvəldə sətirlərin sayını göstərəcək.
users_base FROM COUNT (Fərqli istifadəçi_adı) SEÇİN;- istifadəçi adları olan sətirlərin sayını göstərəcək (təkrar edilmir)

SUM - müəyyən bir sahə üçün seçilmiş bütün dəyərlərin arifmetik cəmini çıxarır.
users_base FROM SUM (id) SEÇİN;- id sütununun bütün sətirlərinin dəyərlərinin cəmini göstərəcək.

AVG - bu sahənin bütün seçilmiş dəyərlərini ortalayır.
users_base FROM AVG (id) SEÇİN;- id sütununda bütün seçilmiş dəyərlərin ortalamasını göstərəcək

MAX - bu sahə üçün bütün seçilmiş dəyərlərdən ən böyüyü istehsal edir.

MIN - Bu sahə üçün bütün seçilmiş dəyərlərdən ən kiçikini istehsal edir.

Cədvəllərin yaradılması:

CREATE TABLE users_base (id tam, istifadəçi_adı mətni, şəhər mətni, doğum_gününün tarixi);- belə bir əmrin yerinə yetirilməsi misallar verdiyim cədvəlin yaranmasına gətirib çıxaracaq... Burada hər şey sadədir, CREATE TABLE əmrini, ardınca yaratmaq istədiyimiz cədvəlin adını, sonra isə mötərizə içərisində yazırıq, vergüllə ayrılır, sütunların adları və onların məlumat növü. Bu, SQL-də cədvəl yaratmağın standart yoludur. İndi SQL Server 2005-də cədvəllərin yaradılması nümunəsini verəcəyəm:

ANSI_NULLS DÜZEYİNİ QURUN
GO
QUOTED_IDENTIFIER'I AKTİV EDİN
GO
ƏGƏR OLMAZSA (SEÇ * FROM sys.objects HARADA object_id = OBJECT_ID(N."") VƏ (N"U") yazın)
BAŞLAYIN
CƏDVƏL YARAT .(

NULL DEYİL,
NULL DEYİL,
NULL DEYİL,
İLKİN AÇAR KLASTERDİR
A.S.C.


SON
GO
ANSI_NULLS DÜZEYİNİ QURUN
GO
QUOTED_IDENTIFIER'I AKTİV EDİN
GO
ƏGƏR OLMAZSA (SEÇ * FROM sys.objects HARADA object_id = OBJECT_ID(N."") VƏ (N"U") yazın)
BAŞLAYIN
CƏDVƏL YARAT .(
IDENTITY(1,1) NULL DEYİL,
SIFIR,
SIFIR,
İLKİN AÇAR KLASTERDİR
A.S.C.
) İLƏ (IGNORE_DUP_KEY = OFF) ON
) TEXTIMAGE_ON ÜZRƏ
SON
GO
ANSI_NULLS DÜZEYİNİ QURUN
GO
QUOTED_IDENTIFIER'I AKTİV EDİN
GO
ƏGƏR OLMAZSA (SEÇ * FROM sys.objects HARADA object_id = OBJECT_ID(N."") VƏ (N"U") yazın)
BAŞLAYIN
CƏDVƏL YARAT .(
IDENTITY(1,1) NULL DEYİL,
SIFIR,
SIFIR,
İLKİN AÇAR KLASTERDİR
A.S.C.
) İLƏ (IGNORE_DUP_KEY = OFF) ON
) ON
SON

SQL Server 2005-də sintaksis başqa bir mövzudur, mən sadəcə göstərmək istədim ki, mən SQL proqramlaşdırmasının əsaslarını təsvir etmişəm, siz əsasları bilməklə zirvəyə çata bilərsiniz.

Bu mövzuda hər hansı bir sualınız varsa, mənə yazın