Ms sql serverio užklausos. Užklausos (Query) kūrimo MS SQL Server duomenų bazėje pavyzdys

Paskutinis atnaujinimas: 2017-07-05

Paskutinėje temoje SQL Management Studio buvo sukurta paprasta duomenų bazė su viena lentele. Dabar apibrėžkime ir vykdykime pirmąją SQL užklausą. Norėdami tai padaryti, atidarykite „SQL Management Studio“, dešiniuoju pelės mygtuku spustelėkite aukščiausio lygio elementą „Object Explorer“ (serverio pavadinimas) ir pasirodžiusiame kontekstiniame meniu pasirinkite „Nauja užklausa“:

Po to centrinėje programos dalyje atsivers SQL komandų įvedimo langas.

Vykdykime užklausą lentelėje, kuri buvo sukurta ankstesnėje temoje, visų pirma, iš jos gausime visus duomenis. Mūsų duomenų bazė vadinama universitetu, o lentelė yra dbo.Students, todėl norėdami gauti duomenis iš lentelės, įvesime šią užklausą:

PASIRINKTI * IŠ universitetas.dbo.Studentai

SELECT sakinys leidžia pasirinkti duomenis. FROM nurodo šaltinį, iš kur gauti duomenis. Tiesą sakant, su šia užklausa mes sakome "Pasirinkti viską IŠ lentelės universitetas.dbo.Studentai". Verta pažymėti, kad lentelės pavadinimui naudojamas visas lentelės kelias, nurodant duomenų bazę ir schemą.

Įvedę užklausą, spustelėkite įrankių juostoje esantį mygtuką Vykdyti arba galite paspausti klavišą F5.

Dėl užklausos vykdymo programos apačioje atsiras nedidelė lentelė, kurioje bus rodomi užklausos rezultatai – tai yra visi duomenys iš lentelės Studentai.

Jei mums reikia pateikti kelias užklausas dėl tos pačios duomenų bazės, galime naudoti komandą USE duomenų bazei įpareigoti. Tokiu atveju užklausant lenteles pakanka nurodyti jų pavadinimą be duomenų bazės pavadinimo ir schemos:

NAUDOTI universitetą SELECT * FROM studentams

Šiuo atveju mes vykdome visą serverio užklausą, galime pasiekti bet kurią serveryje esančią duomenų bazę. Bet mes taip pat galime vykdyti užklausas tik konkrečioje duomenų bazėje. Norėdami tai padaryti, dešiniuoju pelės mygtuku spustelėkite norimą duomenų bazę ir kontekstiniame meniu pasirinkite Nauja užklausa:

Jei šiuo atveju norėtume pateikti užklausą aukščiau naudotos Studentų lentelės, tai užklausoje nereikėtų nurodyti duomenų bazės pavadinimo ir schemos, nes šios reikšmės jau būtų aiškios.

„SQL Server Management Studio“ suteikia visą įrankį visų tipų užklausoms kurti. Su juo galite kurti, išsaugoti, įkelti ir redaguoti užklausas. Be to, galite dirbti su užklausomis neprisijungę prie jokio serverio. Šis įrankis taip pat suteikia galimybę kurti įvairių projektų užklausas.

Su užklausomis galite dirbti naudodami užklausų rengyklę ir sprendimų naršyklę. Šiame straipsnyje aptariamos abi šios priemonės. Be šių dviejų „SQL Server Management Studio“ komponentų, apžvelgsime SQL kodo derinimą naudodami integruotą derinimo priemonę.

Užklausų redaktorius

Norėdami atidaryti užklausų rengyklės skydelį Užklausų redaktorius, SQL Server Management Studio įrankių juostoje spustelėkite mygtuką Nauja užklausa. Šis skydelis gali būti išplėstas, kad būtų rodomi mygtukai, skirti kurti visas galimas užklausas, o ne tik duomenų bazės variklio užklausas. Pagal numatytuosius nustatymus sukuriama nauja duomenų bazės variklio užklausa, bet taip pat galite sukurti MDX, XMLA ir kitas užklausas spustelėdami atitinkamą mygtuką įrankių juostoje.

Būsenos juosta, esanti užklausų rengyklės skydelio apačioje, rodo redaktoriaus ryšio su serveriu būseną. Jei nesate automatiškai prisijungę prie serverio, paleidus užklausų rengyklę, jums bus pateiktas dialogo langas Prisijungimas prie serverio, kuriame galėsite pasirinkti serverį, prie kurio norite prisijungti, ir autentifikavimo režimą.

Užklausų redagavimas neprisijungus suteikia daugiau lankstumo nei prisijungus prie serverio. Norint redaguoti užklausas, nebūtina būti prisijungus prie serverio, o užklausų rengyklės langą galima atjungti nuo vieno serverio (naudojant meniu komandą Query --> Connection --> Disconnect) ir prijungti prie kito neatidarius kito redaktoriaus lango. Norėdami pasirinkti redagavimo neprisijungus režimą, serverio ryšio dialogo lange, kuris pasirodo paleidus tam tikro tipo užklausos rengyklę, tiesiog spustelėkite mygtuką Atšaukti.

Naudodami užklausų rengyklę galite atlikti šias užduotis:

    Transact-SQL sakinių kūrimas ir vykdymas;

    sugeneruotų Transact-SQL sakinių išsaugojimas faile;

    bendrų užklausų vykdymo planų kūrimas ir analizavimas;

    grafinė pasirinktos užklausos vykdymo plano iliustracija.

Užklausų rengyklėje yra įmontuotas teksto rengyklė ir įrankių juosta su mygtukų rinkiniu įvairiems veiksmams atlikti. Pagrindinis užklausų rengyklės langas horizontaliai padalintas į užklausų skydelį (viršuje) ir rezultatų skydelį (apačioje). Vykdytini Transact-SQL teiginiai (ty užklausos) įvedami viršutinėje srityje, o sistemos, apdorojančios šias užklausas, rezultatai rodomi apatinėje srityje. Toliau pateiktame paveikslėlyje parodytas užklausos įvedimo į užklausų rengyklę pavyzdys ir šios užklausos vykdymo rezultatai:

Pirmasis USE užklausos sakinys nurodo naudoti SampleDb duomenų bazę kaip dabartinę duomenų bazę. Antrasis sakinys SELECT nuskaito visas lentelės Darbuotojas eilutes. Norėdami paleisti šią užklausą ir rodyti rezultatus, užklausų rengyklės įrankių juostoje spustelėkite mygtuką Vykdyti arba paspauskite F5 .

Galite atidaryti kelis Užklausų rengyklės langus, t.y. užmegzti kelis ryšius su vienu ar daugiau duomenų bazės modulio egzempliorių. Naujas ryšys sukuriamas spustelėjus mygtuką Nauja užklausa SQL Server Management Studio įrankių juostoje.

Užklausų rengyklės lango apačioje esančioje būsenos juostoje rodoma ši informacija, susijusi su užklausos teiginių vykdymu:

    dabartinės operacijos būsena (pvz., „Užklausa sėkmingai įvykdyta“);

    duomenų bazės serverio pavadinimas;

    dabartinis vartotojo vardas ir serverio proceso ID;

    esamos duomenų bazės pavadinimas;

    laikas, per kurį buvo įvykdyta paskutinė užklausa;

    rastų eilučių skaičius.

Vienas iš pagrindinių „SQL Server Management Studio“ privalumų yra jos naudojimo paprastumas, kuris taip pat taikomas ir užklausų redaktoriui. Užklausų rengyklė suteikia daug funkcijų, kurios palengvina Transact-SQL sakinių kodavimą. Visų pirma, jis naudoja sintaksės paryškinimą, kad pagerintų Transact-SQL teiginių skaitomumą. Visi rezervuoti žodžiai rodomi mėlynai, kintamieji – juodai, eilutės – raudonai, o komentarai – žalia spalva.

Be to, užklausų rengyklė turi kontekstui jautrią pagalbą Dinaminė pagalba, per kurią galite gauti informacijos apie konkrečią instrukciją. Jei nežinote teiginio sintaksės, pasirinkite jį redaktoriuje ir paspauskite klavišą F1. Taip pat galite paryškinti įvairių „Transact-SQL“ teiginių parametrus, kad gautumėte pagalbos iš „Books Online“.

SQL Management Studio palaiko SQL Intellisense, kuris yra automatinio užbaigimo įrankis. Kitaip tariant, šis modulis siūlo labiausiai tikėtiną iš dalies įvestų Transact-SQL sakinio elementų užbaigimą.

„Object Explorer“ taip pat gali padėti redaguoti užklausas. Pavyzdžiui, jei norite sužinoti, kaip sukurti lentelės Darbuotojų sakinį CREATE TABLE, dešiniuoju pelės mygtuku spustelėkite lentelę objektų naršyklėje ir nuorodų meniu pasirinkite Skripto lentelė kaip --> CREATE to --> New Query Editor Window. Lenteles --> Naudojant CREATE --> New Query Editor langas). Užklausų rengyklės langas, kuriame yra taip sukurtas sakinys CREATE TABLE, parodytas paveikslėlyje žemiau. Ši galimybė taip pat taikoma kitiems objektams, pvz., saugomoms procedūroms ir funkcijoms.

Objektų naršyklė yra labai naudinga norint grafiškai parodyti konkrečios užklausos vykdymo planą. Užklausos vykdymo planas yra vykdymo parinktis, kurią užklausos optimizavimo priemonė pasirenka iš kelių galimų konkrečios užklausos vykdymo parinkčių. Įveskite reikiamą užklausą viršutiniame redaktoriaus skydelyje, pasirinkite komandų seką iš meniu Užklausa --> Rodyti numatomą vykdymo planą (Užklausa --> Rodyti numatomą vykdymo planą) ir šios užklausos vykdymo planas bus rodomas apatiniame redaktoriaus lango skydelyje.

Sprendimų naršyklė

„SQL Server Management Studio“ užklausų redagavimas pagrįstas sprendimų metodu. Jei sukursite tuščią užklausą naudodami mygtuką Nauja užklausa, ji bus pagrįsta tuščiu sprendimu. Tai galima pamatyti paleidus komandų seką iš meniu View --> Solution Explorer iškart po tuščios užklausos atidarymo.

Sprendimas gali būti susijęs su nė vienu projektu, vienu ar keliais projektais. Tuščias sprendimas, nesusijęs su jokiu projektu. Norėdami susieti projektą su sprendimu, uždarykite tuščią sprendimą, Solution Explorer ir Query Editor ir sukurkite naują projektą vykdydami komandų seką Failas --> Naujas --> Projektas. Atsidariusiame naujo projekto lange vidurinėje srityje pasirinkite parinktį SQL serverio scenarijai. Projektas yra būdas tvarkyti failus konkrečioje vietoje. Galite suteikti projektui pavadinimą ir pasirinkti vietą jo vietai diske. Kai kuriate naują projektą, automatiškai paleidžiamas naujas sprendimas. Galite pridėti projektą prie esamo sprendimo naudodami Solution Explorer.

Kiekvienam sukurtam projektui sprendimų naršyklė rodo aplankus Ryšiai (ryšiai), užklausos (užklausos) ir įvairūs (įvairūs) aplankai. Norėdami atidaryti naują tam tikro projekto užklausų rengyklės langą, dešiniuoju pelės mygtuku spustelėkite aplanką Užklausos ir kontekstiniame meniu pasirinkite Nauja užklausa.

SQL serverio derinimas

SQL Server, pradedant nuo SQL Server 2008, turi integruotą kodo derinimo priemonę. Norėdami pradėti derinimo seansą, pagrindiniame SQL Server Management Studio meniu pasirinkite šią komandų seką Debug --> Start Debugging. Pažiūrėsime į derinimo priemonės veikimą naudodami komandų paketo pavyzdį. Paketas yra loginė SQL sakinių ir procedūrinių plėtinių seka, siunčiama į duomenų bazės variklį, kad būtų vykdomi visi joje esantys teiginiai.

Žemiau esančiame paveikslėlyje parodytas paketas, kuriame skaičiuojamas darbuotojų, dirbančių su p1 projektu, skaičius. Jei šis skaičius yra 4 ar daugiau, rodomas atitinkamas pranešimas. Kitu atveju rodomi darbuotojų vardai ir pavardės.

Norėdami sustabdyti paketo vykdymą pagal konkrečią komandą, galite nustatyti pertraukos taškus, kaip parodyta paveikslėlyje. Norėdami tai padaryti, spustelėkite eilutės, kurioje norite sustoti, kairėje. Pradėjus derinti, vykdymas sustoja ties pirmoje kodo eilutėje, kuri pažymėta geltona rodykle. Norėdami tęsti vykdymą ir derinimą, vykdykite meniu komandą Debug --> Continue (Debugging --> Continue). Pakuotės nurodymų vykdymas tęsis iki pirmojo lūžio taško, o geltona rodyklė sustos.

Informacija, susijusi su derinimo procesu, rodoma dviejose srityse užklausų rengyklės lango apačioje. Informacija apie įvairių tipų derinimo informaciją yra sugrupuota šiuose skydeliuose keliuose skirtukuose. Kairiajame skydelyje yra skirtukas Auto (automatinis), Vietiniai (vietinis) ir iki penkių skirtukų Žiūrėti (matomas). Dešinėje srityje yra skirtukai Skambučių krūva, Gijos, Lūžio taškai, Komandų langas, Tiesioginis langas ir Išvestis. Skirtuke Vietiniai rodomos kintamos reikšmės, skirtuke Skambučių krūva rodomos skambučių krūvos reikšmės, o skirtuke Pertraukos taškai rodoma informacija apie lūžio taškus.

Norėdami sustabdyti derinimo procesą, vykdykite komandų seką iš pagrindinio meniu Debug --> Stop Debugging arba paspauskite mėlyną mygtuką derinimo įrankių juostoje.

„SQL Server 2012“ įtaisytasis derinimo įrankis „SQL Server Management Studio“ buvo patobulintas keliomis naujomis funkcijomis. Dabar jame galite atlikti keletą šių operacijų:

    Nurodykite pertraukos taško sąlygą. Lūžio taško būklė yra SQL išraiška, kurios įvertinta reikšmė lemia, ar kodo vykdymas bus sustabdytas tam tikrame taške, ar ne. Norėdami nurodyti pertraukos taško sąlygą, dešiniuoju pelės mygtuku spustelėkite raudoną norimos lūžio taško piktogramą ir kontekstiniame meniu pasirinkite Sąlyga. Atsidaro dialogo langas Breakpoint Condition, kuriame reikia įvesti reikiamą loginę išraišką. Be to, jei norite sustabdyti vykdymą, jei išraiška teisinga, turėtumėte nustatyti jungiklį Is True. Jei vykdymą reikia sustabdyti, jei pasikeitė išraiška, turite nustatyti jungiklį Kai pakeista (pakeista).

    Nurodykite lūžio taško įvykių skaičių. Patikimų skaičius yra sąlyga, kad vykdymas būtų sustabdytas tam tikrame taške, atsižvelgiant į tai, kiek kartų vykdymo metu buvo pasiektas lūžio taškas. Kai pasiekiamas nurodytas pakartojimų skaičius ir bet kuri kita sąlyga, nurodyta nurodytam lūžio taškui, derinimo priemonė atlieka nurodytą veiksmą. Pertraukos sąlyga, pagrįsta įvykių skaičiumi, gali būti viena iš šių:

    1. besąlyginis (numatytasis veiksmas) (Visada pertrauka);

      jei pataikymų skaičius lygus nurodytai reikšmei (Pertrauka, kai jo skaičius lygus nurodytai reikšmei);

      jei įvykių skaičius yra nurodytos vertės kartotinis (Pertrauka, kai smūgių skaičius lygus nurodytos vertės kartotiniams);

      jei smūgių skaičius yra lygus arba didesnis už nurodytą reikšmę (Pertrauka, kai jo skaičius yra didesnis arba lygus nurodytai reikšmei).

    Norėdami nustatyti įvykių skaičių derinimo metu, dešiniuoju pelės mygtuku spustelėkite norimos pertraukos taško piktogramą skirtuke Breakpoints, kontekstiniame meniu pasirinkite Hit Count, tada pasirodžiusiame dialogo lange Breakpoint Hit Count pasirinkite vieną iš šių sąlygų: iš aukščiau esančio sąrašo. . Jei norite pasirinkti parinktis, kurioms reikalinga reikšmė, įveskite ją į teksto laukelį, esantį sąlygų išskleidžiamojo sąrašo dešinėje. Norėdami išsaugoti nurodytas sąlygas, spustelėkite mygtuką Gerai.

    Nurodykite pertraukos taško filtrą. Pertraukos taško filtras apriboja lūžio taško veikimą tik nurodytuose kompiuteriuose, procesuose ar gijose. Norėdami nustatyti pertraukos taško filtrą, dešiniuoju pelės mygtuku spustelėkite norimą lūžio tašką ir kontekstiniame meniu pasirinkite Filtruoti. Tada atsidariusiame dialogo lange Breakpoint Filters nurodykite išteklius, kuriais norite apriboti šio lūžio taško vykdymą. Norėdami išsaugoti nurodytas sąlygas, spustelėkite Gerai.

    Nurodykite veiksmą pertraukos taške. Sąlyga „Kai nukentėjo“ nurodo veiksmą, kurio reikia imtis, kai paketo vykdymas pasiekia nurodytą pertraukos tašką. Pagal numatytuosius nustatymus, kai įvykdomos ir smūgių skaičiaus, ir sustabdymo sąlygos, vykdymas nutraukiamas. Arba galite rodyti iš anksto nurodytą pranešimą.

    Norėdami nurodyti, ką daryti paspaudus lūžio tašką, dešiniuoju pelės mygtuku spustelėkite raudoną norimos pertraukos taško piktogramą ir kontekstiniame meniu pasirinkite Kai nukentėjo. Atsidariusiame dialogo lange Kai lūžio taškas nukentėjo, pasirinkite norimą veiksmą. Norėdami išsaugoti nurodytas sąlygas, spustelėkite mygtuką Gerai.

    Naudokite greito stebėjimo langą. „QuickWatch“ lange galite peržiūrėti „Transact-SQL“ išraiškos reikšmę ir išsaugoti šią išraišką „Watch Values“ lange. Norėdami atidaryti „Quick Watch“ langą, „Debug“ meniu pasirinkite „Quick Watch“. Šiame lange esančią išraišką galima pasirinkti iš išskleidžiamojo sąrašo Išraiška (Išraiška) arba įvesti ją į šį lauką.

    Naudokite greitos informacijos patarimą. Kai užvedate pelės žymeklį virš kodo identifikatoriaus, greitosios informacijos įrankis parodo jo deklaraciją iššokančiame lange.

Lentelės išraiškos vadinamos antrinėmis užklausomis, kurios naudojamos ten, kur tikimasi lentelės. Yra dviejų tipų lentelės išraiškos:

    išvestinės lentelės;

    apibendrintos lentelės išraiškos.

Šios dvi lentelės išraiškų formos aptariamos tolesniuose poskyriuose.

Išvestinės lentelės

Išvestinė lentelė yra lentelės išraiška, įtraukta į užklausos sąlygą FROM. Išvestinės lentelės gali būti naudojamos, kai negalima naudoti stulpelių slapyvardžių, nes SQL vertėjas apdoroja kitą teiginį, kol nežinomas slapyvardis. Toliau pateiktame pavyzdyje parodytas bandymas naudoti stulpelio slapyvardį, kai apdorojama kita sąlyga, kol nežinomas slapyvardis:

NAUDOTI SampleDb; PASIRINKITE MĖNESĮ(Įvedimo data) kaip įvesties_mėnesį FROM Darbo_grupe GROUP BY įvesti_mėnesį;

Bandant vykdyti šią užklausą, bus pateiktas toks klaidos pranešimas:

207 pranešimas, 16 lygis, 1 būsena, 5 eilutė Neteisingas stulpelio pavadinimas „enter_month“. (207 pranešimas: 16 lygis, 1 būsena, 5 eilutė Neteisingas stulpelio pavadinimas enter_month)

Klaidos priežastis yra ta, kad sąlyga GROUP BY apdorojama prieš apdorojant atitinkamą SELECT sakinio sąrašą, o stulpelio enter_month pseudonimas nėra žinomas apdorojant grupę.

Šią problemą galima išspręsti naudojant rodinį, kuriame yra ankstesnė užklausa (be GROUP BY sąlygos), nes sąlyga FROM vykdoma prieš GROUP BY sakinį:

NAUDOTI SampleDb; SELECT įvesti_mėnesį NUO (SELECT MONTH(EnterDate) kaip įvesti_mėnesį FROM Works_on) AS m GROUP BY įvesti_mėnesį;

Šios užklausos rezultatas bus toks:

Paprastai lentelės išraiška gali būti dedama bet kurioje SELECT sakinio vietoje, kur gali būti rodomas lentelės pavadinimas. (Lentelės išraiškos rezultatas visada yra lentelė arba, ypatingais atvejais, išraiška.) Šis pavyzdys rodo lentelės išraiškos naudojimą SELECT sakinio pasirinkimo sąraše:

Šios užklausos rezultatas:

Bendrosios lentelės išraiškos

Bendroji lentelės išraiška (OTB) (sutrumpintai CTE) yra pavadinta lentelės išraiška, palaikoma Transact-SQL kalbos. Įprastos lentelės išraiškos naudojamos šių dviejų tipų užklausose:

    nerekursyvus;

    rekursyvus.

Šios dvi užklausų rūšys aptariamos tolesniuose skyriuose.

OTB ir nerekursyvios užklausos

Nerekursinė OTB forma gali būti naudojama kaip alternatyva išvestinėms lentelėms ir rodiniams. Paprastai OTB apibrėžia SU išlygomis ir papildoma užklausa, kuri nurodo pavadinimą, naudojamą sąlygoje WITH. Transact-SQL raktinio žodžio WITH reikšmė yra dviprasmiška. Kad būtų išvengta dviprasmybių, teiginys prieš WITH teiginį turėtų būti baigtas kabliataškiu.

NAUDOTI AdventureWorks2012; SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") AND Freight > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader2 ")/2,5;

Šiame pavyzdyje pateikta užklausa pasirenka užsakymus, kurių bendri mokesčiai (TotalDue) yra didesni už visų mokesčių vidurkį ir kurių gabenimo mokesčiai (Freight) yra didesni nei 40 % vidutinių mokesčių. Pagrindinė šios užklausos savybė yra jos masiškumas, nes įdėtą užklausą reikia parašyti du kartus. Vienas iš galimų būdų sumažinti užklausos konstrukcijos apimtį būtų sukurti rodinį, kuriame yra antrinė užklausa. Tačiau šis sprendimas yra šiek tiek sudėtingas, nes reikia sukurti rodinį, o po to jį ištrinti, kai užklausa bus baigta. Geriausias būdas būtų sukurti OTB. Toliau pateiktame pavyzdyje parodytas nerekursyvus OTB naudojimas, kuris sutrumpina aukščiau pateiktą užklausos apibrėžimą:

NAUDOTI AdventureWorks2012; WITH Price_calc(year_2005) AS (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT_year_kaina_2005) FROM /2,5;

WITH sakinio sintaksė nerekursinėse užklausose yra tokia:

Parametras cte_name yra OTB pavadinimas, apibrėžiantis gautą lentelę, o parametras column_list yra lentelės išraiškos stulpelių sąrašas. (Aukščiau pateiktame pavyzdyje OTB pavadinta kaina_skaičiuojama ir turi vieną stulpelį, metai_2005.) Parametras inner_query reiškia SELECT sakinį, nurodantį atitinkamos lentelės išraiškos rezultatų rinkinį. Tada apibrėžta lentelės išraiška gali būti naudojama išorinėje užklausoje. (Aukščiau pateiktame pavyzdyje išorinėje užklausoje naudojamas OTB kainos_skaičiavimas ir jo stulpelis metai_2005, siekiant supaprastinti dvigubą įdėtą užklausą.)

OTB ir rekursinės užklausos

Šiame skyriuje pateikiama padidinto sudėtingumo medžiaga. Todėl pirmą kartą perskaičius rekomenduojama jį praleisti ir prie jo grįžti vėliau. OTB gali būti rekursyvūs, nes OTB gali turėti nuorodų į save. Pagrindinė rekursinės užklausos OTB sintaksė atrodo taip:

Parametrai cte_name ir column_list turi tą pačią reikšmę kaip ir OTB nerekursyvioms užklausoms. WITH sakinio turinį sudaro dvi užklausos, sujungtos teiginiu SĄJUNGOS VISI. Pirmoji užklausa iškviečiama tik vieną kartą ir pradeda kaupti rekursijos rezultatą. Pirmasis operatoriaus UNION ALL operandas nenurodo OTB. Ši užklausa vadinama nuorodos užklausa arba šaltiniu.

Antrojoje užklausoje yra nuoroda į OTB ir jos rekursinė dalis. Dėl šios priežasties jis vadinamas rekursyviu nariu. Pirmajame rekursinės dalies iškvietime OTB nuoroda reiškia nuorodos užklausos rezultatą. Rekursyvus narys naudoja pirmojo skambučio užklausos rezultatą. Po to sistema vėl iškviečia rekursinę dalį. Skambutis rekursiniam nariui baigiasi, kai ankstesnis skambutis jam grąžina tuščią rezultatų rinkinį.

Operatorius UNION ALL sujungia iki šiol sukauptas eilutes, taip pat papildomas eilutes, kurias dabartinis iškvietimas įtraukė į rekursinį narį. (Jei yra operatorius UNION ALL, reiškia, kad pasikartojančios eilutės nebus pašalintos iš rezultato.)

Galiausiai parametras outer_query apibrėžia išorinę užklausą, kurią OTB naudoja, kad gautų visus skambučius į abiejų narių sąjungą.

Norėdami parodyti rekursyvią OTB formą, naudojame lėktuvo lentelę, apibrėžtą ir užpildytą toliau pateiktame pavyzdyje nurodytu kodu:

NAUDOTI SampleDb; KURTI LENTELĘ Lėktuvas (ContainingAssembly VARCHAR(10), ContainedAssembly VARCHAR(10), QuantityContained INT, UnitCost DECIMAL(6,2)); INSERT INTO Airplane VALUES („Lėktuvas“, „Fiuzeliažas“, 1, 10); INSERT INTO Airplane VALUES („Lėktuvas“, „Sparnai“, 1, 11); INSERT INTO Airplane VALUES ("Airplane", "Tail", 1, 12); INSERT INTO Airplane VALUES ("Fiuzeliažas", "Salonas", 1, 13); INSERT INTO Lėktuvo VERTYBĖS ("Fiuzeliažas", "Laiko kabina", 1, 14); INSERT INTO Lėktuvo VERTYBĖS ("Fiuzeliažas", "Nosis", 1, 15); INSERT INTO Lėktuvo VERTYBĖS ("Salonas", NULL, 1,13); INSERT INTO Airplane VALUES("kabina", NULL, 1, 14); INSERT INTO Lėktuvo VERTĖS ("Nosis", NULL, 1, 15); INSERT INTO Lėktuvo VALUES("Sparnai", NULL,2, 11); INSERT INTO Lėktuvo VERTĖS ("Uodega", NULL, 1, 12);

Lentelėje „Lėktuvas“ yra keturi stulpeliai. Stulpelyje ContainingAssembly apibrėžiamas mazgas, o stulpelyje ContainedAssembly apibrėžiamos dalys (po vieną), kurios sudaro atitinkamą mazgą. Žemiau esančiame paveikslėlyje parodyta grafinė galimo orlaivio tipo ir jo sudedamųjų dalių iliustracija:

Lėktuvų lentelę sudaro 11 eilučių:

Šiame pavyzdyje naudojama sąlyga WITH, kad apibrėžtų užklausą, kuri apskaičiuoja bendrą kiekvienos kūrimo kainą:

NAUDOTI SampleDb; WITH_detalių_sąrašas(surinkimas1, kiekis, kaina) AS (SELECT ContainingAssembly, QuantityContained, Unit Cost FROM Plane WHERE Contained Assembly IS NULL UNION ALL SELECT a.ContainingAssembly, a.Quantity Contained, CAST(l.quantity)*,DECl.quantity6 ) FROM l-detalių_sąrašas, Lėktuvas a KUR l.surinkimas1 = a.ContainedAssembly) PASIRINKITE surinkimą1 "Dalis", kiekis "Kiekis", kaina "Kaina" IŠ_dalių_sąrašo;

Sąlyga WITH apibrėžia OTB sąrašą pavadinimu list_of_parts, susidedantį iš trijų stulpelių: surinkimas1, kiekis ir kaina. Pirmasis SELECT sakinys pavyzdyje iškviečiamas tik vieną kartą, kad būtų išsaugoti pirmojo rekursijos proceso žingsnio rezultatai. SELECT sakinys paskutinėje pavyzdžio eilutėje rodo tokį rezultatą.

Kiekvienas iš mūsų reguliariai susiduriame ir naudojamės įvairiomis duomenų bazėmis. Kai pasirenkame el. pašto adresą, dirbame su duomenų baze. Duomenų bazėse naudojamos paieškos paslaugos, bankai klientų duomenims saugoti ir pan.

Tačiau, nepaisant nuolatinio duomenų bazių naudojimo, net ir daugeliui programinės įrangos sistemų kūrėjų yra daug „baltųjų dėmių“ dėl skirtingų tų pačių terminų interpretacijų. Prieš pažvelgdami į SQL kalbą, pateiksime trumpą pagrindinių duomenų bazės terminų apibrėžimą. Taigi.

Duomenų bazė - failas arba rinkmenų rinkinys, skirtas sutvarkytoms duomenų struktūroms ir jų ryšiams saugoti. Labai dažnai duomenų bazė vadinama valdymo sistema – tai tik tam tikro formato informacijos saugykla ir gali dirbti su įvairiomis DBVS.

Lentelė - Įsivaizduokime aplanką, kuriame saugomi dokumentai, sugrupuoti pagal tam tikrą atributą, pavyzdžiui, paskutinio mėnesio užsakymų sąrašas. Tai yra lentelė kompiuteryje. Atskira lentelė turi savo unikalų pavadinimą.

Duomenų tipas - informacijos rūšis, kurią leidžiama saugoti tam tikrame stulpelyje ar eilutėje. Tai gali būti skaičiai arba tam tikro formato tekstas.

Stulpelis ir eilutė– visi dirbome su skaičiuoklėmis, kuriose taip pat yra eilučių ir stulpelių. Bet kuri reliacinė duomenų bazė su lentelėmis veikia taip pat. Eilutės kartais vadinamos įrašais.

pirminis raktas- kiekviena lentelės eilutė gali turėti vieną ar daugiau stulpelių, kad būtų galima ją unikaliai identifikuoti. Be pirminio rakto labai sunku atnaujinti, modifikuoti ir ištrinti norimas eilutes.

Kas yra SQL?

SQL(anglų kalba – struktūrinės užklausos kalba) buvo sukurta tik darbui su duomenų bazėmis ir šiuo metu yra visų populiarių DBVS standartas. Kalbos sintaksė susideda iš nedidelio skaičiaus operatorių ir yra lengvai išmokstama. Tačiau, nepaisant išorinio paprastumo, jis leidžia kurti sql užklausas sudėtingoms operacijoms su bet kokio dydžio duomenų baze.

Nuo 1992 m. buvo visuotinai priimtas standartas, vadinamas ANSI SQL. Ji apibrėžia pagrindinę operatorių sintaksę ir funkcijas, palaikoma visų DBVS rinkos lyderių, tokių kaip ORACLE. Neįmanoma aprėpti visų kalbos galimybių viename nedideliame straipsnyje, todėl trumpai apžvelgsime tik pagrindines SQL užklausas. Pavyzdžiai aiškiai parodo kalbos paprastumą ir galimybes:

  • duomenų bazių ir lentelių kūrimas;
  • duomenų atranka;
  • įrašų pridėjimas;
  • informacijos keitimas ir ištrynimas.

SQL duomenų tipai

Visuose duomenų bazės lentelės stulpeliuose saugomi to paties tipo duomenys. SQL duomenų tipai yra tokie patys kaip ir kitose programavimo kalbose.

Lentelių ir duomenų bazių kūrimas

Yra du būdai, kaip sukurti naujas duomenų bazes, lenteles ir kitas užklausas SQL:

  • per DBVS konsolę
  • Naudojant interaktyvius administravimo įrankius, įtrauktus į duomenų bazės serverį.

Operatorius sukuria naują duomenų bazę KURTI DUOMENŲ BAZĘ<наименование базы данных>; . Kaip matote, sintaksė yra paprasta ir glausta.

Duomenų bazės viduje kuriame lenteles naudodami CREATE TABLE teiginį su šiais parametrais:

  • lentelės pavadinimas
  • stulpelių pavadinimai ir duomenų tipai

Pavyzdžiui, sukurkime prekių lentelę su šiais stulpeliais:

Sudarome lentelę:

KURTI LENTELĘ Prekė

(prekės_id CHAR(15) NOT NULL,

tiekėjo_id CHAR(15) NOT NULL,

prekės_pavadinimas CHAR(254) NULL,

commodity_price DECIMAL(8,2) NULL,

commodity_desc VARCHAR(1000) NULL);

Lentelėje yra penki stulpeliai. Po pavadinimo pateikiamas duomenų tipas, stulpeliai atskiriami kableliais. Stulpelio reikšmė gali būti tuščia (NULL) arba užpildyta (NOT NULL), ir tai nustatoma kuriant lentelę.

Duomenų pasirinkimas iš lentelės

Duomenų pasirinkimo operatorius yra dažniausiai naudojama SQL užklausa. Norint gauti informaciją, reikia nurodyti, ką norime pasirinkti iš tokios lentelės. Pirmiausia paprastas pavyzdys:

SELECT commodity_name FROM Commodity

Po SELECT sakinio nurodome stulpelio pavadinimą informacijai gauti, o FROM apibrėžia lentelę.

Užklausos vykdymo rezultatas bus visos lentelės eilutės su Prekės_pavadinimo reikšmėmis ta tvarka, kuria jos buvo įvestos į duomenų bazę, t.y. be jokio rūšiavimo. Rezultatui užsakyti naudojamas papildomas punktas ORDER BY.

Norėdami pateikti užklausą keliuose laukuose, surašykite juos kableliais, kaip parodyta šiame pavyzdyje:

SELECT commodity_id, commodity_name, commodity_price FROM Commodity

Kaip užklausos rezultatą galima gauti visų eilutės stulpelių reikšmę. Tam naudojamas „*“ ženklas:

PASIRINKTI * IŠ Prekės

  • Be to, SELECT palaiko:
  • Duomenų rūšiavimas (ORDER BY teiginys)
  • Pasirinkite pagal sąlygas (KUR)
  • Grupavimo terminas (GROUP BY)

Pridedamas eilutė

Norėdami į lentelę įtraukti eilutę, naudojamos SQL užklausos su INSERT sakiniu. Pridėti galima trimis būdais:

  • pridėti naują visą eilutę;
  • stygos dalis;
  • užklausos rezultatai.

Norėdami pridėti visą eilutę, turite nurodyti lentelės pavadinimą ir naujos eilutės stulpelių (laukų) reikšmes. Štai pavyzdys:

INSERT Į prekių vertes ("106", "50", "Coca-Cola", "1.68", "be alkoholio ,)

Pavyzdyje į lentelę įtraukiamas naujas produktas. Kiekvieno stulpelio reikšmės nurodomos po VALUES. Jei stulpelyje nėra atitinkamos reikšmės, reikia nurodyti NULL. Stulpeliai užpildomi reikšmėmis tokia tvarka, kokia buvo nurodyta kuriant lentelę.

Jei pridedate tik dalį eilutės, turite aiškiai nurodyti stulpelių pavadinimus, kaip parodyta pavyzdyje:

INSERT INTO Prekė (prekės_id, tiekėjo_id, prekės_pavadinimas)

VERTYBĖS("106 ", '50", "Coca Cola")

Įvedėme tik prekės, tiekėjo ir jo pavadinimo identifikatorius, o kitus laukus palikome tuščius.

Pridedami užklausos rezultatai

INSERT pirmiausia naudojamas eilutėms pridėti, bet taip pat gali būti naudojamas SELECT sakinio rezultatams pridėti.

Keisti duomenis

Norėdami pakeisti informaciją duomenų bazės lentelės laukuose, turite naudoti sakinį UPDATE. Operatorius gali būti naudojamas dviem būdais:

  • Visos lentelės eilutės atnaujinamos.
  • Tik tam tikrai linijai.

ATNAUJINIMAS susideda iš trijų pagrindinių elementų:

  • lentelę, kurioje būtina atlikti pakeitimus;
  • laukų pavadinimai ir naujos jų reikšmės;
  • keisti eilučių pasirinkimo sąlygas.

Apsvarstykite pavyzdį. Tarkime, prekės, kurios ID=106, kaina pasikeitė, todėl šią eilutę reikia atnaujinti. Rašome tokį pareiškimą:

UPDATE Prekės SET commodity_price = "3,2" WHERE commodity_id = "106"

Nurodėme lentelės pavadinimą, mūsų atveju Commodity, kur bus atliktas atnaujinimas, tada po SET - naują stulpelio reikšmę ir radome norimą įrašą, nurodydami norimą ID reikšmę WHERE.

Norėdami pakeisti kelis stulpelius, po sakinio SET nurodykite kelias stulpelių ir verčių poras, atskirtas kableliais. Pažiūrėkime į pavyzdį, kuriame atnaujinamas prekės pavadinimas ir kaina:

UPDATE Prekės SET commodity_name='Fanta', commodity_price = "3.2" WHERE commodity_id = "106"

Norėdami ištrinti informaciją stulpelyje, galite nustatyti jį į NULL, jei tai leidžia lentelės struktūra. Reikia atsiminti, kad NULL yra tiksliai „ne“ reikšmė, o ne nulis teksto ar skaičiaus pavidalu. Pašalinti produkto aprašymą:

UPDATE Prekės SET commodity_desc = NULL WHERE commodity_id = "106"

Pašalinamos eilutės

SQL užklausos, skirtos lentelės eilėms ištrinti, vykdomos naudojant DELETE teiginį. Yra du naudojimo atvejai:

  • kai kurios lentelės eilutės ištrinamos;
  • visos lentelės eilutės ištrinamos.

Vienos lentelės eilutės ištrynimo pavyzdys:

IŠTRINTI IŠ PREKIŲ WHERE commodity_id = "106"

Po DELETE FROM nurodome lentelės, kurioje bus ištrintos eilutės, pavadinimą. WHERE sąlyga yra sąlyga, pagal kurią eilutės bus pasirinktos ištrinti. Pavyzdyje mes ištriname produkto eilutę, kurios ID=106. Labai svarbu nurodyti KUR. praleidus šį teiginį bus ištrintos visos lentelės eilutės. Tai taip pat taikoma keičiant laukų vertę.

Teiginyje DELETE nenurodomi stulpelių pavadinimai ar metasimboliai. Jis visiškai pašalina eilutes, bet negali pašalinti nei vieno stulpelio.

SQL naudojimas „Microsoft Access“.

Paprastai naudojamas interaktyviai kurti lenteles, duomenų bazes, tvarkyti, modifikuoti, analizuoti duomenis duomenų bazėje ir įgyvendinti SQL Access užklausas per patogų interaktyvų užklausų dizainerį (Query Designer), kurį naudodami galite kurti ir iš karto vykdyti bet kokio sudėtingumo SQL sakinius.

Taip pat palaikomas serverio prieigos režimas, kuriame Access DBMS gali būti naudojamas kaip SQL užklausų generatorius į bet kurį ODBC duomenų šaltinį. Ši galimybė leidžia „Access“ programoms sąveikauti su bet kokiu formatu.

SQL plėtiniai

Kadangi SQL užklausos neturi visų procedūrinio programavimo kalbų ypatybių, pvz., kilpų, šakų ir kt., DBVS pardavėjai kuria savo SQL versiją su pažangiomis funkcijomis. Visų pirma, tai yra saugomų procedūrų ir standartinių procedūrinių kalbų operatorių palaikymas.

Dažniausiai pasitaikantys kalbos dialektai:

  • Oracle duomenų bazė – PL/SQL
  • „Interbase“, „Firebird“ – PSQL
  • „Microsoft SQL Server“ – „Transact-SQL“.
  • PostgreSQL – PL/pgSQL.

SQL į žiniatinklį

MySQL DBVS platinama pagal GNU bendrąją viešąją licenciją. Yra komercinė licencija su galimybe kurti pasirinktinius modulius. Kaip neatskiriama dalis, ji yra įtraukta į populiariausius interneto serverių rinkinius, tokius kaip XAMPP, WAMP ir LAMP, ir yra populiariausia DBVS, skirta programoms internete kurti.

Jį sukūrė „Sun Microsystems“, o šiuo metu jį prižiūri „Oracle Corporation“. Palaiko duomenų bazes iki 64 terabaitų, SQL:2003 sintaksės standartą, duomenų bazių replikaciją ir debesų paslaugas.

SQL- Struktūrinės užklausos kalba.
Šioje apžvalgoje apžvelgsime dažniausiai pasitaikančius SQL užklausų tipus.
SQL standartas yra apibrėžtas ANSI(Amerikos nacionalinis standartų institutas).
SQL yra kalba, specialiai skirta reliacinėms duomenų bazėms.

SQL padalijimas:


DDL
(Duomenų apibrėžimo kalba) - vadinamoji schemos aprašo kalba ANSI, susideda iš komandų, kurios sukuria objektus (lenteles, indeksus, rodinius ir pan.) duomenų bazėje.
DML(Duomenų manipuliavimo kalba) yra komandų rinkinys, nustatantis, kokios vertės yra lentelėse bet kuriuo metu.
DCD(Duomenų valdymo kalba) susideda iš priemonių, kurios nustato, ar leisti vartotojui atlikti tam tikrus veiksmus, ar ne. Jie yra ANSI DDL dalis. Nepamirškite šių vardų. Tai ne skirtingos kalbos, o SQL komandų skyriai, sugrupuoti pagal jų funkcijas.

Duomenų tipai:

SQL serveris – duomenų tipai

apibūdinimas

bigint (tarp 8)

bigint (tarp 8)

dvejetainis(n)

dvejetainis n) arba vaizdas

charakteris
(sinonimas char)

nacionalinis charakteris arba ntekstas

charakteris kintantis(sinonimas char besikeičiantis varchar)

skiriasi nacionalinis charakteris arba ntekstas

data ir laikas

data ir laikas

dešimtainis

jis yra skaitinis

dvigubas tikslumas

dvigubas tikslumas

sveikasis skaičius (tarp 4) (sinonimas: tarpt)

sveikasis skaičius (tarp 4)

nacionalinis charakteris(sinonimas: nacionalinis charakteris, nchar)

nacionalinis charakteris

Skaitinis(sinonimai: dešimtainis, gruod)

skiriasi nacionalinis charakteris(sinonimai: skiriasi nacionalinis charakteris, nvarchar)

skiriasi nacionalinis charakteris

Mažas laikas

data ir laikas

smallint (tarp 2)

smallint (tarp 2)

Maži pinigai

sql_variant

Nebepalaikoma

Ntekstas
Pradedant nuo SQL Server 2005, jo naudoti nerekomenduojama.

Laiko žyma

Nepalaikomas

smulkmena (tarp 1)

smulkmena (tarp 1)

Unikalus identifikatorius

unikalus identifikatorius

varbinarinis(n)

varbinarinis n) arba vaizdas

mažas pasimatymo laikas

data ir laikas

smallint (tarp 2)

smallint (tarp 2)

nedideli pinigai

sql_variant

Nepalaikomas

laiko žyma

Nepalaikomas

smulkmena (tarp 1)

smulkmena (tarp 1)

unikalus identifikatorius

unikalus identifikatorius

varbinarinis(n)

varbinarinis n) arba vaizdas

Duomenų tipų lentelė SQL Server 2000

KAS YRA PRAŠYMAS?

Prašymas yra komanda, kurią suteikiate savo duomenų bazės programai. Užklausos yra DML kalbos dalis. Visos SQL užklausos susideda iš vienos komandos. Šios komandos struktūra yra apgaulingai paprasta, nes turite ją išplėsti, kad atliktumėte labai sudėtingus vertinimus ir duomenų manipuliacijas.

SELECT komanda:

PASIRINKTI„Select“ yra dažniausiai naudojama komanda, ji naudojama duomenims iš lentelės parinkti.
Užklausos tipas naudojant SELECT:

PASIRINKITE ID, vartotojo_vardą, miestą, gimimo_dieną FROM vartotojų_bazės;

Tokia užklausa iš lentelės users_base parodys visas stulpelių, nurodytų kableliu po komandos SELECT, reikšmes. Taip pat visus stulpelius galite rodyti su vienu simboliu, * t.y. SELECT * FROM user_base ; - tokia užklausa parodys visus duomenis iš lentelės.

SELECT komandų struktūra:

SELECT (užklausoje turi būti rodomi kableliais atskirti stulpelių pavadinimai) FROM (lentelės pavadinimas duomenų bazėje)
yra paprasčiausias prašymas. Duomenų ištraukimo patogumui yra papildomų komandų (žr. toliau „Funkcijos“)

DML komandos:

Vertes galima įdėti ir pašalinti iš laukų su trimis DML (Data Manipulation Language) komandomis:
ĮDĖTI(Įdėti)
ATNAUJINTI(atnaujinimas, modifikavimas),
IŠTRINTI(išbraukta)

INSERT komanda:

INSERT INTO user_base (naudotojo_vardas, miestas, gimimo_diena) VALUES ('Aleksandras', 'Rostovas', '20.06.1991');

Komanda INSERT pateikiama su priešdėliu INTO (in to - in), tada skliausteliuose yra stulpelių, į kuriuos turime įterpti duomenis, pavadinimai, tada ateina komanda VALUES (vertės), o skliausteliuose yra reikšmės. (būtina laikytis reikšmių eilės su stulpeliais , reikšmės turi būti tokia pat tvarka kaip ir jūsų nurodyti stulpeliai).

UPDATE komanda:

UPDATE users_base SET user_name = 'Aleksas';

Komanda UPDATE atnaujina reikšmes lentelėje. Pirmiausia pateikiama pati komanda UPDATE, tada lentelės pavadinimas, po komandos SET (set), tada stulpelio pavadinimas ir jo reikšmė kabutėse (kabutės dedamos, jei reikšmė turi eilutės formatą, jei ji yra skaitinė reikšmė ir stulpelis yra nesusietas su vchar duomenų tipu ir kitais eilučių tipais, kabutės yra beprasmės.)

DELETE komanda:

DELETE FROM user_base WHERE user_name = 'Vasilijus';

Komanda DELETE ištrina visą eilutę, nustato eilutę pagal WHERE kriterijų (Where). Tokiu atveju ši užklausa pašalintų visas eilutes, kuriose stulpelio user_name reikšmė buvo Vasilijus. Apie KUR kriterijus ir kitus pakalbėsime kiek vėliau.

Kriterijai, funkcijos, sąlygos ir kt. kuri mums padeda SQL:

Komandos SELECT ir kitų DML komandų WHERE sąlyga, leidžianti nustatyti predikatus, kurių sąlyga gali būti teisinga arba klaidinga bet kuriai lentelės eilutei. Komanda iš lentelės ištraukia tik tas eilutes, kurioms toks teiginys yra teisingas.
Pavyzdys:
SELECT id, miestas, gimimo_data FROM user_base WHERE vartotojo_vardas = 'Aleksas';- tokia užklausa parodys tik tas eilutes, kurios atitiks WHERE sąlygą, ty visas eilutes, kuriose stulpelis user_name turi reikšmę Alex.

ORDER BY – pasirinktų eilučių rūšiavimo sąlyga. Turi 2 ASC ir DESC kriterijus. ASC (rūšiuoti nuo A iki Z arba nuo 0 iki 9)

DESC (priešingai ASC).
Pavyzdys:
PASIRINKITE ID, miestą, gimimo_dieną FROM vartotojų_bazės ORDER BY vartotojo_vardas ASC; - tokia užklausa parodys reikšmes, surūšiuotas pagal vartotojo_vardo stulpelį nuo A iki Z (A-Z; 0-9)

Ši sąlyga taip pat gali būti naudojama kartu su WHERE sąlyga.
Pavyzdys:
SELECT id, miestas, gimimo_diena FROM vartotojų_bazės WHERE vartotojo_vardas = 'Aleksas' ORDER BY id ASC;

DISTINCT (Distinct) yra argumentas, suteikiantis galimybę pašalinti pasikartojančias reikšmes iš SELECT sąlygos. Tie. jei stulpelyje turite pasikartojančias reikšmes, tarkime, vartotojo_vardas, tada DISTINCT parodys tik vieną jums, pavyzdžiui, duomenų bazėje turite 2 žmones vardu Aleksejus, tada užklausoje naudojant funkciją DISTINCT bus rodoma tik 1 reikšmė, kuri pirmiausia susiduria...
Pavyzdys:
PASIRINKITE DISTINCT vartotojo vardą NUO vartotojų_bazės;- tokia užklausa stulpelyje user_name parodys visų įrašų reikšmes, tačiau jos nepasikartos, t.y. jei turėjote begalinį pasikartojančių verčių skaičių, jos nebus rodomos...

IR – kaip argumentus priima du Būlio dydžius (forma A IR B) ir įvertina juos su tiesa, kad pamatytų, ar jie abu yra teisingi.
Pavyzdys:
SELECT * FROM users_base WHERE city = 'Rostovas' AND vartotojo_vardas = 'Aleksandras';- rodo visas vertes iš lentelės, kurioje miesto pavadinimas yra vienoje eilutėje (šiuo atveju Rostovas ir vartotojo vardas Aleksandras.

ARBA – kaip argumentus paima du Būlio dydžius (forma A ARBA B) ir įvertina, ar vienas iš jų teisingas.

SELECT * FROM users_base WHERE city = 'Rostovas' OR user_name = 'Aleksandras';- rodo visas vertes iš lentelės, kurioje eilutėje yra Rostovo miesto pavadinimas arba vartotojo vardas Aleksandras.

NOT – kaip argumentus priima vieną Būlio reikšmę (formoje NOT A) ir pakeičia jo reikšmę iš false į true arba true į false.
SELECT * FROM users_base WHERE city = 'Rostovas' OR NOT user_name = 'Aleksandras';- parodys visas reikšmes iš lentelės, kurioje vienoje eilutėje yra Rostovo miesto pavadinimas, arba vartotojo vardas nebus tiksliai Aleksandras.

IN - apibrėžia reikšmių rinkinį, į kurį gali būti įtraukta arba neįtraukta nurodyta vertė.
SELECT * FROM users_base WHERE city IN („Vladivostokas“, „Rostovas“);- tokia užklausa parodys visas lentelės reikšmes, kuriose miesto stulpelyje yra nurodytų miestų pavadinimai

Tarp - panašus į IN operatorių. Skirtingai nei nurodant skaičiais iš rinkinio, kaip tai daro IN, BETWEEN apibrėžia diapazoną, kurio reikšmės turi mažėti, kad predikatas būtų teisingas.
SELECT * FROM user_base WHERE id BETWEEN 1 IR 10;- rodo visas vertes iš lentelės, kurios ID stulpelyje bus nuo 1 iki 10

COUNT – sukuria užklausoje pasirinktų laukų eilučių numerius arba ne NULL vertes.
PASIRINKITE COUNT (*) IŠ vartotojų_bazės ;- rodo eilučių skaičių pateiktoje lentelėje.
PASIRINKITE SKAIČIUS (ATSKIRTAS vartotojo_vardas) IŠ vartotojų_bazės ;- bus rodomas eilučių su vartotojo vardais skaičius (nepasikartojantis)

SUM – sukuria aritmetinę visų pasirinktų reikšmių sumą duotame lauke.
PASIRINKTI SUMĄ (id) IŠ vartotojų_bazės ;- rodoma visų ID stulpelio eilučių verčių suma.

AVG - apskaičiuoja visas pasirinktas nurodyto lauko vertes.
PASIRINKTI AVG (id) IŠ vartotojų_bazės ;- išves visų pasirinktų ID stulpelio verčių vidurkį

MAX – sukuria didžiausią iš visų pasirinktų verčių duotame lauke.

MIN – sukuria mažiausią iš visų pasirinktų tam tikro lauko verčių.

Lentelės kūrimas:

CREATE TABLE user_base(id sveikasis skaičius, vartotojo_vardo tekstas, miesto tekstas, gimimo_data datatime);- įvykdžius tokią komandą bus sukurta lentelė, pagal kurią pateikiau pavyzdžius... Čia viskas paprasta, rašome komandą CREATE TABLE, tada norimos sukurti lentelės pavadinimas, tada skliausteliuose, atskirti kableliais, stulpelių pavadinimai ir jų duomenų tipas. Tai yra standartinis būdas sukurti lentelę SQL. Dabar pateiksiu lentelių kūrimo SQL Server 2005 pavyzdį:

ĮJUNGTI ANSI_NULLS
EIK
NUSTATYTI QUOTED_IDENTIFIER
EIK
JEI NĖRA (SELECT * FROM sys.objects WHERE objekto_id = OBJECT_ID(N"") IR įveskite (N"U"))
PRADĖTI
KURTI LENTELĘ .(

NE NULL,
NE NULL,
NE NULL,
PAGRINDINIS RAKTAS sugrupuotas
ASC


GALAS
EIK
ĮJUNGTI ANSI_NULLS
EIK
NUSTATYTI QUOTED_IDENTIFIER
EIK
JEI NĖRA (SELECT * FROM sys.objects WHERE objekto_id = OBJECT_ID(N"") IR įveskite (N"U"))
PRADĖTI
KURTI LENTELĘ .(
TAPATYBĖ (1, 1) NĖRA NULIS,
NULL,
NULL,
PAGRINDINIS RAKTAS sugrupuotas
ASC
)ĮJUNGTA (IGNORE_DUP_KEY=OFF).
) ĮJUNGTAS TEXTIMAGE_ON
GALAS
EIK
ĮJUNGTI ANSI_NULLS
EIK
NUSTATYTI QUOTED_IDENTIFIER
EIK
JEI NĖRA (SELECT * FROM sys.objects WHERE objekto_id = OBJECT_ID(N"") IR įveskite (N"U"))
PRADĖTI
KURTI LENTELĘ .(
TAPATYBĖ (1, 1) NĖRA NULIS,
NULL,
NULL,
PAGRINDINIS RAKTAS sugrupuotas
ASC
)ĮJUNGTA (IGNORE_DUP_KEY=OFF).
) ĮJUNGTA
GALAS

Sintaksė SQL Server 2005 yra kita tema, tik norėjau parodyti, kad aprašiau SQL programavimo pagrindus, aukštumų galite pasiekti patys žinodami pagrindus.

Jei turite klausimų šia tema, rašykite man el.