Ce este o interogare sql în acces. Preluarea datelor dintr-o bază de date Access utilizând interogări sql. Înregistrări fără subordonați

Lucrare de laborator nr 1

SQL: DATA EXTRACT - comandăSELECTAȚI

Scopul lucrării:

  • familiarizați-vă cu instrucțiunile SQL;
  • învață cum să creezi interogări SQL simple în Access folosind comanda SELECT;

· utilizarea operatorilor IN, BETWEEN, LIKE, IS NULL.

Exercițiu№1. Creați o interogare pentru a selecta în modul SQL toate valorile câmpurilor PRENUME și NUME din tabelul STUDENTI.

SELECTAȚI PRENUMELE, NUMELE

DE LA STUDENTI;

Exercițiu№2 . Creați o interogare pentru a selecta în modul SQL toate coloanele din tabelul STUDENTI.

SELECTAȚI *

DE LA STUDENTI;


Sarcina nr. 3. Creați o interogare pentru a selecta în modul SQL numele orașelor în care locuiesc elevii, informații despre care se află în tabelul DATE PERSONALE.

SELECTAȚI ORAȘUL DISTINCT

DIN [DATE PERSONALE];

Sarcina nr. 4. Creați o interogare de selecție în modul SQL care preia numele tuturor elevilor cu numele de familie Ivanov, informații despre care se află în tabelul STUDENTI.

SELECTAȚI NUMELE, PRENUMELE

DE LA STUDENTI

UNDE NUMELE="Ivanov";

Sarcina nr. 5. Creați o interogare de selecție în modul SQL pentru a obține numele și prenumele studenților care studiază în grupa UIT-22 pe o formă de educație bugetară.

SELECTAȚI NUMELE, PRENUMELE

DE LA STUDENTI

WHERE GROUP="UIT-22" AND BUDGET=true;

Sarcina nr. 6. Creați o interogare în modul SQL. pentru o mostră din tabelul de EXAMEN, informații despre elevii care au doar note 4 și 5.

SELECTAȚI *

DE LA [SCHIMBAREEXAMENE]

UNDENOTAIN(4,5);

Sarcina nr. 7. Creați un mod zanpoc și SQL pentru a selecta informații despre studenții care au nota 3 la examen la materia IOSU.

SELECTAȚI *

DE LA [SCHIMBAREEXAMENE]

UNDEARTICOL=" IOSU"ȘiNOTANu în (4,5);

Sarcina nr. 8. Creați o interogare în modul SQL pentru a selecta înregistrări pentru articolele ale căror ore sunt între 100 și 130.

SELECTAȚI *

DINARTICOLE

UNDECEASINTRE 100 SI 130;


Sarcina nr. 9. Creați o interogare în modul SQL pentru a selecta din tabelul STUDENTI informații despre elevii ale căror nume de familie încep, de exemplu, cu litera „C”.

SELECTAȚI *

DINELEVI

UNDENUME DE FAMILIECA"CU*";

Concluzie:În timpul lucrărilor de laborator, ne-am familiarizat cu instrucțiunile SQL, am învățat cum să creăm interogări SQL simple în Access folosind comanda SELECT folosind operatorii IN, BETWEEN, LIKE.

Limbajul SQL nu are funcțiile unui limbaj de dezvoltare cu drepturi depline, dar este axat pe accesul la date, deci este inclus în instrumentele de dezvoltare a programelor. În acest caz se numește SQL încorporat. Standardul limbajului SQL este susținut de implementări moderne ale următoarelor limbaje de programare: PL/1, Ada, C, COBOL, Fortran, MUMPS și Pascal.

În sistemele specializate de dezvoltare de aplicații de tip client-server, mediul de programare este, în plus, de obicei completat cu instrumente de comunicare (stabilirea și deconectarea conexiunilor cu serverele de baze de date, detectarea și procesarea erorilor apărute în rețea etc.), instrumente de dezvoltare interfețe cu utilizatorul, instrumente de proiectare și depanare

Există două metode principale de utilizare a SQL încorporat: static și dinamic.

La static utilizarea limbajului (SQL static) Textul programului conține apeluri la funcțiile limbajului SQL, care sunt incluse în mod rigid în modulul executabil după compilare. Modificările în funcțiile apelate pot fi la nivelul parametrilor individuali de apel folosind variabilele limbajului de programare.

La dinamic utilizarea limbajului (SQL dinamic) se presupune că apelurile la funcțiile SQL sunt construite dinamic și interpretarea acestor apeluri, de exemplu, accesarea datelor dintr-o bază de date la distanță, în timpul execuției programului. Metoda dinamică este de obicei folosită în cazurile în care aplicația nu cunoaște în prealabil tipul de apel SQL și este construită în dialog cu utilizatorul.

Scopul principal al limbajului SQL (precum și al altor limbaje pentru lucrul cu baze de date) este pregătirea și executarea interogărilor. Ca urmare a eșantionării datelor din unul sau mai multe tabele, se poate obține un set de înregistrări, numite prezentare.

Performanţă este în esență un tabel format ca urmare a executării unei interogări. Putem spune că este un tip de interogare stocată. Puteți construi mai multe vederi folosind aceleași tabele. Vederea în sine este descrisă prin specificarea identificatorului vizualizării și a cererii care trebuie făcută pentru a o obține.



Pentru confortul lucrului cu vizualizări, conceptul de cursor a fost introdus în limbajul SQL. Cursor este un fel de pointer folosit pentru a trece prin seturi de înregistrări atunci când le procesăm.

Descrierea și utilizarea unui cursor în SQL este după cum urmează. În partea descriptivă a programului, o variabilă de tip cursor (CURSOR) este asociată cu o instrucțiune SQL (de obicei o instrucțiune SELECT). În partea de execuție a programului, cursorul este deschis (OPEN<имя курсора», перемещение курсора по записям (FETCI-1 <имя курсора>...), urmată de procesarea corespunzătoare și, în final, de închiderea cursorului (ÎNCHIS<имя курсора>).

În SGBD-urile relaționale, pentru a efectua operațiuni pe relații, se folosesc două grupuri de limbaje, care au ca bază matematică limbaje de interogare teoretice propuse de E. Codd:

algebră relațională;

Calcul relațional.

În algebra relațională Operanzii și rezultatele tuturor acțiunilor sunt relații. Limbile de algebră relațională sunt procedurale deoarece relația rezultată dintr-o interogare pe o bază de date relațională este evaluată prin executarea unei secvențe de operatori relaționali aplicați relațiilor. Operatorii constau din operanzi, care sunt relații și operații relaționale.

Operațiile de algebră relațională Codd pot fi împărțite în două grupuri: teoretică de bază și relațională specială. Prima grupă de operații include operațiile clasice ale teoriei mulțimilor: unire, diferență, intersecție și produs. A doua grupă reprezintă dezvoltarea operațiilor obișnuite de teorie a mulțimilor către probleme reale de manipulare a datelor, include operațiile: proiecție, selecție, împărțire și conectare.

Limbaje de calcul sunt non-procedurale (descriptive sau declarative) și permit exprimarea interogărilor folosind un predicat de ordinul întâi (instrucțiuni de funcție) pe care tuplurile sau domeniile relaționale trebuie să-l satisfacă. O interogare de bază de date executată folosind un astfel de limbaj conține doar informații despre rezultatul dorit. Aceste limbi se caracterizează prin prezența unor seturi de reguli pentru scrierea interogărilor. În special, SQL aparține limbilor acestui grup.

Caracteristicile aplicației interogări SQL

O interogare SQL este o interogare creată folosind o instrucțiune SQL. Exemple de interogări SQL sunt interogări de unire, interogări de server, interogări de control și interogări subordonate.

O interogare de îmbinare este o interogare care combină câmpuri (coloane) dintr-unul sau mai multe tabele sau interogări într-un singur câmp sau coloană din setul de rezultate de înregistrări. De exemplu, șase agenți de vânzări oferă managementului un inventar al inventarului lor în fiecare lună. Prin crearea unei interogări de alăturare, puteți combina aceste inventare într-un set de rezultate de înregistrări și apoi puteți dezvolta o interogare de creare a unui tabel bazată pe interogarea de alăturare.

O solicitare către server transmite comenzi SQL prin ODBC către un server, de exemplu, Microsoft SQL Server. Interogările de server vă permit să lucrați direct cu tabelele de pe server, în loc să vă alăturați acestora. Rezultatul unei solicitări către server poate fi încărcarea înregistrărilor sau modificarea datelor.

O interogare de control creează sau modifică obiecte de bază de date, cum ar fi tabelele Access sau SQL Server.

O subinterogare constă dintr-o instrucțiune SQL SELECT în interiorul unei alte interogări select sau change. Aceste instrucțiuni sunt introduse în linia „Câmp” a formularului de solicitare pentru a defini un câmp nou sau în linia „Condiție de selecție” pentru a defini condiția de selecție a câmpului. Subinterogările sunt folosite pentru a face următoarele:

Verificarea intr-o subinterogare pentru existenta unor rezultate folosind cuvintele rezervate EXISTS sau NO EXISTS;

Caută în interogarea principală orice valori care sunt egale, mai mari sau mai mici decât valorile returnate în subinterogare (folosind cuvintele rezervate ANY, IN sau TOATE);

Crearea de subinterogări în cadrul subinterogărilor (subinterogări imbricate).

Limbajul SQL din Access poate fi folosit pentru a dezvolta formulare de ecran, rapoarte, precum și pentru a crea macrocomenzi și programe VBA.

Relația dintre limbajele QBE și SQL

În Access, există o relație strânsă între limbajele QBE și SQL. Tabelele de interogări (formulare) în limbajul QBE, completate de utilizator, sunt convertite în expresii SQL înainte de execuția imediată. Adică, limbajul SQL este un standard intern pentru executarea interogărilor. Acest mecanism are avantajul de a permite sistemului Access să unifice pregătirea interogărilor pentru execuție pe computere locale și la distanță. În acest din urmă caz, mesajul SQL este de fapt transmis către computer - serverul de solicitări.

În Access, o interogare poate fi în unul dintre cele trei moduri (stări): Design, SQL și Table. Modul de proiectare este folosit pentru a dezvolta o nouă interogare de la zero (fără a utiliza vrăjitorii sau alte instrumente) sau pentru a modifica aspectul unei interogări existente. Modul SQL este folosit pentru a introduce sau vizualiza instrucțiuni SQL. Modul tabel este utilizat pentru a lucra cu rezultatele interogării.

SQL în formulare și rapoarte

Principalele surse de înregistrări din afișaje și rapoarte sunt tabelele și interogările. În al doilea caz, cererea poate fi o interogare de bază de date gata făcută sau una creată la elaborarea unui formular sau raport.

SQL în macrocomenzi

Comenzile macro fac parte din macrocomenzi care sunt utilizate pentru a automatiza execuția acțiunilor repetate frecvent în lucrul cu o bază de date. O macrocomandă este una sau mai multe comenzi macro cu argumente.

Macro-urile sunt apelate din fereastra bazei de date sau automat atunci când apar anumite evenimente. Evenimentul la care este apelată macro-ul poate fi, de exemplu, clicul unui buton din zona formularului sau deschiderea unei ferestre de bază de date. Pe lângă efectuarea anumitor acțiuni asupra obiectelor bazei de date, macrocomenzile pot apela alte macrocomenzi, programe Visual Basic și aplicații externe.

Dintre numeroasele comenzi macro, două comenzi macro sunt direct legate de SQL: Run SQL Query (Run SQL) și Open Query (OpenQuery)

Comanda macro Run SQL Query rulează o interogare de modificare sau control de acces folosind instrucțiunea SQL corespunzătoare. Această macrocomandă face posibilă efectuarea de acțiuni într-o macrocomandă fără a salva mai întâi interogările. De asemenea, puteți executa interogări salvate folosind macrocomandă.

Solicitări de schimbare sunt instrucțiuni SQL care implementează următoarele funcții: adăugarea (INSERT INTO), ștergerea (DELETE), crearea unui tabel (SELECT...INTO) și actualizarea (UPDATE)

Cererile de control sunt instrucțiuni SQL care îndeplinesc următoarele funcții: creați un tabel (CREATE TABLE), modificați un tabel (ALTER TABLE), eliminați un tabel (DROP TABLE), creați un index (CREATE INDEX) și eliminați un index (DROP INDEX)

Singurul și necesar argument al comenzii macro Rularea unei interogări SQL este o instrucțiune SQL. Argumentul macro ca text SQL - instrucțiunile sunt introduse manual în fereastra de introducere macro sau copiate din fereastra SQL, ceea ce este adesea mai convenabil.

Comanda macro OpenRequest vă permite să deschideți o interogare de selecție sau încrucișată (în modurile tabel, design și previzualizare), să rulați o interogare pentru a modifica sau introduce date.

Macro-ul specifică trei argumente: numele cererii, modul și modul de date. Primul argument specifică numele cererii de deschis și este obligatoriu. Al doilea argument specifică modul de deschidere a interogării (Tabel, Design și Vizualizare). Al treilea argument descrie modul de introducere a datelor în cerere („Adăugați”, „Schimbați” și „Numai citire”)

SQL în programele VBA

VBA, ca și macrocomenzi, este conceput pentru a automatiza operațiuni repetitive pe obiectele bazei de date Access.

În Access, există următoarele moduri de a rula programe VBA:

Includerea unui program în procedura de procesare a evenimentului;

Apelarea unei funcții într-o expresie;

Apelarea unei proceduri Sub într-o altă procedură sau într-o fereastră de depanare;

Executarea comenzii macro RunCode (RunCode) într-o macrocomandă.

Funcțiile sunt folosite în expresii care definesc câmpuri calculate în formulare, rapoarte sau interogări. Expresiile sunt folosite pentru a specifica condiții în interogări și filtre, precum și în macrocomenzi, instrucțiuni și metode VBA și instrucțiuni SQL. O procedură Sub poate include subrutine VBA publice care sunt apelate din alte proceduri.

Să ne uităm la rularea unei interogări de bază de date folosind instrucțiuni SQL într-un program Visual Basic pentru aplicații.

Solicitarea selectează înregistrări din baza de date care îndeplinesc anumite condiții (cerere de selecție) sau emite instrucțiuni pentru a efectua acțiuni specificate cu înregistrări care îndeplinesc anumite condiții (cerere de modificare).

Există următoarele moduri de a executa interogări:

Apelarea metodei Execute (pentru a executa interogări SQL pentru modificări);

Crearea și execuția unui obiect special QueryDef;

Utilizarea unei instrucțiuni SQL ca argument pentru metoda OpenRecordset;

Executați metoda OpenRecordset pe un obiect QueryDef existent;

Apelarea metodelor RunSQL și OpenQuery.

Execut metoda folosit dacă trebuie să faceți o modificare în baza de date care nu returnează înregistrări. De exemplu, operațiuni de inserare sau ștergere a înregistrărilor.

obiect QueryDef reprezintă o definiție de interogare salvată în baza de date. Poate fi considerată ca o instrucțiune SQL compilată.

Metoda OpenRecordset folosit pentru a deschide un obiect de tip Recordset pentru a efectua operațiuni ulterioare asupra acestuia.

Metoda RunSQL execută o macrocomandă Rularea unei interogări SQLîn programul VBA

Metoda OpenQuery execută comanda macro OpenQuery într-un program VBA. Cu acesta, puteți deschide o interogare în modul Foaie de date, Design sau Vizualizare. Aceasta setează unul dintre următoarele moduri de lucru cu date: adăugarea, modificarea sau doar citirea.

Alegerea opțiunii de execuție a interogării este determinată de programator, ținând cont de caracteristicile problemei care se rezolvă.

Ministerul Educației al Federației Ruse

Universitatea Tehnică de Stat Kuzbass

Departamentul de Informatică

și tehnologia informației

Interogări în limbaj SQL

Orientări pentru lucrul de laborator pentru studenții specialității „Economie și management în întreprinderi” la cursul „Automatizarea calculelor economice”

Întocmit de E.A. Bessonov

Aprobat în ședința departamentului Procesul-verbal nr. 11 din 23 iunie 2000

O copie electronică este stocată în biblioteca clădirii principale a KuzSTU

Kemerovo 2001

SQL (Structured Query Language - limbaj structurat de interogare

bufnițe) din 1986 este un limbaj standard de baze de date relaționale. În special, este utilizat în aplicațiile Access și Excel. Standardul limbajului SQL este stabilit în .

Interogările în MS Access sunt salvate și implementate folosind limbajul SQL. Deși majoritatea interogărilor pot fi create grafic (interogări de tipar), acestea sunt stocate ca instrucțiuni SQL. În unele cazuri (de exemplu, în subinterogări), puteți utiliza doar limbajul SQL. Dialectul acestei limbi este folosit în MS Access și este descris mai jos. Numeroase exemple de interogări în SQL pot fi găsite în baza de date Northwind (fișierul I:\Access\Sampapps\Nwind.mdb).

SQL este vizibil diferit de alte limbaje de programare de nivel înalt.

1. SQL este un limbaj non-procedural. Pur și simplu declară ce trebuie făcut, iar execuția este lăsată în seama DBMS (sistem de management al bazelor de date).

2. SQL folosește logica cu trei valori. Alături de valorile booleene tradiționale TRUE și FALSE, este folosit NULL (NEKNOWN sau NO DATA).

3. Operațiile sunt efectuate pe seturi întregi de date, mai degrabă decât pe elemente individuale, ca în alte limbaje de programare.

O interogare SQL constă din instrucțiuni. Fiecare instrucțiune poate conține mai multe propoziții.

Aproape nicio interogare nu este completă fără o clauză FROM, care descrie tabelele sau interogările utilizate și are sintaxa

DIN mese

Tabele - tabelele/interogările utilizate și relațiile lor.

Dacă clauza FROM conține o clauză IN (parantezele pătrate indică faptul că această parte a clauzei este opțională), atunci cuvântul rezervat IN trebuie urmat de numele bazei de date în care se află tabelele (presupunând că acestea folosesc tabele nu din baza de date curentă).

DE LA Profesori

Dacă interogarea se bazează pe două tabele, atunci este necesar să indicați metoda de combinare a acestora - una dintre următoarele (se presupune că cititorul este familiarizat cu ele):

Produs cartezian; INNER JOIN inner join; LEFT JOIN stânga îmbinare exterioară; RIGHT JOIN alăturarea din dreapta exterioară.

Imediat după metoda join, trebuie să plasați expresia ON Table1.Key = Table2.ForeignKey

Cheie - numele câmpului cheie de pe partea 1. ForeignKey - numele câmpului de conectare pe partea N.

Schema de date

Figura prezintă diagrama de îmbinare a tabelului (schema de date) care va fi utilizată pentru majoritatea exemplelor de mai jos. Din figură, de exemplu, puteți vedea că pentru tabelul „Examinatori”, câmpul „Subiect” este un câmp cheie (îngroșat), iar câmpul „Profesor” este o cheie străină pentru tabelul „Profesori”. Îmbinarea dintre tabelele specificate este internă și asigură integritatea datelor. Acest lucru este evidențiat de semnele 1 și ∞ de la capetele liniei de legătură („Profesorii” este masa principală, iar „Examinatorii” este masa subordonată). Cu o îmbinare exterioară, puteți vedea o săgeată pe linia de îmbinare a tabelului îndreptată către tabelul subordonat. Aceasta înseamnă că toate înregistrările vor fi afișate în tabelul principal, chiar dacă nu există înregistrări corespunzătoare în tabelul subordonat. De exemplu, puteți obține o listă de profesori și nume de materii. Dacă

Dacă un profesor nu se află în tabelul „Examinatori”, atunci câmpul pentru numele subiectului pentru acest profesor va fi gol dacă se folosește LEFT JOIN.

FROM Examiners INNER JOIN Examen ON Examiners.Subject = Exams.Subject

În clauza FROM, înaintea cuvintelor rezervate INNER JOIN, este indicată numele tabelului de pe fața 1 (în cazul nostru, tabelul „Examinatori”). Dacă există mai mult de două tabele în clauza FROM, atunci îmbinarea celor două tabele poate fi inclusă în paranteze și tratată ca un singur tabel atunci când este unită cu alte tabele sau îmbinări. Puteți descrie o îmbinare a oricărui număr de tabele în acest fel.

DE LA Profesori INNER JOIN (Examinatori

EXAMENE INNER JOIN

ON Examiners.Subject = Examene.Subject)

ON Teachers.Teacher = Examiners.Teacher Este descrisă întreaga schemă de date (vezi figura).

Instrucțiunea SELECT selectează câmpurile necesare din tabele sau interogări. Format minim:

DIN masa;

Câmpuri - un set de expresii și nume de câmpuri, separate prin virgule. Exemplu

SELECT Grup, Student, Evaluare FROM Examene;

Dacă numele se repetă în mai multe tabele enumerate în clauza FROM, atunci numele trebuie să fie precedat de numele tabelului și un punct, de exemplu: [Examinatori].Profesor sau [Examene]. [Articol]

Dacă numele unui tabel sau câmp conține un spațiu sau alt caracter special, atunci acest nume trebuie să fie cuprins între paranteze drepte. În alte cazuri, parantezele sunt opționale.

ÎN În exemplul dat în modul tabel, interogarea produce un tabel

Cu titlurile coloanei „Grup”, „Student”, „Notă” (în această ordine). Uneori este de dorit ca titlul să fie diferit de

numele domeniului. În acest caz, după numele câmpului ar trebui să plasați cuvântul rezervat AS și un titlu (alias), de exemplu:

SELECT Group, Student AS Nume complet, Grad

ÎN În acest caz, în loc de titlul „Student”, va apărea „Nume complet”. Dacă

V În titlu există mai mult de un cuvânt, acesta trebuie inclus între paranteze drepte.

Dacă trebuie să afișați toate câmpurile unui tabel, atunci argumentul câmpului trebuie specificat cu un asterisc sau sub forma „Tabel.*”.

SELECTează profesori.* FROM Teachers;

Toate cele 5 câmpuri din tabelul „Profesori” sunt returnate.

Uneori trebuie să scoateți nu valoarea unui câmp, ci rezultatul calculelor asupra valorilor câmpului. În acest caz, în loc de numele câmpului, trebuie să specificați o expresie. Regulile de scriere a expresiilor nu sunt diferite de regulile utilizate în proiectantul de interogări.

SELECTAȚI Medie([Notă]) Ca [Media Notă] FROM Examen;

Interogarea returnează un singur număr într-o coloană intitulată „GPA”

– media aritmetică a tuturor notelor elevilor. Exemplu

SELECT Count([Profesor]) Ca [Număr de profesori] FROM Teachers;

La rubrica „Număr de profesori” va fi plasat numărul de rânduri din tabelul „Profesori” în care câmpul „Profesor” nu este gol (și nu este întotdeauna gol, deoarece este cel cheie). Acesta este numărul de profesori, deoarece fiecare înregistrare are un număr de profesor diferit de numărul celorlalți profesori.

ÎN Instrucțiunile SELECT imediat după cuvântul SELECT pot fi

se scrie un predicat - unul dintre cuvintele ALL, DISTINCT, DISTINCTROW, TOP N.

Predicatul ALL face ca toate înregistrările să fie returnate, chiar dacă acestea conțin duplicate.

DISTINCT interzice afișarea înregistrărilor care conțin duplicate în câmpurile selectate. Utilizarea predicatului DISTINCT este echivalentă cu setarea proprietății Valori unice din foaia de proprietăți a Generatorului de interogări la Da.

DISTINCTROW afectează rezultatul numai dacă nu toate câmpurile din tabelele analizate sunt incluse în interogare. Predicatul este ignorat dacă interogarea conține un singur tabel. Predicatul DISTINCTROW exclude intrările care sunt repetate în întregime. Utilizarea predicatului DISTINCTROW este echivalentă cu setarea proprietății Unique Records din foaia de proprietăți a Generatorului de interogări la Da.

Predicatul Top N este folosit pentru a returna cele N înregistrări care se află la începutul sau la sfârșitul unui set, sortate după valori crescătoare sau descrescătoare ale câmpului respectiv. Sortarea este determinată folosind clauza ORDER BY plasată după clauza FROM a instrumentului.

SELECT instrucțiuni.

După cuvintele ORDER BY trebuie să plasați numele câmpului și cuvântul ASC (crescător, opțional) sau DESC (descrescător). Următoarea instrucțiune SQL vă permite să obțineți o listă a primilor 5 studenți.

Performanta academica

tabelul 1

Scor mediu

Medvedev

Vorobiev

SELECTEAZĂ TOP 5 Student, [GPA] DIN Performanța academică

ORDER BY[Scor mediu] DESC;

SELECTARE DISTINCT [Student] FROM Examene

COMANDĂ DE [Student];

Interogarea returnează o listă de studenți, sortați după nume crescător.

După clauza FROM se poate scrie instrucțiunea SELECT

Clauza WHERE sub forma condiției WHERE

O condiție este o expresie logică care este evaluată pentru fiecare înregistrare din tabelul sursă.

Dacă condiția este adevărată, atunci înregistrarea (un set de câmpuri din lista de câmpuri din clauza SELECT) este inclusă în setul de rezultate, dacă este fals, nu este inclusă;

SELECTARE DISTINCT Grup, Student

DE la examene

WHERE Scorul = 2;

Se creează o listă de studenți care au susținut. Exemplu

WHERE [Posiție]=”Profesor asociat” SAU [Grad]=”PhD” COMANDA DE [nume complet];

Se emite o listă a cadrelor didactice cu titlul academic de conferențiar sau gradul academic de candidat la științe tehnice. În acest exemplu, nu este nevoie să aplicați un predicat deoarece intrările aparțin unor profesori diferiți și repetările nu sunt posibile.

Când selectați expresii șir, puteți utiliza operatorul de model Expression Like, care verifică consistența rezultatului calculului expresii la șablon.Șablonul poate folosi unele caractere care au scopuri speciale:

* orice număr de caractere;

Orice personaj.

ÎN parantezele pătrate pot indica domeniul în care se află sau nu caracterul.

Un caracter variind de la A la F inclusiv. Caracterul [!A-F] nu este în intervalul A-F.

SELECTAȚI [Nume] FROM Profesori

UNDE [nume complet] LIKE „B*” SAU [nume complet] LIKE „Ш*”;

ÎN setul rezultat va include numele de familie ale profesorilor începând cu literele D sau Ш.

X LIKE „P###”

Condiția scrisă este îndeplinită de rânduri de 5 caractere care încep cu litera P. Trebuie urmată de o literă din intervalul A-F. Linia trebuie să se termine cu 3 cifre.

Dacă înainte de fiecare execuție a unei interogări este necesară modificarea condițiilor de selecție, este convenabil să folosiți o propoziție de forma:

PARAMETRII texte;

Texte - o listă de texte separate prin virgule.

După fiecare text, tipul de date este indicat separat de un spațiu. Când rulați o interogare cu parametri, nu este necesar să deschideți fereastra de proiectare a interogării și să faceți modificări în condițiile de selecție. În schimb, utilizatorului i se solicită să introducă condiția dorită în timp ce interogarea rulează. Pentru fiecare text din propoziția PARAMETRI, pe ecran apare o casetă de dialog, unde fiecare text din descriere joacă rolul unui indiciu - ce anume trebuie introdus. Trebuie să introduceți datele de tipul specificat în caseta de dialog.

Dacă se folosește clauza PARAMETERS, aceasta trebuie să apară înaintea tuturor celorlalte instrucțiuni, inclusiv instrucțiunea SELECT și să se termine cu punct și virgulă.

PARAMETRI [Specificați data de început] DATETIME, [Specificați data de încheiere] DATETIME;

În condițiile de selecție ale clauzelor WHERE și HAVING, puteți utiliza text fără a specifica tipuri de date. Când interogarea este executată, textul este înlocuit cu valoarea introdusă.

PARAMETRI [Specificați grup] TEXT; SELECTARE Student, Grad

DE la examene

WHERE [Grup]=[Specificați grupul] Și [Articol]=1;

Solicitarea returnează notele elevilor din grupa specificată la materia cu codul 1.

Clauza GROUP BY a unui câmp combină un grup de înregistrări dintr-o listă specificată de câmpuri într-o singură înregistrare. Dacă instrucțiunea SELECT conține o funcție de grup (de exemplu, Avg sau Sum), atunci se va calcula valoarea pentru înregistrarea din setul de rezultate - totalul pentru grupul de înregistrări. Deci, de exemplu, dacă în tabelul „Examene” grupați înregistrările după subiect, atunci folosind funcția Avg puteți obține scorul mediu pentru subiect. Gruparea pe subiecte și grupe vă va permite să obțineți punctajele medii ale grupelor de studenți la materia specificată.

GROUP BY nu este o clauză obligatorie. Dacă este prezent în clauza SELECT, apare după clauza FROM.

Când se utilizează o clauză GROUP BY, toate câmpurile din lista de câmpuri a clauzei SELECT trebuie fie să fie incluse în lista de câmpuri a clauzei GROUP BY, fie folosite ca argumente pentru o funcție de grup SQL.

Dacă sunt folosite funcții de grup, iar clauza GROUP BY este absentă, atunci rolul grupului este jucat de întregul set de înregistrări sursă din interogare.

SELECT Grup, Student, Avg([Notă]) AS [Scor mediu] FROM Examen

GROUP BY [Grup],[Student];

Pentru fiecare elev se calculează media aritmetică a notelor sale.

Clauza opțională HAVING trebuie să apară după GROUP BY. Acesta determină care dintre înregistrările grupate vor fi incluse în setul de rezultate. Condiția din HAVING este o expresie logică regulată, la fel ca în WHERE. WHERE și HAVING pot fi prezente într-o instrucțiune SELECT în același timp. În acest caz, WHERE filtrează înregistrările înainte de grupare, iar HAVING filtrează înregistrările (grupurile) grupate.

PARAMETRI [Introduceți numele articolului] TEXT; SELECTează grupul, subiectul, media([Nota]) AS [Scor mediu] FROM Examiners INNER JOIN Examene

ON Examiners.Subject=Examene.Subject

WHERE [Subject Name]=[Introduceți Subject Name] GROUP BY Group, Student

AVÂND Avg([Evaluare])>=4,5 și Min([Evaluare])>2;

Interogarea returnează o listă de studenți cu scorurile lor medii. Lista include studenții care nu au note susținute și cu medii de cel puțin 4,5.

Instrucțiunea TRANSFORM este utilizată pentru a crea o interogare încrucișată. Datele prezentate cu o interogare încrucișată sunt afișate într-o formă mai compactă decât cu o interogare selectată. Sintaxă:

TRANSFORM Funcția SELECT ...;

Funcție - o funcție SQL de grup care procesează datele unei celule de tabel - un câmp sau o expresie din care valorile devin antet.

coloane kami.

O interogare în modul tabel are atâtea coloane câte valori diferite acceptă câmpul. De exemplu, dacă câmpul afișează numele lunilor, atunci vor exista până la 12 coloane, ale căror titluri sunt ordonate crescător (august, aprilie...ianuarie). După argumentul câmpului, puteți plasa o clauză IN(listă_valori). Valorile fixe din value_list sunt separate prin virgule. Când este prezentă o clauză IN, fiecare valoare de câmp este comparată cu valorile din value_list. Dacă există o potrivire, rezultatul calculului funcției este afișat în coloana corespunzătoare. Antetele fixe care nu corespund datelor reale pot fi folosite pentru a crea coloane suplimentare.

Utilizarea clauzei PIVOT este echivalentă cu definirea proprietății Anteturi de coloană în foaia de proprietăți a Generatorului de interogări.


Comparație între Microsoft Access SQL și ANSI SQL Microsoft Access SQL este în principal ANSI-89 (Nivel 1) unele caracteristici ANSI SQL nu sunt utilizate în Microsoft Access SQL Microsoft Access SQL utilizează cuvinte rezervate și caracteristici neacceptate de ANSI SQL În Access 2000 (MS Jet) 4.0) au fost introduse extensii care aduc limbajul mai aproape de standardul ANSI SQL-92 - modul este disponibil numai atunci când se folosește MS OLE DB Provider pentru Jet


Sintaxa comenzii SELECT (Acces Microsoft) SELECT [ predicat ] ( * | tabel.* | [ tabel.] câmp_1 [, [ tabel.] câmp_2 [,...]]) FROM expresie [,...] Clauza FROM listă SELECT Expresia Câmpuri FROM Expresia este o expresie care definește unul sau mai multe tabele din care sunt preluate datele. Această expresie poate fi numele unui singur tabel, numele unei interogări salvate sau rezultatul unei operații INNER JOIN, LEFT JOIN sau RIGHT JOIN. INNER JOIN,LEFT JOIN DREAPT JOIN.


Argumente ale instrucțiunii SELECT Un predicat (ALL, DISTINCT, DISTINCTROW sau TOP) este una dintre condițiile de selecție. Predicatele sunt folosite pentru a limita numărul de înregistrări returnate. Dacă acestea lipsesc, predicatul implicit este ALL (selectează toate înregistrările care corespund condițiilor specificate în instrucțiunile SQL DISTINCT - exclude înregistrările care conțin valori duplicate în câmpurile selectate). DISTINCTROW - Omite datele bazate pe înregistrări duplicate întregi, mai degrabă decât pe câmpuri duplicate individuale. Predicatul DISTINCTROW este ignorat dacă interogarea conține doar un tabel sau toate câmpurile tuturor tabelelor. TOP n - Returnează numărul specificat de înregistrări care se află la începutul sau la sfârșitul intervalului descris folosind clauza ORDER BY. SELECT ]] FROM tabelul celor mai numeroase 5 departamente: SELECT TOP 5 angajat.[Cod departament], Count(employee.full name) AS number_of_employees FROM angajat GROUP BY angajat.[codul departament] ORDER BY Count(employee.full name) DESC;


Argumente ale instrucțiunii SELECT Table - numele tabelului din care trebuie selectate înregistrările. CU OPȚIUNEA OWNERACCESS - utilizat într-un mediu multi-utilizator cu un grup de lucru securizat, pentru a acorda utilizatorului care lucrează cu cererea permisiunile corespunzătoare permisiunilor proprietarului cererii. câmp_1, câmp_2 - numele câmpurilor din care trebuie selectate datele. Dacă includeți mai multe câmpuri, acestea vor fi preluate în ordinea specificată. Alias_1, Alias_2 - nume care vor deveni antete de coloană în loc de numele coloanelor originale din tabel. Expresie - numele unuia sau mai multor tabele care conțin datele care sunt selectate. SELECT angajat.nume complet, [salariu]*0,5 AS Bonus FROM angajat; SELECTAȚI Mediu(angajat.salariu) AS Salariul_mediu FROM angajat;


Prelucrarea în comun a mai multor tabele SELECT angajat.Nume, subiect.[numele scurt al subiectului] FROM angajat INNER JOIN (subiect INNER JOIN [proprietatea obiectelor] ON subiect.[codul subiectului] = [proprietatea obiectelor].[codul disciplinei] ) ON angajat.Cod = [deținerea articolului].[codul angajatului];




Între... Și expresia 1 ÎNTRE expresia 2 și expresia 3 (în Microsoft Access SQL, expresia 2 poate fi mai mare decât expresia 3, dar nu și în ANSI SQL). SELECT angajat.nume complet, angajat.salariu FROM angajat WHERE (((angajat.salariu) Între 1000 Și 2000)); Interogare: SELECT angajat.nume complet, angajat.salariu FROM angajat WHERE (((angajat.salariu) Între 2000 Și 1000)); nu generează o eroare și dă același răspuns SELECT angajat.nume complet, angajat.salariu FROM angajat WHERE (((angajat.salariu) 15000)); SELECTAȚI angajat.nume complet, angajat.salariu FROM angajat WHERE (((angajat.salariu) Nu între 1000 și 2000));


Caractere de tipar Cu predicatul Like sunt folosite diferite caractere de tipar. MS Access SQL ANSI SQL model caracter un caracter? _ (subliniere) grup de caractere * % un singur caracter inclus în lista_caracterelor [listă_caracterelor] lipsește un singur caracter neinclus în lista_caracterelor [! character_list] lipsă Ultimele două caracteristici sunt Access 2000 numai în modul ANSI SQL-92 permite utilizarea caracterelor metalice ANSI. Nu puteți amesteca caractere într-o singură solicitare SELECTE employee.full name FROM employee WHERE (((emplee.full name) Like "D*");


Clauza GROUP BY SELECT listă de câmpuri din tabelul WHERE Condiție de selecție în care grupate Câmpurile sunt numele câmpurilor (până la 10) care sunt utilizate pentru gruparea înregistrărilor. Ordinea numelor câmpurilor în argumentul Câmpuri grupate determină nivelul de grupare pentru fiecare dintre acele câmpuri. Utilizați clauza WHERE pentru a exclude înregistrările din grupare și clauza HAVING pentru a aplica un filtru înregistrărilor după grupare. HAVING Când se utilizează clauza GROUP BY, toate câmpurile din lista de câmpuri a instrucțiunii SELECT trebuie fie să fie incluse în clauza GROUP BY, fie folosite ca argumente pentru o funcție de agregare SQL. Departamente cu mai mult de 5 angajați: SELECTAȚI colegi de muncă[Codul departamentului], Count(numele complet al colegilor) AS [Numărul de angajați] FROM colegs GROUP BY co-workers[codul departamentului] HAVING (((Count( numele complet al colegilor))>5 )); 5));">




Subinterogare. Predicatul există. SELECT companie angajat, Count(angajat angajat) AS număr_certificat_angajat FROM angajat WHERE (((Există (SELECT DISTINCT companie angajat, angajat angajat FROM angajat INNER JOIN instanță ON angajat angajat = angajat angajat))False)) GROUP BY co-working company; Fals)) GROUP BY companie deținută în comun;"> Fals)) GROUP BY companie deținută în comun;"> Fals)) GROUP BY companie deținută în comun;" title="Interogare imbricată. Predicat Există. SELECT co -companie deținută, Count(colaborator) AS număr_certificat_collaborator FROM colaborator WHERE (((Există (SELECT DISTINCT colaborator, colaborator FROM colaborator INNER JOIN instance ON colaborator = instanță colaborator))False)) GROUP BY firma colaboratoare;"> title="Subinterogare. Predicatul există. SELECT companie angajat, Count(angajat angajat) AS număr_certificat_angajat FROM angajat WHERE (((Există (SELECT DISTINCT companie angajat, angajat angajat FROM angajat INNER JOIN instanță ON angajat angajat = angajat angajat))False)) GROUP BY co-working company;"> !}








Crearea unei subinterogări utilizând QBE Query Builder Dacă utilizați o subinterogare pentru a defini condiții pentru un câmp, introduceți o instrucțiune SELECT în celula rândului Condiție de selecție din coloana acelui câmp. Instrucțiunea SELECT trebuie inclusă între paranteze.








Ștergerea intrărilor. Interogare SQL (generată) DELETE DISTINCTROW student.nume complet FROM student WHERE (((student.nume complet)="Burlak G. N.");


Declarație DELETE O solicitare de ștergere șterge înregistrări întregi, nu doar conținutul câmpurilor specificate. Pentru a șterge datele pentru un anumit câmp, creați o interogare de actualizare a înregistrărilor care înlocuiește valorile existente cu valori nule. O solicitare de ștergere fără condiții de căutare specificate va șterge toate înregistrările din tabel. Spre deosebire de comanda DROP, structura tabelului și toate proprietățile sunt păstrate


Ștergerea intrărilor. Interogare SQL Interogare: DELETE * FROM student WHERE student.Nume complet="Burlak G. N."; dă un rezultat similar.



















35





41



Access DBMS utilizează două tipuri de interogări: QBE – interogare după eșantion și SQL(Structured Query Language) - limbaj structurat de interogare. Un exemplu de cerere este generat prin completarea unui formular de cerere special în fereastra „Query Builder”. SQL – interogările sunt create de programatori dintr-o secvență de SQL – instrucțiuni. SQL este generat, de regulă, de către programatori pe un formular de interogare, care este deschis de comanda „Query Builder” din fila „Creation” și „SQL Mode” este selectat din meniul View. Limbajul SQL este conceput pentru a lucra cu date, de exemplu. pentru crearea, modificarea și gestionarea datelor în baze de date relaționale.

Trebuie remarcat faptul că există mai multe moduri de interogare SQL (interogări în mod ANSI-89 SQL și ANSI-92 SQL) care respectă standardele ANSI-89 SQL și ANSI-92 SQL.

Instrucțiunile conțin o descriere a setului de date în SQL. Instrucțiuni SQL constau din clauze (SELECT, FROM, WHERE etc.). promoțiiîn limbajul SQL constau din termeni (operatori sau comenzi, identificatori, constante etc.). Instrucțiunea începe cu o instrucțiune (una dintre comenzile SELECT, CREATE, INSERT, UPDATE, DELETE etc.) și se termină cu punct și virgulă. Instrucțiuni SQL de bază: SELECT, FROM și WHERE.

De exemplu, instrucțiunea SQL:
SELECT Students.StudentCode
DE LA Studenți;
constă din clauza „SELECT Students.StudentCode” și clauza „FROM Students”.

Clauza SELECT conține operator SELECT și identificator„Elevi.Codul elevului”. Aici numele complet al câmpului „StudentCode” este precedat de numele tabelului „Students” al bazei de date. SELECT - specifică câmpul care conține datele necesare. Clauza FROM constă dintr-o clauză FROM și identificatorul „Students”. FROM - definește un tabel care conține câmpurile specificate în clauza SELECT.

Trebuie remarcat faptul că atunci când creați o interogare în SQL, trebuie să luați în considerare sintaxa acesteia. În ciuda faptului că sintaxa limbajului SQL se bazează pe sintaxa limbii engleze, sintaxa versiunilor limbajului SQL poate diferi pentru diferite SGBD.

Există mai multe tipuri de interogări: selectarea, actualizarea, adăugarea și ștergerea înregistrărilor, interogare încrucișată, crearea și ștergerea tabelelor, alăturarea tabelelor etc. Cea mai comună este o cerere de eșantion. Interogările de selecție sunt folosite pentru a selecta informațiile conținute în tabelele de care utilizatorul are nevoie. Sunt create numai pentru tabelele înrudite.

Pentru a vizualiza interogări de interogare SQL în DBMS Access 2003 sau 2007, trebuie să executați comanda SQL View/Mode în fereastra activă pentru proiectarea unui exemplu de interogare (Fig. 1).


Orez. 1.

Să obținem o instrucțiune SQL (SELECT) pentru a eșantiona date din baza de date Access 2003 conform criteriului de performanță al elevilor „Grade=5” (Fig. 2).



Orez. 2.

După cum urmează din instrucțiunea SELECT (Fig. 1), aceasta descrie un set de date în limbaj SQL: SELECT - definește numele câmpurilor precedate de numele tabelelor care conțin datele; FROM - definește tabele și relațiile acestora prin câmpurile cheie ale tabelelor (pentru aceasta se folosește construcția INNER JOIN ... ON), pe baza cărora se selectează datele; WHREME - definește condițiile de selectare a câmpurilor; ORDER BY - determină modul în care se sortează în ordine crescătoare (în mod implicit se realizează ordine crescătoare) valorile câmpului „Nume” din tabelul „Studenți”.

După cum rezultă din instrucțiunile pentru preluarea datelor din baza de date, limbajul SQL descrie ceea ce trebuie obținut din baza de date, în timp ce execuția este încredințată SGBD, deoarece limbajul SQL nu are mijloace proprii de control al execuției programului.

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva