Exemple de interogări Ms sql. Interogări SQL simple - ajutor scurt și exemple. Programarea unui eveniment de clic pe butonul „Editare...”.

Ultima actualizare: 07/05/2017

În subiectul anterior, în SQL Management Studio a fost creată o bază de date simplă cu un singur tabel. Acum să definim și să executăm prima interogare SQL. Pentru a face acest lucru, deschideți SQL Management Studio, faceți clic dreapta pe elementul de nivel superior din Object Explorer (nume server) și selectați New Query din meniul contextual care apare:

După aceasta, se va deschide o fereastră pentru introducerea comenzilor SQL în partea centrală a programului.

Să rulăm o interogare pe tabelul care a fost creat în subiectul anterior, în special, vom obține toate datele din acesta. Baza noastră de date se numește universitate, iar tabelul este dbo.Students, așa că pentru a obține date din tabel introducem următoarea interogare:

SELECT * FROM university.dbo.Students

Instrucțiunea SELECT vă permite să selectați date. FROM specifică sursa de la care se preiau datele. De fapt, cu această interogare spunem „SELECTAȚI toate din tabelul university.dbo.Students”. Este de remarcat faptul că numele tabelului folosește calea sa completă indicând baza de date și schema.

După ce ați introdus cererea, faceți clic pe butonul Execute din bara de instrumente sau puteți apăsa tasta F5.

Ca urmare a executării interogării, în partea de jos a programului va apărea un mic tabel care va afișa rezultatele interogării - adică toate datele din tabelul Studenți.

Dacă trebuie să facem mai multe interogări asupra aceleiași baze de date, atunci putem folosi comanda USE pentru a comite baza de date. În acest caz, atunci când interogați tabele, este suficient să specificați numele acestora fără numele și schema bazei de date:

USE university SELECT * FROM Studenți

În acest caz, executăm interogarea ca întreg pentru server; putem accesa orice bază de date de pe server. Dar putem efectua interogări doar într-o anumită bază de date. Pentru a face acest lucru, faceți clic dreapta pe baza de date dorită și selectați Interogare nouă din meniul contextual:

Dacă în acest caz dorim să interogăm tabelul Studenți folosit mai sus, nu ar trebui să specificăm numele și schema bazei de date în interogare, deoarece aceste valori ar fi deja clare.

Expresii de tabel sunt numite subinterogări care sunt folosite acolo unde este de așteptat prezența unui tabel. Există două tipuri de expresii de tabel:

    tabele derivate;

    expresii de tabel generalizate.

Aceste două forme de expresii de tabel sunt discutate în următoarele subsecțiuni.

Tabele derivate

Tabel derivat este o expresie de tabel inclusă în clauza FROM a unei interogări. Tabelele derivate pot fi utilizate în cazurile în care utilizarea aliasurilor de coloană nu este posibilă deoarece traducătorul SQL procesează o altă instrucțiune înainte ca aliasul să fie cunoscut. Exemplul de mai jos arată o încercare de a utiliza un alias de coloană într-o situație în care o altă clauză este procesată înainte ca aliasul să fie cunoscut:

UTILIZAȚI SampleDb; SELECTARE MONTH(EnterDate) ca enter_month FROM Works_on GROUP BY enter_month;

Încercarea de a rula această interogare va produce următorul mesaj de eroare:

Mesajul 207, Nivel 16, Stare 1, Rând 5 Nume nevalid de coloană „enter_month”. (Mesajul 207: Nivelul 16, Stare 1, Linia 5 Nume de coloană nevalid enter_month)

Motivul erorii este că clauza GROUP BY este procesată înainte ca lista corespunzătoare a instrucțiunii SELECT să fie procesată, iar alias-ul coloanei enter_month este necunoscut când grupul este procesat.

Această problemă poate fi rezolvată folosind un tabel derivat care conține interogarea anterioară (fără clauza GROUP BY) deoarece clauza FROM este executată înaintea clauzei GROUP BY:

UTILIZAȚI SampleDb; SELECT enter_month FROM (SELECT MONTH(EnterDate) ca enter_month FROM Works_on) AS m GROUP BY enter_month;

Rezultatul acestei interogări va fi astfel:

De obicei, o expresie de tabel poate fi plasată oriunde într-o instrucțiune SELECT unde poate apărea un nume de tabel. (Rezultatul unei expresii de tabel este întotdeauna un tabel sau, în cazuri speciale, o expresie.) Exemplul de mai jos arată utilizarea unei expresii de tabel în lista select a unei instrucțiuni SELECT:

Rezultatul acestei interogări:

Expresii de tabel generice

Expresie comună de tabel (OTB) este o expresie de tabel cu nume acceptată de limbajul Transact-SQL. Expresiile comune de tabel sunt utilizate în următoarele două tipuri de interogări:

    nerecursiv;

    recursiv.

Aceste două tipuri de solicitări sunt discutate în secțiunile următoare.

OTB și interogări nerecursive

Forma nerecursivă a OTB poate fi utilizată ca alternativă la tabelele și vizualizările derivate. De obicei, OTB este determinată de CU clauzeși o interogare suplimentară care face referire la numele folosit în clauza WITH. În Transact-SQL, semnificația cuvântului cheie WITH este ambiguă. Pentru a evita ambiguitatea, instrucțiunea care precede instrucțiunea WITH trebuie terminată cu punct și virgulă.

UTILIZAȚI AdventureWorks2012; SELECTează SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") AND Freight > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader "Order05Due) =(OrderDate05) ")/2,5;

Interogarea din acest exemplu selectează comenzi ale căror taxe totale (TotalDue) sunt mai mari decât media tuturor taxelor și ale căror taxe de transport (Freight) sunt mai mari de 40% din taxele medii. Proprietatea principală a acestei interogări este lungimea sa, deoarece subinterogarea trebuie scrisă de două ori. O modalitate posibilă de a reduce cantitatea de construcție a interogării este de a crea o vizualizare care conține o subinterogare. Dar această soluție este puțin complicată deoarece necesită crearea unei vizualizări și apoi ștergerea acesteia după ce interogarea s-a terminat de executat. O abordare mai bună ar fi crearea unui OTB. Exemplul de mai jos arată utilizarea OTB non-recursivă, care scurtează definiția interogării de mai sus:

UTILIZAȚI 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_2005 FROM price >_CAL_2_CAL)_2 Freight price (SELECT) ) /2,5;

Sintaxa clauzei WITH în interogările nerecursive este următoarea:

Parametrul cte_name reprezintă numele OTB care definește tabelul rezultat, iar parametrul column_list reprezintă lista de coloane din expresia tabelului. (În exemplul de mai sus, OTB se numește price_calc și are o coloană, year_2005.) Parametrul inner_query reprezintă o instrucțiune SELECT care specifică setul de rezultate al expresiei de tabel corespunzătoare. Expresia de tabel definită poate fi apoi utilizată în interogarea_exterioară. (Interogarea exterioară din exemplul de mai sus utilizează OTB price_calc și coloana sa year_2005 pentru a simplifica interogarea dublu imbricată.)

OTB și interogări recursive

Această secțiune prezintă material de complexitate crescută. Prin urmare, atunci când îl citiți pentru prima dată, este recomandat să îl săriți peste el și să reveniți la el mai târziu. OTB-urile pot fi folosite pentru a implementa recursiuni deoarece OTB-urile pot conține referințe la ei înșiși. Sintaxa de bază OTB pentru o interogare recursivă arată astfel:

Parametrii cte_name și column_list au aceeași semnificație ca în OTB pentru interogările nerecursive. Corpul unei clauze WITH este format din două interogări combinate de către operator UNIREA TOȚI. Prima interogare este apelată o singură dată și începe să acumuleze rezultatul recursiunii. Primul operand al operatorului UNION ALL nu face referire la OTB. Această interogare se numește interogare de referință sau sursă.

A doua interogare conține o referință la OTB și reprezintă partea sa recursivă. Din această cauză, se numește membru recursiv. În primul apel către partea recursivă, referința OTB reprezintă rezultatul interogării de referință. Membrul recursiv folosește rezultatul primului apel de interogare. După aceasta, sistemul apelează din nou partea recursivă. Un apel către un membru recursiv se oprește atunci când un apel anterior la acesta returnează un set de rezultate gol.

Operatorul UNION ALL se alătură rândurilor acum acumulate, precum și rândurilor suplimentare adăugate de apelul curent membrului recursiv. (Prezența operatorului UNION ALL înseamnă că rândurile duplicate nu vor fi eliminate din rezultat.)

În cele din urmă, parametrul outer_query specifică interogarea exterioară pe care OTB o folosește pentru a prelua toate apelurile la unirea ambilor membri.

Pentru a demonstra forma recursivă a OTB, folosim tabelul Avion definit și populat cu codul prezentat în exemplul de mai jos:

UTILIZAȚI SampleDb; CREATE TABLE Airplane(ContainingAssembly VARCHAR(10), ContainedAssembly VARCHAR(10), QuantityContained INT, UnitCost DECIMAL(6,2)); INSERT INTO Airplane VALUES ("Avion", "Fuselaj", 1, 10); INSERT INTO Airplane VALUES ("Avion", "Aripi", 1, 11); INSERT INTO Airplane VALUES ("Avion", "Coada", 1, 12); INSERT INTO Airplane VALUES („Fuselaj”, „Salon”, 1, 13); INSERT INTO Airplane VALUES ("Fuselaj", "Cockpit", 1, 14); INSERT INTO Airplane VALUES ("Fuselaj", "Nas", 1, 15); INSERT INTO Airplane VALUES ("Cabină", ​​NULL, 1,13); INSERT INTO Airplane VALUES ("Cockpit", NULL, 1, 14); INSERT INTO Airplane VALUES („Nas”, NULL, 1, 15); INSERT INTO Airplane VALUES ("Aripi", NULL,2, 11); INSERT INTO Airplane VALUES ("Coada", NULL, 1, 12);

Tabelul Avion are patru coloane. Coloana ContainingAssembly identifică ansamblul, iar coloana ContainingAssembly identifică părțile (una câte una) care alcătuiesc ansamblul corespunzător. Figura de mai jos prezintă o ilustrare grafică a unui posibil tip de aeronavă și a părților sale componente:

Tabelul Avion este format din următoarele 11 rânduri:

Următorul exemplu utilizează clauza WITH pentru a defini o interogare care calculează costul total al fiecărei build:

UTILIZAȚI SampleDb; WITH list_of_parts(assembly1, amount, cost) AS (SELECT ContainingAssembly, QuantityContained, UnitCost FROM Airplane WHERE ContainedAssembly IS NULL UNION ALL SELECT a.ContainingAssembly, a.QuantityContained, CAST(l.cantity * l.cost AS DECIMAL) ) FROM list_of_pieces l, Avion a WHERE l.assembly1 = a.ContainedAssembly) SELECT assembly1 "Piesă", cantitate "Cantitate", cost "Preț" FROM list_of_pieces;

Clauza WITH definește o listă OTB numită list_of_parts, constând din trei coloane: asamblare1, cantitate și cost. Prima instrucțiune SELECT din exemplu este apelată o singură dată pentru a stoca rezultatele primului pas al procesului recursiv. Instrucțiunea SELECT de pe ultima linie a exemplului afișează următorul rezultat.

SQL - Limbajul de interogare structurat.
În această recenzie ne vom uita la cele mai comune tipuri de interogări SQL.
Este definit standardul SQL ANSI(Institutul Național American de Standarde).
SQL este un limbaj destinat în mod special bazelor de date relaționale.

Partitionare SQL:


DDL
(Limbajul de definire a datelor) - așa-numitul Schema Description Language în ANSI, constă în comenzi care creează obiecte (tabele, indexuri, vizualizări și așa mai departe) în baza de date.
DML(Limbajul de manipulare a datelor) este un set de comenzi care determină ce valori sunt reprezentate în tabele la un moment dat.
DCD(Limbajul de gestionare a datelor) constă în facilități care determină dacă să permită unui utilizator să efectueze sau nu anumite acțiuni. Ele fac parte din ANSI DDL. Nu uitați aceste nume. Acestea nu sunt limbi diferite, ci secțiuni de comenzi SQL grupate după funcțiile lor.

Tipuri de date:

SQL Server - Tipuri de date

Descriere

bigint (int 8)

bigint (int 8)

binar(n)

binar(n) sau imagine

caracter
(sinonim char)

naţional caracter sau ntext

caracterul variind(sinonim char variind varchar)

caracter naţional variabil sau ntext

Datetime

datetime

zecimal

aka numeric

precizie dubla

precizie dubla

întreg (int 4) (sinonim: int)

întreg (int 4)

caracter national(sinonim: caracter national, nchar)

caracter national

Numeric(sinonime: zecimal, dec)

caracter naţional variabil(sinonime: cărbune național variind, nvarchar)

Caracter național variabil

Smalldatetime

datetime

smallint (int 2)

smallint (int 2)

Bani mici

sql_variant

Nu mai este suportat

Ntext
Începând cu SQL Server 2005, nu este recomandat pentru utilizare.

Timestamp-ul

Nu sunt acceptate

tinyint (int 1)

tinyint (int 1)

Identificator unic

identificator unic

varbinar(n)

varbinar(n) sau imagine

smalldatetime

datetime

smallint (int 2)

smallint (int 2)

bani mici

sql_variant

Nu sunt acceptate

timestamp-ul

Nu sunt acceptate

tinyint (int 1)

tinyint (int 1)

identificator unic

identificator unic

varbinar(n)

varbinar(n) sau imagine

Tabel cu tipuri de date în SQL Server 2000

CE ESTE O CERERE?

Cerere este o comandă pe care o dați programului dumneavoastră de bază de date. Interogările fac parte din limbajul DML. Toate interogările SQL constau într-o singură comandă. Structura acestei comenzi este înșelător de simplă, deoarece trebuie să o extindeți pentru a efectua evaluări extrem de complexe și manipulări de date.

Comanda SELECT:

SELECTAȚI„Selectați” este comanda cel mai des folosită; este folosită pentru a selecta date din tabel.
Tip de interogare folosind SELECT:

SELECT ID, user_name, city, birth_day FROM users_base;

O astfel de interogare va afișa din tabelul users_base toate valorile coloanelor specificate separate prin virgule după comanda SELECT. De asemenea, puteți afișa toate coloanele cu un singur caracter, * i.e. SELECT * FROM useri_base ; - o astfel de interogare va afișa toate datele din tabel.

Structura comenzii SELECT:

SELECT (Numele coloanelor separate prin virgule care trebuie afișate în interogare) FROM (numele tabelului în baza de date)
- Acesta este cel mai simplu tip de cerere. Există comenzi suplimentare pentru recuperarea convenabilă a datelor (vezi mai jos „Funcții”)

Comenzi DML:

Valorile pot fi plasate și eliminate din câmpuri folosind trei comenzi DML (Data Manipulation Language):
INTRODUCE(Introduce)
ACTUALIZAȚI(Actualizare, modificare),
ȘTERGE(Șterge)

Comanda INSERT:

INSERT INTO users_base (nume_utilizator, oraș, ziua_nașterii) VALUES ('Alexander', 'Rostov', '20/06/1991');

Comanda INSERT vine cu prefixul INTO (în to), apoi între paranteze sunt numele coloanelor în care trebuie să inserăm date, apoi vine comanda VALUES (valori) iar între paranteze valorile vin pe rând (este necesar să respectați ordinea valorilor cu coloanele, valorile trebuie să fie în aceeași ordine cu coloanele pe care le-ați specificat).

Comanda UPDATE:

UPDATE users_base SET user_name = 'Alexey';

Comanda UPDATE actualizează valorile într-un tabel. Mai întâi vine comanda UPDATE propriu-zisă, apoi numele tabelului, după comanda SET (set), apoi numele coloanei și valoarea acesteia între ghilimele (ghilimelele se pun dacă valoarea este în format șir, dacă este o valoare numerică și coloana nu este legat de tipul de date vchar sau de alte tipuri de șir, ghilimele nu au nicio semnificație.)

Comanda DELETE:

DELETE FROM users_base WHERE user_name = 'Vasily';

Comanda DELETE șterge întregul rând și identifică rândul folosind criteriul WHERE. În acest caz, această interogare ar șterge toate rândurile în care valoarea coloanei user_name era Vasily. Despre criteriul UNDE și altele vom vorbi puțin mai târziu.

Criterii, funcții, condiții etc. ce ne ajută în SQL:

Clauza WHERE este o clauză a comenzii SELECT și a altor comenzi DML care vă permite să setați predicate a căror condiție poate fi adevărată sau falsă pentru orice rând din tabel. Comanda preia numai acele rânduri din tabel pentru care această afirmație este adevărată.
Exemplu:
SELECT ID, oraș, ziua_nașterii FROM utilizatori_bază WHERE nume_utilizator = ‘Alexey’;- o astfel de interogare va afișa doar acele rânduri care se potrivesc cu condiția WHERE și anume toate rândurile în care coloana user_name are valoarea Alexey.

ORDER BY - condiție pentru sortarea rândurilor selectate. Are 2 criterii ASC și DESC. ASC (sortarea de la A la Z sau de la 0 la 9)

DESC (opusul ASC).
Exemplu:
SELECTează id, oraș, ziua_nașterii FROM utilizatori_bază ORDER BY user_name ASC; - o astfel de interogare va afișa valori sortate după coloana user_name de la A la Z (A-Z; 0-9)

Această condiție poate fi folosită și împreună cu clauza WHERE.
Exemplu:
SELECTează id, oraș, ziua_nașterii FROM utilizatori_bază WHERE nume_utilizator = ‘Alexey’ ORDER BY id ASC;

DISTINCT este un argument care vă oferă o modalitate de a elimina valorile duble din clauza dvs. SELECT. Acestea. dacă aveți valori duplicate într-o coloană, să spunem user_name, atunci DISTINCT vă va arăta o singură valoare, de exemplu, aveți 2 persoane numite Alexey în baza de date, atunci o interogare folosind funcția DISTINCT vă va arăta doar o valoare asta se intalneste prima...
Exemplu:
SELECTAȚI DISTINCT nume_utilizator FROM utilizatori_bază;- o astfel de interogare ne va arăta valorile tuturor înregistrărilor din coloana user_name, dar acestea nu vor fi repetate, de exemplu. dacă ați avut un număr infinit de valori care se repetă, atunci acestea nu vor fi afișate...

ȘI - ia ca argumente două booleene (în forma A ȘI B) și le evaluează în raport cu adevărul dacă ambele sunt adevărate.
Exemplu:
SELECT * FROM users_base WHERE city = 'Rostov' AND user_name = 'Alexander';- va afișa toate valorile din tabelul în care numele orașului apare într-un singur rând (în acest caz, Rostov și numele de utilizator Alexander.

SAU - ia ca argumente două booleene (sub forma A SAU B) și evaluează dacă unul dintre ele este corect.

SELECT * FROM users_base WHERE oraș = 'Rostov' SAU user_name = 'Alexander';- va afișa toate valorile din tabelul în care apare numele orașului Rostov sau numele de utilizator Alexander în rând.

NOT - ia un singur boolean (sub forma NOT A) ca argumente și își schimbă valoarea din false în adevărat sau adevărat în fals.
SELECT * FROM users_base WHERE city = 'Rostov' OR NOT user_name = 'Alexander';- va afișa toate valorile din tabelul în care numele orașului Rostov apare într-un rând sau numele de utilizator nu este exact Alexander.

IN - definește un set de valori în care o anumită valoare poate fi inclusă sau nu.
SELECT * FROM users_base WHERE city IN ('Vladivostok', 'Rostov');- o astfel de interogare va afișa toate valorile din tabel care conțin numele orașelor specificate în coloana orașului

Between este similar cu operatorul IN. Spre deosebire de definirea prin numere dintr-o mulțime, așa cum face IN, BETWEEN definește un interval ale cărui valori trebuie să scadă pentru a face predicatul adevărat.
SELECT * FROM users_base WHERE id-ul INTRE 1 SI 10;- afișează toate valorile din tabel care vor fi în intervalul de la 1 la 10 în coloana id

COUNT - Produce numerele de rând sau valorile non-NULL ale câmpurilor pe care le-a selectat interogarea.
SELECTARE NUMĂR (*) FROM utilizatori_bază ;- va afișa numărul de rânduri din acest tabel.
SELECTAȚI NUMĂR (DISTINCT nume_utilizator) FROM utilizatori_bază ;- va afișa numărul de linii cu nume de utilizator (nu se repetă)

SUM - produce suma aritmetică a tuturor valorilor selectate pentru un anumit câmp.
SELECTAȚI SUMA (id) FROM utilizatori_bază;- va afișa suma valorilor tuturor rândurilor coloanei id.

AVG - face media tuturor valorilor selectate ale acestui câmp.
SELECTAȚI AVG (id) FROM users_base ;- va afișa media tuturor valorilor selectate din coloana id

MAX - produce cea mai mare dintre toate valorile selectate pentru acest câmp.

MIN - produce cea mai mică dintre toate valorile selectate pentru acest câmp.

Crearea tabelelor:

CREATE TABLE utilizatori_bază (ID întreg, text nume_utilizator, text oraș, data_ziuă_naștere);- executarea unei astfel de comenzi va duce la crearea tabelului pentru care am dat exemple... Totul este simplu aici, scriem comanda CREATE TABLE, urmata de numele tabelului pe care vrem sa il cream, apoi intre paranteze, separate prin virgule, numele coloanelor și tipul lor de date. Acesta este modul standard de a crea un tabel în SQL. Acum voi da un exemplu de creare de tabele în SQL Server 2005:

ACTIVATĂ ANSI_NULLS
MERGE
ACTIVATĂ QUOTED_IDENTIFIER
MERGE
DACĂ NU EXISTĂ (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N."") ȘI introduceți (N"U"))
ÎNCEPE
CREATE TABLE .(

NU NUL,
NU NUL,
NU NUL,
CHEIE PRIMARĂ CLUSTER
A.S.C.


Sfârşit
MERGE
ACTIVATĂ ANSI_NULLS
MERGE
ACTIVATĂ QUOTED_IDENTIFIER
MERGE
DACĂ NU EXISTĂ (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N."") ȘI introduceți (N"U"))
ÎNCEPE
CREATE TABLE .(
IDENTITATE(1,1) NU NUL,
NUL,
NUL,
CHEIE PRIMARĂ CLUSTER
A.S.C.
)CU (IGNORE_DUP_KEY = OFF) PORNIT
) ON TEXTIMAGE_ON
Sfârşit
MERGE
ACTIVATĂ ANSI_NULLS
MERGE
ACTIVATĂ QUOTED_IDENTIFIER
MERGE
DACĂ NU EXISTĂ (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N."") ȘI introduceți (N"U"))
ÎNCEPE
CREATE TABLE .(
IDENTITATE(1,1) NU NUL,
NUL,
NUL,
CHEIE PRIMARĂ CLUSTER
A.S.C.
)CU (IGNORE_DUP_KEY = OFF) PORNIT
) PE
Sfârşit

Sintaxa în SQL Server 2005 este un alt subiect, am vrut doar să arăt că am descris elementele de bază ale programării SQL, puteți ajunge la vârf de unul singur cunoscând elementele de bază.

Dacă aveți întrebări pe această temă, vă rog să-mi scrieți

Un exemplu de creare a unei interogări (Interogare) într-o bază de date MS SQL Server. Baza de date este localizată într-un fișier local *.mdf

Sarcina

A fost specificată o bază de date, care se află în fișierul Education.mdf. Baza de date conține două tabele interconectate Student și Session.

Tabelele sunt legate între ele prin câmpul ID_Book.

Folosind instrumentele Microsoft Visual Studio, creați o interogare numită Query1, care va avea următoarea structură:

Numele domeniului Masa
Num_Carte Student
Nume Student
Matematică Sesiune
Informatica Sesiune
Filozofie Sesiune
In medie Câmpul de calcul

Execuție (instrucțiuni pas cu pas)

1. Descărcați Microsoft Visual Studio
2. Conectați baza de date Education.mdf la lista de baze de date din utilitarul Server Explorer

Pentru a nu pierde timpul cu elaborarea și legarea tabelelor din baza de date Education.mdf, se poate descărca o arhivă a unei baze de date pregătite anterior. După descărcarea și salvarea într-un anumit folder, baza de date trebuie să fie dezarhivată și conectată la lista de baze de date din utilitarul Server Explorer.

Conectarea unei baze de date este implementată într-unul din mai multe moduri standard:

  • selectând comanda „Conectare la baza de date...” din meniul Instrumente;
  • selectând butonul (comandă) „Conectează-te la baza de date...” din utilitarul Server Explorer.

Ca urmare, se va deschide o fereastră de expert în care, folosind mai mulți pași (ferestre), trebuie să configurați conexiunea la baza de date.

Orez. 1. Metode de adăugare/conectare a unei baze de date

O descriere detaliată a modului de conectare a unei baze de date, cum ar fi Microsoft SQL Server în Microsoft Visual Studio, este dată în subiect:

  • Exemplu de creare/conectare eu baza de date locală Microsoft SQL Server, care se află într-un fișier *.mdf

După conectare, fereastra utilitarului Server Explorer va arăta ca în figura 2.

Orez. 2. Utilitar Server Explorer cu baza de date Education.mdf conectată

3. Adăugarea unei noi solicitări. Noua echipă de interogări

Puteți crea interogări în baza de date. În cazul nostru, trebuie să creăm o cerere în conformitate cu condițiile sarcinii.

Interogarea este creată folosind comanda „New Query”, care este apelată din meniul contextual (Figura 3). Pentru a apela comanda, faceți clic dreapta în zona de câmp care este evidențiată pentru afișarea elementelor bazei de date Education.mdb. Trebuie remarcat faptul că cererile nu sunt salvate de sistem. Vizualizările sunt folosite pentru a afișa interogări salvate (complexe).

Figura 3 arată meniul contextual care este apelat când faceți clic pe fila Vizualizări. În acest meniu trebuie să selectați comanda „Interogare nouă”. Această comandă se află în lista meniurilor contextuale ale altor componente ale bazei de date (tabele, diagrame etc.).

Orez. 3. Comanda interogare nouă

Ca urmare, se va deschide fereastra „Adăugați tabel”, în care trebuie să selectați tabelele ale căror date vor fi utilizate în interogare (Figura 4).

Orez. 4. Selectarea tabelelor care vor fi utilizate în interogare

Pentru cazul nostru, trebuie să selectăm ambele tabele.

Ca rezultat, fereastra Microsoft Visual Studio va arăta ca în figura 5.

Orez. 5. Fereastra MS Visual Studio după crearea unei cereri

În tabele, trebuie să selectați câmpurile care vor fi utilizate în interogare. Ordinea în care sunt selectate câmpurile trebuie să corespundă modului în care sunt afișate în cerere, în conformitate cu condițiile sarcinii. Aceasta înseamnă că mai întâi sunt selectate câmpurile din tabelul Student (NumBook, Nume), iar apoi sunt selectate câmpurile din tabelul Session (Matematică, Informatică, Filosofie).

Pentru cazul nostru, alegerea câmpurilor este prezentată în Figura 6.

Orez. 6. Selectarea câmpurilor pentru cerere

După cum se poate observa din Figura 6, o interogare în limbaj SQL generată de sistem este afișată în partea de jos a ferestrei

SELECTAȚI Student.Num_Book, Student.Nume, Session.Mathematics, Session.Informatics, Session.Philosophy DIN
4. Adăugați un câmp calculat Media

Pentru a crea un câmp calculat Media , trebuie să modificați textul acestei interogări în fereastra în care este afișată interogarea SQL. De exemplu:

SELECTAȚI Student.Num_Book, Student.Name, Session.Mathematics, Session.Informatics, Session.Philosophy, (Session.Mathematics + Session.Mathematics + Session.Informatics + Session.Philosophy) / 3.0 AS Medie DIN Sesiune INNER JOIN Student ON Session.ID_Book = Student.ID_Book

Se adaugă câmpul de calcul Media, care este media aritmetică (Figura 7).

Interogările din Access sunt instrumentul principal pentru selectarea, actualizarea și procesarea datelor în tabelele bazei de date. Access, în conformitate cu conceptul de baze de date relaționale, folosește SQL (Structured Query Language) pentru a executa interogări. Folosind instrucțiunile limbajului SQL, orice interogare în Access este implementată.

Principalul tip de cerere este o cerere de selecție. Rezultatul acestei interogări este un tabel nou care există până când interogarea este închisă. Înregistrările sunt formate prin combinarea înregistrărilor tabelelor pe care se bazează interogarea. Metoda de combinare a înregistrărilor de tabel este specificată la definirea relației lor în schema de date sau la crearea unei interogări. Condițiile de selecție formulate în interogare vă permit să filtrați înregistrările care alcătuiesc rezultatul îmbinării tabelelor.

În Access pot fi create mai multe tipuri de interogări:

  • cerere de mostra- selectează datele dintr-un tabel sau interogare sau mai multe tabele interdependente și alte interogări. Rezultatul este un tabel care există până când interogarea este închisă. Înregistrările tabelului de rezultate sunt generate în conformitate cu condițiile de selecție specificate și atunci când se utilizează mai multe tabele prin combinarea înregistrărilor acestora;
  • cerere de creare a unui tabel- selectează datele din tabele interconectate și din alte interogări, dar, spre deosebire de o interogare select, stochează rezultatul într-un nou tabel permanent;
  • solicitări de actualizare, adăugare, ștergere- sunt cereri de acțiune, în urma cărora datele din tabele sunt modificate.

Interogările din Access în modul proiectare conțin o schemă de date care afișează tabelele utilizate și un formular de interogare în care sunt proiectate structura tabelului de interogare și condițiile de selectare a înregistrărilor (Fig. 4.1).

Folosind o interogare, puteți efectua următoarele tipuri de prelucrare a datelor:

  • includeți câmpuri de tabel selectate de utilizator în tabelul de interogări;
  • efectuați calcule în fiecare dintre înregistrările primite;
  • selectați înregistrări care îndeplinesc condițiile de selecție;
  • creați un nou tabel virtual bazat pe combinarea înregistrărilor de tabele interconectate;
  • înregistrările grupului care au aceleași valori în unul sau mai multe câmpuri, îndeplinesc simultan funcții statistice pe alte câmpuri ale grupului și, ca urmare, includ o înregistrare pentru fiecare grup;
  • creați un nou tabel de bază de date folosind date din tabelele existente;
  • actualizați câmpurile dintr-un subset selectat de înregistrări;
  • ștergeți un subset selectat de înregistrări dintr-un tabel al bazei de date;
  • adăugați un subset selectat de înregistrări la un alt tabel.

Interogările din Access servesc ca surse de înregistrare pentru alte interogări, formulare și rapoarte. Folosind o interogare, puteți colecta informații complete pentru a genera un anumit document de domeniu din mai multe tabele, apoi îl puteți utiliza pentru a crea un formular - o reprezentare electronică a acestui document. Dacă un formular sau un raport este creat de către vrăjitor pe baza mai multor tabele interconectate, atunci o interogare este generată automat pentru acestea ca sursă de înregistrări.
Pentru a consolida acest lucru, urmăriți tutorialul video.

  • Serghei Savenkov

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