SQL užklausų kūrimas prieigos bendravardžiuose. SQL diegimas ACCESS Microsoft Access palyginimas

Access DBVS naudoja dviejų tipų užklausas: QBE – užklausa pagal pavyzdį ir SQL(Structured Query Language) – struktūrinės užklausos kalba. Užklausos pavyzdys sugeneruojamas užpildžius specialią užklausos formą lange „Užklausų kūrimo priemonė“. SQL – užklausas kuria programuotojai iš SQL sekos – nurodymus. SQL paprastai generuoja programuotojai naudodami užklausos formą, kurią atidaro komanda „Query Builder“ skirtuke „Kūrimas“, o meniu Rodinys pasirenkamas „SQL režimas“. SQL kalba skirta dirbti su duomenimis, t.y. Duomenims reliacinėse duomenų bazėse kurti, keisti ir valdyti.

Reikėtų pažymėti, kad yra keletas SQL užklausų režimų (ANSI-89 SQL ir ANSI-92 SQL režimo užklausos), kurie atitinka ANSI-89 SQL ir ANSI-92 SQL standartus.

Instrukcijose yra duomenų rinkinio SQL aprašymas. SQL teiginiai susideda iš sakinių (SELECT, FROM, WHERE ir kt.). Pasiūlymai SQL kalba susideda iš terminų (operatorių arba komandų, identifikatorių, konstantų ir kt.). Teiginys prasideda sakiniu (viena iš komandų SELECT, CREATE, INSERT, UPDATE, DELETE ir kt.) ir baigiasi kabliataškiu. Pagrindiniai SQL sakiniai: SELECT, FROM ir WHERE.

Pavyzdžiui, SQL sakinys:
SELECT Students.StudentCode
IŠ Studentų;
susideda iš sakinio „SELECT Students.StudentCode“ ir „FROM Students“.

SELECT sąlygoje yra operatorius PASIRINKTI ir identifikatorius„Studentai.Studento kodas“. Čia prieš pilną lauko „Studento kodas“ pavadinimą rašomas duomenų bazės lentelės „Studentai“ pavadinimas. PASIRINKTI – nurodo lauką, kuriame yra reikalingi duomenys. FROM sąlygą sudaro FROM sąlyga ir identifikatorius „Students“. FROM – apibrėžia lentelę, kurioje yra SELECT sąlygoje nurodyti laukai.

Reikėtų pažymėti, kad kurdami užklausą SQL, turite atsižvelgti į jos sintaksę. Nepaisant to, kad SQL kalbos sintaksė yra pagrįsta anglų kalbos sintaksė, SQL kalbos versijų sintaksė skirtingose ​​DBVS gali skirtis.

Yra keletas užklausų tipų: įrašų pasirinkimas, atnaujinimas, pridėjimas ir trynimas, kryžminės užklausos, lentelių kūrimas ir trynimas, lentelių sujungimas ir kt. Dažniausiai yra prašymo pavyzdys. Pasirinkimo užklausos naudojamos norint pasirinkti vartotojui reikalingą informaciją, esančią lentelėse. Jie sukurti tik susijusioms lentelėms.

Norėdami peržiūrėti SQL užklausų užklausas Access 2003 arba 2007 DBVS, turite vykdyti komandą SQL View/Mode aktyviame lange pavyzdinei užklausai kurti (1 pav.).


Ryžiai. 1.

Gaukime SQL sakinį (SELECT), kad paimtų duomenis iš Access 2003 duomenų bazės pagal mokinio veiklos kriterijų „Grade=5“ (2 pav.).



Ryžiai. 2.

Kaip matyti iš SELECT sakinio (1 pav.), jis aprašo duomenų rinkinį SQL kalba: SELECT – apibrėžia laukų pavadinimus, prieš kuriuos pateikiami lentelių, kuriose yra duomenys, pavadinimai; FROM - apibrėžia lenteles ir jų ryšius per lentelių raktinius laukus (tam naudojama konstrukcija INNER JOIN ... ON), kurių pagrindu parenkami duomenys; WHREME – apibrėžia laukų pasirinkimo sąlygas; ORDER BY – nustato, kaip rūšiuoti didėjančia tvarka (pagal numatytuosius nustatymus vykdoma didėjimo tvarka) lentelės „Studentai“ lauko „Pavardė“ reikšmes.

Kaip matyti iš duomenų gavimo iš duomenų bazės instrukcijų, SQL kalba aprašo, ką reikia gauti iš duomenų bazės, o vykdymas patikėtas DBVS, nes SQL kalba neturi savo priemonių programos vykdymui valdyti.

Microsoft Access SQL ir ANSI SQL z palyginimas. „Microsoft Access SQL“ pirmiausia atitinka ANSI-89 (1 lygio) z standartą. Kai kurios ANSI SQL funkcijos nenaudojamos Microsoft Access SQL z. „Microsoft Access SQL“ naudoja rezervuotus žodžius ir funkcijas, kurių nepalaiko ANSI SQL

Išplėstinė z sintaksė. „Access 2000“ (MS Jet 4.0) apima plėtinius, kurie priartina kalbą prie ANSI SQL-92 standarto – režimas pasiekiamas tik naudojant „MS OLE DB Provider for Jet“

Between konstrukcijai taikomos skirtingos taisyklės. . . Ir kurios sintaksė yra tokia: reiškinys 1 Tarp 1 reikšmės ir 2 reikšmės Microsoft Access SQL reikšmė 1 gali būti didesnė už reikšmę 2; ANSI SQL vertė 1 turi būti mažesnė arba lygi 2 vertei.

pakaitos simboliai z Microsoft Access SQL palaiko ir ANSI SQL pakaitos simbolius, kai naudojamas operatorius Like Šie simboliai naudojami užklausose ir išraiškose, siekiant įtraukti visus įrašus, failų pavadinimus ar kitus elementus, kuriuose yra tam tikrų simbolių arba kurie atitinka tam tikrą šabloną.) „Microsoft Access“. Negalite vienu metu naudoti ANSI pakaitos simbolių ir „Microsoft Access“. Galima naudoti tik vieną simbolių rinkinį ir jų negalima maišyti.

ANSI SQL kalbos funkcijos nepalaikomos Microsoft Access SQL z. TRANSFORM sakinys palaiko kryžmines užklausas z (Kryžminė užklausa. Užklausa, kuri apskaičiuoja sumą, vidurkį, reikšmių skaičių arba kitus statistinius skaičiavimus ir sugrupuoja rezultatus lentelėje dviejose duomenų rinkiniuose, iš kurių vienas apibrėžia stulpelį antraštes, o kita – antraščių eilutes.).

ANSI SQL kalbos funkcijos nepalaikomos Microsoft Access SQL z. Norėdami apriboti užklausoje pateikiamų eilučių skaičių, naudokite sąlygą LIMIT TO nn ROWS. z. Pateikiamos papildomos SQL statistikos funkcijos, tokios kaip Šv. Dev ir Var. P

ANSI SQL kalbos funkcijos nepalaikomos Microsoft Access SQL z. Apibrėžti užklausos parametrus (Užklausa su parametrais. Užklausa, kurioje vartotojas interaktyviai įveda vieną ar daugiau reikšmių, kurios apibrėžia pasirinkimo sąlygas. Užklausa su parametrais nėra atskiras užklausos tipas; tai yra pasirinktų užklausų funkcinis plėtinys.) naudojama deklaracija PARAMETRIAI.

Komandos sintaksė SELECT [predikatas] ( * | lentelė. * | [lentelė. ]laukas_1 [, [lentelė. ]laukas_2 [, . . ]]) FROM išraiška [, . . . ]

SELECT teiginio argumentai predikatas Vienas iš šių pasirinkimo predikatų: ALL, DISTINCTROW arba TOP. Predikatai naudojami grąžinamų įrašų skaičiui apriboti. Jei jų trūksta, numatytasis predikatas yra ALL.

Predikatai ALL, DISTINCTROW, TOP z. PASIRINKTI ]] IŠ lentelės z. ALL – parenkami visi įrašai, atitinkantys SQL sakinyje nurodytas sąlygas.

DISTINCT predikatas – neįtraukia įrašų, kurių pasirinktuose laukuose yra pasikartojančių reikšmių. Gautas duomenų rinkinys nėra atnaujinamas

DISTINCTROW predikatas – praleidžiami duomenys, pagrįsti visais pasikartojančiais įrašais, o ne atskirais pasikartojančiais laukais. Predikatas DISTINCTROW ignoruojamas, jei užklausoje yra tik viena lentelė arba visi visų lentelių laukai.

DISTINCTROW z. PASIRINKITE DISTINCTROW darbuotoją. pavadinimas, tvarkaraštis. prekės_kodas z. IŠ darbuotojo VIDINIO JOIN grafiko z. ON darbuotojas. darbuotojo_kodas = grafikas. darbuotojo_kodas;

ATSKIRTI PASIRINKITE ATSKIRTINĄ DARBUOTOJĄ. Visas vardas, tvarkaraštis. item_code FROM EMPLOYEE INNER JOIN tvarkaraštis ON EMPLOYEE. Darbuotojo_id = grafikas. darbuotojo_kodas;

Jei naudojate lentelių kalbą kaip užklausų kūrimo priemonę SQL, tada norėdami įtraukti DISTINCT į užklausą, užklausos ypatybei "unikalios reikšmės" turite pasirinkti reikšmę "taip", o norėdami įtraukti DISTINCTROW į užklausą, turite pasirinkti " taip“ užklausos ypatybei „unikalūs įrašai“.

Predikatas TOP z. TOP n – pateikia nurodytą skaičių įrašų, kurie yra diapazono, aprašyto sąlyga ORDER BY, pradžioje arba pabaigoje.

Pavyzdys. Pasirinkite 5 daugiausiai skyrių PASIRINKITE TOP 5 skyrių. [Department_name_full], Skaičius(darbuotojų. Darbuotojų_kodas) AS [Darbuotojų skaičius] IŠ skyriaus VIDINIŲ PRISIJUNGTI darbuotojų PRIE skyriaus. Skyriaus_kodas = darbuotojai. Skyriaus_kodas GROUP BY skyrius. [Department_name_full] ORDER BY Count(darbuotojai. Darbuotojo_kodas) DESC;

SU Savininko prieigos PARINKTIS Naudojama kelių vartotojų aplinkoje su saugia darbo grupe, kad vartotojui, vykdančiam užklausą, būtų suteiktos užklausos savininko leidimai.

SELECT teiginio laukas_1, laukas_2 argumentai yra laukų, iš kurių reikia pasirinkti duomenis, pavadinimai. Jei įtrauksite kelis laukus, jie bus nuskaityti nurodyta tvarka.

SELECT teiginio Alias_1, Alias_2 argumentai yra pavadinimai, kurie taps stulpelių antraštėmis vietoj pradinių lentelės stulpelių pavadinimų.

Slapyvardžio naudojimo pavyzdžiai, norint nurodyti apskaičiuoto lauko pavadinimą 1 pavyzdys PASIRINKITE darbuotoją. Visas vardas, [atlyginimas]*0. 5 AS apdovanojimas FROM; 2 pavyzdys SELECT Avg(darbuotojo atlyginimas) AS Vidutinis_atlyginimas NUO darbuotojo;

SELECT teiginio argumentai Išorinis. Bazė. Duomenys yra duomenų bazės, kurioje yra išraiškos argumento nurodytos lentelės, pavadinimas, jei jų nėra dabartinėje duomenų bazėje.

Išlyga FROM SELECT yra sąrašas. Laukai FROM išraiška z Išraiška – išraiška, apibrėžianti vieną ar kelias lenteles, iš kurių gaunami duomenys. Ši išraiška gali būti vienos lentelės pavadinimas, išsaugotos užklausos pavadinimas arba INNER JOIN, LEFT JOIN arba RIGHT JOIN operacijos rezultatas.

Bendras kelių (3) lentelių apdorojimas SELECT darbuotojas. Pilnas vardas, tema. [trumpasis dalyko pavadinimas] IŠ darbuotojo VIDINIO JOIN (dalykas INNER JOIN [objektų turėjimas] ON dalyko. [Dalyko kodas] = [objektų turėjimas]. [disciplinos kodas]) ON darbuotojo. Kodas = [daikto turėjimas]. [darbuotojo kodas];

Tarp dizaino. . . Ir 1 išraiška TARP 2 išraiškos IR 3 išraiškos z. „Microsoft Access SQL“ 2 išraiška gali būti didesnė už 3 išraišką, tačiau ANSI SQL – ne.

Panašaus predikato šablono simboliai Įvairūs šablono simboliai naudojami su Patinka predikatu. ANSI SQL šablono simbolis MS Access SQL z Bet koks simbolis? _ (pabraukimas) z Bet kokia bet kokių simbolių grupė * % z Trūksta vieno simbolių sąraše [character_list] įtraukto simbolio z Trūksta vieno simbolio, neįtraukto į simbolių sąrašą [!character_list]

z. Paskutinės dvi funkcijos skirtos tik „Access 2000 z“. Programoje Access 2000 ANSI SQL-92 režimas leidžia naudoti ANSI z pakaitos simbolius. Negalite maišyti simbolių vienoje užklausoje

GROUP BY z sąlyga. PASIRINKTI sąrašą. Laukai FROM lentelės WHERE sąlyga. Pasirinkimas z grupuojamas. Laukai – laukų pavadinimai (iki 10), kurie naudojami įrašams grupuoti. Argumento laukų pavadinimų tvarka yra grupuojama. Laukai nustato kiekvieno iš šių laukų grupavimo lygį.

GROUP BY sąlyga z Naudokite WHERE sąlygą, kad neįtrauktumėte įrašų į grupavimą, o išlygą HAVING, kad po grupavimo įrašams pritaikytumėte filtrą. z Naudojant sąlygą GROUP BY, visi SELECT sakinio laukų sąrašo laukai turi būti įtraukti į GROUP BY sąlygą arba naudojami kaip SQL agregavimo funkcijos argumentai.

Pavyzdys. Skyriai, kuriuose dirba daugiau nei 5 darbuotojai. PASIRINKITE darbuotoją. [Skyriaus kodas], Skaičius(darbuotojas. Pilnas vardas) AS [Darbuotojų skaičius] IŠ darbuotojų GROUP PAGAL darbuotoją. [Departamento kodas] HAVING (((Skaičius(darbuotojas. Pilnas vardas))>5));

Užduotis Yra lentelės „firmos“, „darbuotojai“ ir „sertifikatai“. Būtina nustatyti, kiek kiekvienoje įmonėje yra atestuotų darbuotojų (vienas darbuotojas gali būti atestuotas pagal kelis PP).

SELECT teiginys. . . INTO Sintaksė z. Sukuria užklausą lentelės kūrimui. PASIRINKITE lauką_1[, lauką_2[, . . . ]] Į NAUJĄ. Lentelė IŠ šaltinio

Sąjungos užklausa (1 pavyzdys) SELECT Pavadinimas, Miestas FROM Tiekėjai UNION SELECT Pavadinimas, Miestas FROM Klientai UŽSAKYTI PAGAL miestą;

Sąjungos prašymas (2 pavyzdys) PASIRINKTI Pavadinimą, Miestą IŠ Tiekėjų SĄJUNGOS VISUS PASIRINKTI Pavadinimą, miestą IŠ klientų; - UNION ALL užtikrina, kad būtų grąžinti visi įrašai, įskaitant dublikatus

Antrinės užklausos kūrimas naudojant QBE užklausų kūrimo priemonę Jei lauko sąlygoms apibrėžti naudojate antrinę užklausą, to lauko stulpelio eilutės langelyje Pasirinkimo sąlyga įveskite teiginį SELECT. SELECT sakinys turi būti įterptas skliausteliuose.

DELETE teiginys z Ištrynimo užklausa ištrina visus įrašus, o ne tik nurodytų laukų turinį. Norėdami ištrinti konkretaus lauko duomenis, sukurkite įrašo atnaujinimo užklausą, kuri esamas reikšmes pakeičia Null reikšmėmis z Užklausa ištrinti be nurodytų paieškos sąlygų ištrins visus įrašus iš lentelės. Skirtingai nuo komandos DROP, lentelės struktūra ir visos savybės išsaugomos

z. Jei nurodyta „pakopinis trynimas“, visi susiję z įrašai bus ištrinti. Ištrintų įrašų atkurti negalima

Lentelės kūrimas. Komandos CREATE TABLE sintaksė (1 lauko tipas [(dydis)] [index1] [, 2 lauko tipas [(dydis)] [indeksas2] [, . . ]] [, CONSTRAINT index_multiple_fields [, . . ]])

Lentelės kūrimas. „Access“ komandų sintaksė gerokai skiriasi nuo standartinės: ne visos SQL-92 standarto funkcijos yra įdiegtos z įtrauktos naujos konstrukcijos z skiriasi sintaksė

LAIKINA LAIKINA lentelė pasiekiama tik sesijoje, kurioje buvo sukurta lentelė. Šios sesijos pabaigoje jis automatiškai ištrinamas. Laikinąsias lenteles gali bendrinti keli vartotojai.

SU KOMPRESIJA z. Atributas WITH COMPRESSION leidžiamas tik duomenų tipams CHARACTER ir MEMO. z. Kompensuoja perėjimo prie Unicode simbolių formato poveikį

Lentelės struktūros koregavimas ALTER TABLE lentelė (ADD (Stulpelio laukas [(dydis))] | ALTER COLUMN lauko tipas [(dydis)] | CONSTRAINT field_set_index) | DROP (COLUMN laukas I CONSTRAINT index_name) )

z Lauko dydis simboliais nustatomas tik laukams, kurių duomenų tipai yra TEKSTAS ir DVEJETAI z ADD COLUMN – pridėti naują lauką į lentelę z ALTER COLUMN – pakeisti esamo lauko duomenų tipą z DROP COLUMN – ištrinti lauką . z ADD CONSTRAINT – pridėti indeksą z DROP CONSTRAINT – pašalinti indeksą z Neįmanoma pridėti arba pašalinti kelių laukų ar indeksų vienu metu

Indekso kūrimas kuriant lentelę CREATE TABLE lentelę (1 lauko tipas [(dydis)] [, 2 lauko tipas [(dydis)] [, …]] [, CONSTRAINT multifieldindex [, …]])

Indekso kūrimas. Komandos sintaksė CREATE [ UNIQUE ] INDEX indeksas ON lentelėje (laukas [, laukas , . . . ])

Indekso kūrimas. Komandos sintaksė CREATE [ UNIQUE ] INDEX indeksas ON lentelėje (laukas [, laukas , . . . ])

z indekso sukūrimas. DISALLOW NULL - išjungia Null reikšmių buvimą naujų z įrašų indeksuotuose laukuose. IGNORE NULL neleidžia į indeksą įtraukti įrašus, kurių indeksuotų z laukų reikšmės Null. PIRMINIS – priskirkite raktui indeksuotus laukus

Indeksų kūrimo pavyzdžiai 1 pavyzdys. KURTI RODYKLĄ Nauja. Index ON Darbuotojai (Namai. Telefonas, pratęsimas); 2 pavyzdys. KURTI UNIKALŲ RODYKLĄ Cust. ID ON Klientai (Customer. ID) WITH DISALLOW NULL;

ALTER TABLE naudojimas norint sukurti rodyklės ALTER TABLE lentelę (PRIDĖTI (Stulpelio tipas[(dydis)] | ALTER COLUMN lauko tipas [(dydis)] | CONSTRAINT field_set_index) | DROP (Stulpelio laukas I CONSTRAINT indekso_pavadinimas) )

Vaizdų kūrimas. Komandos sintaksė yra CREATE VIEW view [(laukas_1[, laukas_2[, . . . ]])] AS instrukcija. Pasirinkite

Lentelės struktūros keitimas ALTER TABLE lentelę (ADD (Stulpelio lauko tipas[(dydis)] | ALTER COLUMN lauko tipas [(dydis)] | CONSTRAINT sudėtinis. Indeksas) | DROP (Stulpelio I CONSTRAINT indekso pavadinimas) )

DROP objektų pašalinimas (LENTELĖ | INDEKSO rodyklė ON lentelėje | PROCEDŪROS procedūra | PERŽIŪROS rodinys)

ALTER USER arba DUOMENŲ BAZĖ z. PAKEISTI DUOMENŲ BAZĖS SLAPTAŽODĮ newpassword oldpassword z. ALTER USER user PASSWORD newpassword oldpassword

Sintaksė GRANT (privilegija[, privilegija, …]) ĮJUNGTA (LENTELĖLELĖ | OBJEKTO objektas| KONTEINERIS konteineris ) TO (prieigos pavadinimas[, prieigos pavadinimas, …])

Privilegija z PASIRINKTI z IŠTRINTI z Įterpti z ATNAUJINTI z ATŠAUKTI z PASIRINKTI SAUGUMAS z ATNAUJINTI SAUGUMO z DB SLAPTAŽODĮ z ATNAUJINIMO IDENTYBĖS z KURTI z PASIRINKTI SCHEMĄ z NAUJINININĮ

z. Objektas – gali nurodyti bet kokį objektą, kuris nėra lentelė, pvz., užklausą, z rodinį. Autorizacijos pavadinimas – vartotojo arba grupės pavadinimas

PRIDĖTI VARTOTOJO vartotoją[, vartotojas, …] Į grupę Prideda esamą (-us) vartotoją (-us) prie esamos grupės. Vartotojai turės visas grupei priskirtas teises

PALEISTI VARTOTOJĄ arba GRUPĘ z. DROP USER user[, user, …] DROP USER pašalina vartotoją iš grupės, bet neištrina vartotojo z. DROP GROUP group[, group, …] DROP GROUP ištrina grupę, bet nedaro įtakos grupės vartotojams; jie tiesiog nustoja būti grupės nariais

REVOKE – nurodytų apribojimų atšaukimas REVOKE (privilegija[, privilegija, ...]) ON (LENTELĖ | OBJEKTO objektas| CONTAINTER konteineris) FROM (autorizacijos pavadinimas[, prieigos pavadinimas, ...])

Papildomos MS Access SQL z funkcijos. TRANSFORM sakinys, skirtas kryžminėms užklausoms kurti z Papildomos grupės funkcijos, pavyzdžiui, St. Dev ir Var. P z Aprašymas PARAMETRIAI, skirtas užklausoms su parametrais kurti

SELECT teiginys. . . Į PASIRINKTI 1 laukas[, laukas 2[, . . . ]] Į naują_lentelę IŠ šaltinio


Microsoft Access SQL ir ANSI SQL palyginimas Microsoft Access SQL visų pirma yra ANSI-89 (1 lygis) kai kurios ANSI SQL funkcijos nenaudojamos Microsoft Access SQL Microsoft Access SQL naudoja rezervuotus žodžius ir funkcijas, kurių nepalaiko ANSI SQL In Access 2000 (MS Jet) 4.0) buvo pristatyti plėtiniai, kurie priartina kalbą prie ANSI SQL-92 standarto - režimas pasiekiamas tik naudojant MS OLE DB Provider for Jet


SELECT komandos sintaksė (Microsoft Access) SELECT [ predikatas ] ( * | lentelė.* | [ lentelė.] laukas_1 [, [ lentelė.] laukas_2 [,...]]) FROM išraiška [,...] Sąrašas FROM SELECT sąrašas Laukai FROM išraiška Išraiška yra išraiška, apibrėžianti vieną ar daugiau lentelių, iš kurių gaunami duomenys. Ši išraiška gali būti vienos lentelės pavadinimas, išsaugotos užklausos pavadinimas arba INNER JOIN, LEFT JOIN arba RIGHT JOIN operacijos rezultatas. VIDINIS PRISIJUNGIMAS, KAIRIS PRISIJUNGTI DEŠINIS.


SELECT teiginio argumentai Predikatas (ALL, DISTINCT, DISTINCTROW arba TOP) yra viena iš pasirinkimo sąlygų. Predikatai naudojami grąžinamų įrašų skaičiui apriboti. Jei jų trūksta, numatytasis predikatas yra ALL (pasirenka visus įrašus, atitinkančius SQL sakinyje nurodytas sąlygas – neįtraukiami įrašai, kuriuose yra pasikartojančių reikšmių pasirinktuose laukuose). DISTINCTROW – praleidžiami duomenys, pagrįsti visais pasikartojančiais įrašais, o ne atskirais pasikartojančiais laukais. Predikatas DISTINCTROW ignoruojamas, jei užklausoje yra tik viena lentelė arba visi visų lentelių laukai. TOP n – pateikia nurodytą skaičių įrašų, kurie yra diapazono, aprašyto naudojant sąlygą ORDER BY, pradžioje arba pabaigoje. PASIRINKTI ]] IŠ 5 gausiausių skyrių lentelės: PASIRINKITE 5 TOP 5 darbuotojus.[Skyriaus kodas], Skaičius (darbuotojas.visas vardas) AS_darbuotojų_skaičius FROM darbuotojų GRUPĖ PAGAL darbuotoją.[skyriaus kodas] UŽSAKYTI PAGAL SKAIČIUS (darbuotojo pilnas vardas) DESC;


SELECT teiginio argumentai Lentelė – lentelės, iš kurios reikia pasirinkti įrašus, pavadinimas. SU OWNERACCESS OPTION – naudojama kelių vartotojų aplinkoje su saugia darbo grupe, siekiant suteikti vartotojui, dirbančiam su užklausa, leidimus, atitinkančius užklausos savininko leidimus. laukas_1, laukas_2 - laukų, iš kurių reikia pasirinkti duomenis, pavadinimai. Jei įtrauksite kelis laukus, jie bus nuskaityti nurodyta tvarka. Alias_1, Alias_2 – pavadinimai, kurie taps stulpelių antraštėmis vietoj pradinių lentelės stulpelių pavadinimų. Išraiška – vienos ar kelių lentelių, kuriose yra pasirenkami duomenys, pavadinimai. PASIRINKITE darbuotoją.pilnas vardas, [atlyginimas]*0,5 AS Premija NUO darbuotojo; SELECT Avg(darbuotojas.alga) AS Vidutinis_atlyginimas NUO darbuotojo;


Bendras kelių lentelių apdorojimas PASIRINKITE darbuotoją.Vardas, tema.[trumpasis dalyko pavadinimas] FROM darbuotojo VIDINIS JOIN (subjektas INNER JOIN [elementų nuosavybė] ON tema.[Dalyko kodas] = [elementų nuosavybė].[disciplinos kodas] ) ON darbuotojas.Kodas = [prekės nuosavybė].[darbuotojo kodas];




Tarp...Ir išraiška 1 BETWEEN 2 išraiška IR 3 išraiška (Microsoft Access SQL 2 išraiška gali būti didesnė nei 3 išraiška, bet ne ANSI SQL). PASIRINKITE darbuotoją.pilnas vardas, darbuotojas.atlyginimas IŠ darbuotojo WHERE (((darbuotojas.alga) Tarp 1000 Ir 2000)); Užklausa: PASIRINKITE darbuotoją.pilnas vardas, darbuotojas.atlyginimas FROM darbuotojas WHERE (((darbuotojas.alga) Tarp 2000 Ir 1000)); negeneruoja klaidos ir pateikia tą patį atsakymą SELECT darbuotojas.pilnas vardas, darbuotojas.atlyginimas IŠ darbuotojo KUR (((darbuotojas.alga) 15000)); PASIRINKITE darbuotoją.pilnas vardas, darbuotojas.atlyginimas FROM darbuotojas WHERE (((darbuotojas.alga) Ne tarp 1000 Ir 2000));


Rašto simboliai Įvairūs rašto simboliai naudojami su Patinka predikatu. MS Access SQL ANSI SQL modelio simbolis vienas simbolis? _ (pabraukimas) simbolių grupė * % vienas simbolis įtrauktas į simbolių sąrašą [simbolių_sąrašas] trūksta vieno simbolio, neįtraukto į simbolių_sąrašą [! character_list] trūksta Paskutinės dvi parinktys yra Access 2000 ANSI SQL-92 režimu leidžia naudoti ANSI pakaitos simbolius. Negalite maišyti simbolių vienoje užklausoje SELECT darbuotojas.pilnas vardas FROM darbuotojo WHERE (((darbuotojas.visas vardas) Kaip "D*"));


Sąlyga GROUP BY SELECT sąrašas laukų FROM lentelės WHERE Pasirinkimo sąlyga, kai sugrupuota Laukai yra laukų (iki 10) pavadinimai, kurie naudojami įrašams grupuoti. Laukų pavadinimų tvarka argumente Sugrupuoti laukai nustato kiekvieno tų laukų grupavimo lygį. Naudokite WHERE sąlygą, kad neįtrauktumėte įrašų į grupavimą, o sąlygą HAVING, kad po grupavimo įrašams pritaikytumėte filtrą. HAVING Naudojant sąlygą GROUP BY, visi SELECT sakinio laukų sąrašo laukai turi būti įtraukti į GROUP BY sąlygą arba naudojami kaip SQL agregavimo funkcijos argumentai. Skyriai, kuriuose dirba daugiau nei 5 darbuotojai: PASIRINKTI bendradarbius[Skyriaus kodas], Skaičius (bendradarbių pilnas vardas) AS [Darbuotojų skaičius] FROM bendradarbių GROUP BY bendradarbiai[departamento kodas] HAVING (((Count( bendradarbių pilnas vardas))>5 )); 5));">




Įdėta užklausa. Predikatas egzistuoja. SELECT darbuotojo įmonė, Count(darbuotojo darbuotojas) AS numeris_pažymos_darbuotojas FROM darbuotojas WHERE (((Egzistuoja (SELECT DISTINCT darbuotojas įmonė, darbuotojo darbuotojas FROM darbuotojas INNER JOIN pavyzdys ON darbuotojas darbuotojas = darbuotojo darbuotojas))Klaidinga)) GROUP BY bendradarbių įmonė; Netiesa)) GROUP BY bendrai valdoma įmonė;"> Netiesa)) GROUP BY bendrai priklausanti įmonė;"> Netiesa)) GROUP BY bendrai priklausanti įmonė;" title="Įdėta užklausa. Predikatas egzistuoja. SELECT co -priklausoma įmonė, Count(bendradarbis) AS numeris_sertifikato_bendradarbis FROM bendradarbis WHERE ((((SELECT DISTINCT bendradarbis, bendradarbis FROM bendradarbis VIDINIS JOIN egzempliorius ON bendradarbis = egzemplioriaus bendradarbis))Klaidingas)) GROUP BY bendradarbio įmonė;"> title="Įdėta užklausa. Predikatas egzistuoja. SELECT darbuotojo įmonė, Count(darbuotojo darbuotojas) AS numeris_pažymos_darbuotojas FROM darbuotojas WHERE (((Egzistuoja (SELECT DISTINCT darbuotojas įmonė, darbuotojo darbuotojas FROM darbuotojas INNER JOIN pavyzdys ON darbuotojas darbuotojas = darbuotojo darbuotojas))Klaidinga)) GROUP BY bendradarbių įmonė;"> !}








Antrinės užklausos kūrimas naudojant QBE užklausų kūrimo priemonę Jei lauko sąlygoms apibrėžti naudojate antrinę užklausą, to lauko stulpelio eilutės langelyje Pasirinkimo sąlyga įveskite teiginį SELECT. SELECT sakinys turi būti įterptas skliausteliuose.








Įrašų trynimas. SQL užklausa (sugeneruota) DELETE DISTINCTROW student.full name FROM student WHERE (((studentas.full name)="Burlak G. N."));


DELETE pareiškimas Ištrynimo užklausa ištrina visus įrašus, o ne tik nurodytų laukų turinį. Norėdami ištrinti konkretaus lauko duomenis, sukurkite įrašo atnaujinimo užklausą, kuri pakeičia esamas reikšmes Null reikšmėmis. Ištrynimo užklausa be nurodytų paieškos sąlygų ištrins visus įrašus iš lentelės. Skirtingai nuo komandos DROP, lentelės struktūra ir visos savybės išsaugomos


Įrašų trynimas. SQL užklausa Užklausa: DELETE * FROM student WHERE student.Full name="Burlak G. N."; duoda panašų rezultatą.



















35





41



SQL kalba naudojama duomenims iš duomenų bazės gauti. SQL yra programavimo kalba, labai panaši į anglų kalbą, bet skirta duomenų bazių valdymo programoms. SQL naudojamas kiekvienoje „Access“ užklausoje.

Supratimas, kaip veikia SQL, padeda kurti tikslesnes užklausas ir lengviau taisyti užklausas, kurios pateikia neteisingus rezultatus.

Tai straipsnis iš straipsnių serijos apie Access SQL kalbą. Jame aprašomi SQL naudojimo duomenims gauti pagrindai ir pateikiami SQL sintaksės pavyzdžiai.

Šiame straipsnyje

Kas yra SQL?

SQL yra programavimo kalba, skirta dirbti su faktų rinkiniais ir ryšiais tarp jų. Reliacinės duomenų bazių valdymo programos, pvz., „Microsoft Office Access“, naudoja SQL duomenų apdorojimui. Skirtingai nuo daugelio programavimo kalbų, SQL yra skaitoma ir suprantama net pradedantiesiems. Kaip ir daugelis programavimo kalbų, SQL yra tarptautinis standartas, pripažintas standartų komitetų, tokių kaip ISO ir ANSI.

Duomenų rinkiniai aprašyti SQL, kad būtų lengviau atsakyti į klausimus. Kai naudojate SQL, turite naudoti teisingą sintaksę. Sintaksė yra taisyklių rinkinys, leidžiantis teisingai derinti kalbos elementus. SQL sintaksė yra pagrįsta anglų kalbos sintaksė ir daugybe elementų dalijasi su Visual Basic for Applications (VBA) sintaksė.

Pavyzdžiui, paprastas SQL sakinys, nuskaitantis pavardžių sąrašą adresatams, vardu Marija, gali atrodyti taip:

SELECT Pavardė
IŠ kontaktų
WHERE First_Name = "Marija";

Pastaba: SQL kalba naudojama ne tik operacijoms su duomenimis atlikti, bet ir duomenų bazės objektų, pavyzdžiui, lentelių, struktūrai kurti bei keisti. SQL dalis, kuri naudojama duomenų bazės objektams kurti ir modifikuoti, vadinama DDL. DDL šiame straipsnyje neaptariama. Norėdami gauti daugiau informacijos, žr. Lentelių arba indeksų kūrimas arba keitimas naudojant duomenų apibrėžimo užklausą.

SELECT teiginiai

SELECT sakinys naudojamas apibūdinti duomenų rinkinį SQL. Jame pateikiamas išsamus duomenų, kuriuos reikia gauti iš duomenų bazės, rinkinio aprašymas, įskaitant:

    lentelės, kuriose yra duomenų;

    ryšiai tarp duomenų iš skirtingų šaltinių;

    laukai ar skaičiavimai, pagal kuriuos parenkami duomenys;

    atrankos sąlygos, kurias turi atitikti į užklausos rezultatą įtraukti duomenys;

    rūšiavimo būtinybė ir būdas.

SQL teiginiai

SQL sakinys susideda iš kelių dalių, vadinamų sakiniais. Kiekviena SQL sakinio sąlyga turi tikslą. Reikalingi kai kurie pasiūlymai. Žemiau esančioje lentelėje pateikiami dažniausiai naudojami SQL sakiniai.

SQL sakinys

apibūdinimas

Privaloma

Apibrėžia laukus, kuriuose yra reikalingi duomenys.

Apibrėžia lenteles, kuriose yra SELECT sąlygoje nurodyti laukai.

Apibrėžia lauko pasirinkimo sąlygas, kurias turi atitikti visi į rezultatus įtraukti įrašai.

Nustato rezultatų rūšiavimo tvarką.

SQL sakinyje, kuriame yra agregavimo funkcijų, nurodomi laukai, kuriems neskaičiuojama suvestinė reikšmė SELECT sąlygoje.

Tik jei tokie laukai yra

SQL sakinys, kuriame yra agregavimo funkcijų, apibrėžia sąlygas, kurios taikomos laukams, kuriems SELECT sąlygoje apskaičiuojama suvestinė reikšmė.

SQL terminai

Kiekvienas SQL sakinys susideda iš terminų, kuriuos galima palyginti su kalbos dalimis. Žemiau esančioje lentelėje rodomi SQL terminų tipai.

SQL terminas

Palyginama kalbos dalis

Apibrėžimas

Pavyzdys

identifikatorius

daiktavardis

Pavadinimas, naudojamas duomenų bazės objektui identifikuoti, pvz., lauko pavadinimas.

Klientai.[Telefono numeris]

operatorius

veiksmažodis ar prieveiksmis

Raktažodis, vaizduojantis arba modifikuojantis veiksmą.

pastovus

daiktavardis

Vertė, kuri nesikeičia, pvz., skaičius arba NULL.

išraiška

būdvardis

Identifikatorių, operatorių, konstantų ir funkcijų derinys, skirtas vienai reikšmei apskaičiuoti.

>= Produktai.[Kaina]

Pagrindinės SQL sąlygos: SELECT, FROM ir WHERE

Bendras SQL teiginių formatas yra:

PASIRINKTI lauką_1
IŠ lentelės_1
WHERE kriterijus_1
;

Pastabos:

    „Access“ nepaiso eilučių pertraukų SQL sakiniuose. Nepaisant to, kiekvieną sakinį rekomenduojama pradėti nauja eilute, kad SQL sakinį būtų lengva perskaityti tiek jį parašiusiam asmeniui, tiek visiems kitiems.

    Kiekvienas SELECT sakinys baigiasi kabliataškiu (;). Kabliataškis gali būti rodomas paskutinio sakinio pabaigoje arba atskiroje eilutėje SQL sakinio pabaigoje.

Pavyzdys programoje Access

Toliau pateiktame pavyzdyje parodyta, kaip gali atrodyti paprastos pasirinkimo užklausos SQL sakinys programoje Access.

1. SELECT sąlyga

2. IŠ sakinio

3. WERE sąlyga

Pažvelkime į pavyzdį sakinį po sakinio, kad suprastume, kaip veikia SQL sintaksė.

SELECT sąlyga

PASIRINKTI,Įmonė

Tai yra SELECT sąlyga. Jame yra (SELECT) sakinys, po kurio yra du identifikatoriai („[El. pašto adresas]“ ir „Įmonė“).

Jei identifikatoriuje yra tarpų arba specialiųjų simbolių (pvz., „El. pašto adresas“), jis turi būti įterptas į stačiakampius skliaustus.

SELECT sąlyga nereikalauja nurodyti lentelių, kuriose yra laukai, ir negalite nurodyti atrankos sąlygų, kurias turi atitikti į rezultatus įtraukti duomenys.

SELECT sakinyje SELECT sąlyga visada būna prieš sąlygą FROM.

FROM sąlyga

IŠ kontaktų

Tai yra sąlyga FROM. Jame yra (FROM) sakinys, po kurio yra identifikatorius (Kontaktai).

Išlyga FROM nenurodo laukų, kuriuos reikia pasirinkti.

WERE sąlyga

WHERE City="Sietlas"

Tai yra WHERE sąlyga. Jame yra (WHERE) teiginys, po kurio seka posakis (Miestas = "Rostovas").

Yra daug dalykų, kuriuos galite padaryti naudodami SELECT, FROM ir WHERE sąlygas. Daugiau informacijos apie šių pasiūlymų naudojimą rasite šiuose straipsniuose:

Rūšiavimo rezultatai: ORDER BY

Kaip ir „Microsoft Excel“, užklausos rezultatus galite rūšiuoti „Access“ lentelėje. Naudodami sąlygą ORDER BY taip pat galite nurodyti, kaip rezultatai rūšiuojami, kai vykdoma užklausa. Jei naudojama sąlyga ORDER BY, ji turi būti nurodyta SQL sakinio pabaigoje.

Sąlyga ORDER BY yra laukų, kuriuos reikia rūšiuoti, sąrašas ta pačia tvarka, kuria bus taikomas rūšiavimas.

Pavyzdžiui, tarkime, kad pirmiausia norite rūšiuoti rezultatus pagal lauką Įmonė mažėjančia tvarka, o tada, jei yra įrašų su ta pačia Įmonės lauko verte, surūšiuokite juos pagal lauką El. pašto adresas didėjančia tvarka. ORDER BY punktas atrodytų taip:

UŽSAKYMAS IŠ įmonės DESC,

Pastaba: Pagal numatytuosius nustatymus „Access“ rūšiuoja reikšmes didėjimo tvarka (nuo A iki Z, nuo mažiausios iki didžiausios). Norėdami rūšiuoti reikšmes mažėjančia tvarka, turite nurodyti raktinį žodį DESC.

Daugiau informacijos apie ORDER BY sąlygą rasite skyriuje ORDER BY.

Darbas su suvestiniais duomenimis: GROUP BY ir HAVING sąlygos

Kartais reikia dirbti su suvestiniais duomenimis, pvz., bendrais mėnesio pardavimais ar brangiausiomis prekėmis sandėlyje. Norėdami tai padaryti, SELECT sąlyga laukui taiko agregavimo funkciją. Pavyzdžiui, jei atliktumėte užklausą, kad gautumėte kiekvienos įmonės el. pašto adresų skaičių, SELECT sąlyga gali atrodyti taip:

Galimybė naudoti tam tikrą agregavimo funkciją priklauso nuo lauko duomenų tipo ir norimos išraiškos. Norėdami gauti daugiau informacijos apie galimas agregavimo funkcijas, žr. SQL statistinės funkcijos.

Nurodykite laukus, kurie nenaudojami agregacinėje funkcijoje: sąlyga GROUP BY

Kai naudojate jungtines funkcijas, paprastai turite sukurti sąlygą GROUP BY. Sąlyga GROUP BY nurodo visus laukus, kuriems agregavimo funkcija netaikoma. Jei agregacinės funkcijos taikomos visiems užklausos laukams, jums nereikia kurti sąlygos GROUP BY.

Sąlyga GROUP BY turi iš karto po WHERE arba FROM, jei nėra WHERE sąlygos. Sąlygoje GROUP BY laukai pateikiami ta pačia tvarka kaip ir SELECT sąlyga.

Tęskime ankstesnį pavyzdį. SELECT sąlygoje, jei agregavimo funkcija taikoma tik laukui [El. pašto adresas], sąlyga GROUP BY atrodytų taip:

GRUPĖ PAGAL įmonę

Daugiau informacijos apie GROUP BY sąlygą rasite straipsnyje GROUP BY.

Apibendrintų verčių ribojimas naudojant grupavimo sąlygas: sąlyga HAVING

Jei reikia nurodyti sąlygas, kad apribotumėte rezultatus, bet laukas, kuriam norite jas taikyti, naudojamas agregacinėje funkcijoje, negalite naudoti WHERE sąlygos. Vietoj to reikėtų naudoti sąlygą HAVING. Sąlyga HAVING veikia taip pat, kaip WHERE sąlyga, bet naudojama apibendrintiems duomenims.

Pavyzdžiui, tarkime, kad AVG funkcija (kuri apskaičiuoja vidurkį) taikoma pirmajam laukui SELECT sąlygoje:

SELECT COUNT(), Įmonė

Jei norite apriboti užklausos rezultatus pagal funkcijos COUNT reikšmę, negalite taikyti pasirinkimo sąlygos šiam laukui WHERE sąlygoje. Vietoj to sąlyga turėtų būti įtraukta į sąlygą HAVING. Pavyzdžiui, jei norite, kad jūsų užklausa pateiktų eilutes tik tuo atveju, jei įmonė turi kelis el. pašto adresus, galite naudoti šią HAVING sąlygą:

HAING COUNT()>1

Pastaba: Užklausoje gali būti ir sąlyga WHERE, ir sąlyga HAVING su atrankos sąlygomis laukams, kurie nenaudojami statistinėse funkcijose, nurodytose WHERE sakinyje, ir laukų, kurie naudojami statistinėse funkcijose, sąlygoje HAVING.

Daugiau informacijos apie HAVING sąlygą rasite straipsnyje HAVING.

Užklausos rezultatų derinimas: UNION operatorius

UNION operatorius naudojamas vienu metu peržiūrėti visus duomenis, pateiktus keliomis panašiomis pasirinkimo užklausomis, kaip bendrą rinkinį.

UNION operatorius leidžia sujungti du SELECT sakinius į vieną. Sujungiami SELECT teiginiai turi turėti tą patį skaičių ir eilės tvarka išvesties laukų su tais pačiais arba suderinamais duomenų tipais. Kai vykdoma užklausa, duomenys iš kiekvieno atitinkančių laukų rinkinio sujungiami į vieną išvesties lauką, todėl užklausos išvestis turi tiek laukų, kiek ir kiekvienas atskiras SELECT sakinys.

Pastaba: Sujungimo užklausose skaitmeniniai ir tekstiniai duomenų tipai yra suderinami.

Naudodami operatorių UNION galite nurodyti, ar pasikartojančios eilutės, jei tokių yra, turi būti įtrauktos į užklausos rezultatus. Norėdami tai padaryti, naudokite raktinį žodį ALL.

Užklausa, skirta sujungti du SELECT teiginius, turi tokią pagrindinę sintaksę:

PASIRINKTI lauką_1
IŠ lentelės_1
SĄJUNGOS
PASIRINKITE lauką_a
IŠ lentelės_a
;

Pavyzdžiui, tarkime, kad turite dvi lenteles, pavadintas „Produktai“ ir „Paslaugos“. Abiejose lentelėse yra laukeliai su prekės ar paslaugos pavadinimu, informacija apie kainą ir garantiją, taip pat laukas, nurodantis siūlomos prekės ar paslaugos išskirtinumą. Nors produktų ir paslaugų lentelėse pateikiamos skirtingos garantijos, pagrindinė informacija yra ta pati (ar atskiriems produktams ar paslaugoms suteikiama garantija). Norėdami sujungti keturis laukus iš dviejų lentelių, galite naudoti šią sujungimo užklausą:

PASIRINKITE pavadinimą, kainą, garantijos_galima, išskirtinį_pasiūlymą
IŠ produktų
SĄJUNGOS VISI
PASIRINKITE pavadinimą, kainą, garantijos_galima, išskirtinį_pasiūlymą
IŠ paslaugų
;

Daugiau informacijos apie SELECT teiginių derinimą naudojant UNION operatorių žr

Ankstesniuose straipsniuose buvo aptartos problemos. Nagrinėjama duomenų bazių lentelių „sql_training_st.mdb“ struktūros kūrimo technologija pagal SQL užklausas. Be to, naudojant SQL užklausas, buvo užpildytos ACCESS DBMS lentelės „sql_training_st.mdb“.

Yra žinoma, kad reliacinėse duomenų bazėse SQL kalba skirta manipuliuoti duomenimis, apibrėžti duomenų bazės ir jos komponentų struktūrą, kontroliuoti vartotojų prieigą prie duomenų bazės ir valdyti sandorius arba valdyti duomenų bazės pakeitimus.

SQL kalba susideda iš keturių grupių:

  • duomenų apdorojimo kalba DML;
  • DDL duomenų apibrėžimo kalba;
  • duomenų valdymo kalba DCL;
  • TCL operacijų valdymo kalba.

DML grupę sudaro keturi pagrindiniai SQL užklausų tipai:

  • INSERT – skirtas pridėti vieną ar daugiau įrašų į lentelės pabaigą;
  • ATNAUJINIMAS – skirtas keisti esamus įrašus lentelės stulpeliuose arba modifikuoti duomenis lentelėje;
  • DELETE – skirta ištrinti įrašus iš lentelės;
  • SELECT – skirtas duomenims iš lentelių parinkti.

Puslapyje buvo aptarti pirmieji trys SQL užklausų tipai (INSERT, UPDATE, DELETE), kurios yra susijusios su korekcinėmis duomenų bazės užklausomis.

Šiame straipsnyje apžvelgsime duomenų gavimo iš „Access“ duomenų bazės lentelių užklausas.

Norėdami gauti informaciją, saugomą Access 2003 arba 2007 duomenų bazėje, galite naudoti SELECT užklausą, kad pasirinktumėte duomenis iš lentelių.

Norėdami tai padaryti, sukurkime šią SQL užklausą (SQL sakinį), vykdydami komandą View/SQL Mode, pasirinkite SQL režimą. Klaviatūra įveskite šį SQL sakinį:

PASIRINKTI*
IŠ Studentų;

Šį teiginį sudaro du punktai „SELECT *“ ir „FROM Students“. Pirmajame sakinyje yra SELECT sakinys ir identifikatorius * ("identifikatorius *" reiškia visų lentelės stulpelių sąrašą). Antrame sakinyje yra FROM sakinys ir identifikatorius „Students“.

FROM – apibrėžia mokinių lentelę, kurioje yra laukeliai, nurodyti SELECT sąlygoje. Reikėtų pažymėti, kad pasirinkimo užklausoje visada yra du teiginiai: SELECT ir FROM. Atsižvelgiant į atrankos sąlygas, atrankos užklausoje gali būti kitų operatorių. 1 paveiksle parodyta užklausos gauti duomenis ekrano kopija.


Ryžiai. 1. SQL SELECT užklausa duomenims pasirinkti

Šiame pavyzdyje duomenų pavyzdys generuojamas iš visų lentelės Studentai stulpelių.

Išsaugokite užklausą pavadinimu „Students-query1“. Įvykdžius komandą „Išsaugoti“, „Naršymo srityje“ atsiras objektas - „Užklausos: Studentai-užklausa1“.

Išsaugoję pasirinkimo užklausą, turite ją įvykdyti spustelėdami piktogramą „Vykdyti“. Komandos „Vykdyti“ rezultatai parodyti pav. 2.



Ryžiai. 2. Duomenų parinkimas iš visų Mokinių lentelės stulpelių