Ms sql server scris interogări. Executarea interogărilor SQL în Management Studio. Adăugarea unui câmp calculat în medie

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. Unul dintre moduri posibile a reduce dimensiunea constructului de interogare ar fi să creați o vizualizare care să conțină 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 ("Nasul", 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 sau Structured Query Language este un limbaj utilizat pentru gestionarea datelor într-un sistem de baze de date relaționale (RDBMS). Acest articol va acoperi cele utilizate în mod obișnuit Comenzi SQL, cu care fiecare programator ar trebui să fie familiarizat. Acest material este ideal pentru cei care doresc să-și perfecționeze cunoștințele de SQL înainte de un interviu de angajare. Pentru a face acest lucru, uitați-vă la exemplele date în articol și amintiți-vă că ați studiat bazele de date în perechi.

Rețineți că unele sisteme de baze de date necesită un punct și virgulă la sfârșitul fiecărei instrucțiuni. Punctul și virgulă este indicatorul standard la sfârșitul fiecărei instrucțiuni în SQL. Exemplele folosesc MySQL, deci este necesar un punct și virgulă.

Configurarea unei baze de date pentru exemple

Creați o bază de date pentru a demonstra cum funcționează echipele. Pentru a funcționa, va trebui să descărcați două fișiere: DLL.sql și InsertStatements.sql. După aceea, deschideți un terminal și conectați-vă la consola MySQL folosind următoarea comandă (articolul presupune că MySQL este deja instalat pe sistem):

Mysql -u root -p

Apoi introduceți parola.

Rulați următoarea comandă. Să numim baza de date „universitate”:

CREAȚI BAZĂ DE DATE universitate; USE universitate; SURSĂ ; SURSĂ

Comenzi pentru lucrul cu baze de date

1. Vizualizați bazele de date disponibile

AFIȘAȚI BAZELE DE DATE;

2. Creați o nouă bază de date

CREAȚI BAZĂ DE DATE;

3. Selectarea unei baze de date de utilizat

UTILIZARE ;

4. Importați comenzi SQL dintr-un fișier .sql

SURSĂ ;

5. Ștergeți baza de date

DROP BAZA DE DATE ;

Lucrul cu tabele

6. Vizualizați tabelele disponibile în baza de date

Arata tabele;

7. Creați un tabel nou

CREAȚI TABEL ( , , CHEIA PRINCIPALA ( ), CHEIE EXTERNĂ ( ) REFERINȚE ());

Constrângeri de integritate atunci când utilizați CREATE TABLE

Poate fi necesar să creați restricții pentru anumite coloane dintr-un tabel. Când creați un tabel, puteți seta următoarele restricții:

  • o celulă de tabel nu poate avea o valoare NULL;
  • cheie primară - CHEIE PRIMARĂ (nume_coloană1, nume_col_2, ...) ;
  • cheie străină - FOREIGN KEY (col_namex1, …, col_namexn) REFERINȚE table_name(col_namex1, …, col_namexn) .

Puteți specifica mai multe chei primare. În acest caz, veți obține o cheie primară compusă.

Exemplu

Creați un tabel „instructor”:

CREATE TABLE instructor (ID CHAR(5), nume VARCHAR(20) NOT NULL, dept_name VARCHAR(20), salariu NUMERIC(8,2), PRIMARY KEY (ID), FOREIGN KEY (dept_name) REFERENCE departament(dept_name));

8. Informații din tabel

Puteți vizualiza diverse informații (tip de valoare, cheie sau nu) despre coloanele din tabel cu următoarea comandă:

DESCRIE ;

9. Adăugarea datelor la tabel

INTRODU IN (, , , ...) VALORI ( , , , …);

Când adăugați date în fiecare coloană dintr-un tabel, nu este necesar să specificați numele coloanelor.

INTRODU IN VALORI ( , , , …);

10. Actualizarea datelor tabelului

ACTUALIZAȚI A STABILIT = , = , ... UNDE ;

11. Eliminarea tuturor datelor din tabel

ȘTERGERE DIN ;

12. Ștergeți un tabel

DROP TABLE ;

Comenzi pentru crearea de interogări

13. SELECT

SELECT este folosit pentru a prelua date dintr-un anumit tabel:

SELECTAȚI , , … DE LA ;

Următoarea comandă poate afișa toate datele din tabel:

ALEGE DIN ;

14. SELECTAȚI DISTINCT

Coloanele din tabel pot conține date duplicat. Utilizați SELECT DISTINCT pentru a prelua numai date neduplicate.

SELECTARE DISTINCT , , … DE LA ;

15. UNDE

Puteți utiliza cuvântul cheie WHERE din SELECT pentru a specifica condiții într-o interogare:

SELECTAȚI , , … DE LA UNDE ;

Următoarele condiții pot fi specificate în cerere:

  • compararea textului;
  • compararea valorilor numerice;
  • operatori logici ȘI (și), SAU (sau) și NU (negație).

Exemplu

Încercați următoarele comenzi. Acordați atenție condițiilor specificate în UNDE:

SELECT * FROM curs WHERE dept_name=’Comp. Sci.'; SELECT * FROM curs WHERE credite>3; SELECT * FROM curs WHERE dept_name="Comp. Sci." SI credite>3;

16. GROUP BY

Operatorul GROUP BY este adesea folosit cu funcții agregate cum ar fi COUNT, MAX, MIN, SUM și AVG pentru a grupa valorile de ieșire.

SELECTAȚI , , … DE LA A SE GRUPA CU ;

Exemplu

Să afișăm numărul de cursuri pentru fiecare facultate:

SELECT COUNT(course_id), dept_name FROM curs GROUP BY dept_name;

17. AVÂND

Cuvântul cheie HAVING a fost adăugat la SQL deoarece WHERE nu poate fi utilizat cu funcții agregate.

SELECTAȚI , , ... DIN A SE GRUPA CU AVÂND

Exemplu

Să afișăm o listă de facultăți care au mai multe cursuri:

SELECTAȚI COUNT(codul_curs), nume_dept FROM GRUPUL cursului BY numele_departament HAVING COUNT(id_curs)>1;

18. COMANDA PENTRU

ORDER BY este folosit pentru a sorta rezultatele interogărilor în ordine descrescătoare sau crescătoare. ORDER BY va sorta în ordine crescătoare, dacă nu este specificat ASC sau DESC.

SELECTAȚI , , … DE LA COMANDA PENTRU , , …ASC|DESC;

Exemplu

Să afișăm o listă de cursuri în ordinea crescătoare și descrescătoare a creditelor:

SELECTAȚI * DIN curs ORDENAȚI PENTRU credite; SELECTAȚI * DIN curs ORDENAȚI PE credite DESC;

19. ÎNTRE

BETWEEN este utilizat pentru a selecta valorile datelor dintr-un interval specific. Numerice și valorile textului, precum și datele.

SELECTAȚI , , … DE LA UNDE ÎNTRE ȘI ;

Exemplu

Să afișăm o listă de instructori al căror salariu este mai mare de 50.000, dar mai mic de 100.000:

SELECT * FROM instructor WHERE salariu INTRE 50000 SI 100000;

20. LIKE

Operatorul LIKE este folosit în WHERE pentru a specifica un model de căutare pentru o valoare similară.

Există doi operatori gratuiti care sunt utilizați în LIKE:

  • % (niciunul, unul sau mai multe caractere);
  • _ (un caracter).
SELECTAȚI , , … DE LA UNDE CA ;

Exemplu

Să afișăm o listă de cursuri ale căror nume conțin „către” și o listă de cursuri ale căror nume încep cu „CS-”:

SELECTAȚI * FROM curs WHERE titlul LIKE ‘%to%’; SELECT * FROM curs WHERE curs_id LIKE „CS-___”;

21. IN

Folosind IN puteți specifica mai multe valori pentru clauza WHERE:

SELECTAȚI , , … DE LA UNDE IN ( , , …);

Exemplu

Să afișăm o listă de studenți de la Comp major. Sci., Fizică și Elec. ing.:

SELECT * FROM student WHERE nume_dept IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');

22. ÎNSCRIEȚI-VĂ

JOIN este folosit pentru a lega două sau mai multe tabele folosind atribute comune în cadrul acestora. Imaginea de mai jos arată diferite căi se alătură în SQL. Observați diferența dintre o îmbinare exterioară stângă și o îmbinare exterioară dreaptă:

SELECTAȚI , , … DE LA A TE ALATURA PE = ;

Exemplul 1

Vom afișa o listă cu toate cursurile și informații relevante despre facultăți:

SELECT * FROM curs JOIN departament ON curs.dept_name=department.dept_name;

Exemplul 2

Vom afișa o listă cu toate cursurile necesare și detalii despre acestea:

SELECT prereq.course_id, titlu, dept_name, credite, prereq_id FROM prereq LEFT OUTER JOIN curs ON prereq.course_id=course.course_id;

Exemplul 3

Vom afișa o listă cu toate cursurile, indiferent dacă sunt obligatorii sau nu:

SELECTează curs.course_id, titlu, dept_name, credite, prereq_id FROM prereq RIGHT OUTER JOIN curs ON prereq.course_id=course.course_id;

23. Vedere

View este un tabel SQL virtual creat ca rezultat al executării unei expresii. Conține rânduri și coloane și este foarte asemănător cu un tabel SQL obișnuit. Vizualizare afișează întotdeauna cele mai recente informații din baza de date.

Creare

CREATE VIEW AS SELECT , , … DE LA UNDE ;

Îndepărtarea

DROP VIEW ;

Exemplu

Să creăm o vizualizare formată din cursuri cu 3 credite:

24. Funcții agregate

Aceste funcții sunt folosite pentru a obține un rezultat agregat legat de datele în cauză. Următoarele sunt funcții agregate utilizate în mod obișnuit:

  • COUNT (nume_col) - returnează numărul de rânduri;
  • SUM (nume_col) - returnează suma valorilor din această coloană;
  • AVG (col_name) - returnează valoarea medie a unei anumite coloane;
  • MIN (col_name) - returnează cea mai mică valoare a unei anumite coloane;
  • MAX (nume_col) - Returnează cea mai mare valoare a unei anumite coloane.

25. Subinterogări imbricate

Subinterogările imbricate sunt interogări SQL care includ clauze SELECT , FROM și WHERE imbricate într-o altă interogare.

Exemplu

Să găsim cursuri care au fost predate în toamna lui 2009 și primăvara lui 2010:

SELECT DISTINCT curs_id FROM secțiunea WHERE semestru = „Toamnă” ȘI anul= 2009 ȘI curs_id IN (SELECTARE curs_id FROM secțiunea WHERE semestru = „Primăvara” ȘI anul= 2010);

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 frecvent utilizată; 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ă comenzi SELECT. De asemenea, puteți afișa toate coloanele cu un singur caracter, * i.e. SELECT * FROM utilizatori_bază; - 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:
SELECTAȚI id, orașul, 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 utilizatori_bază;- 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

Dezvoltați o aplicație care demonstrează operațiunile de bază asupra datelor dintr-o bază de date precum MS SQL Server, și anume:

  • conectarea bazei de date la aplicație;
  • afișarea tabelelor bazei de date pe formular;
  • plus intrare nouă la baza de date;
  • editarea unei înregistrări;
  • ștergerea unei intrări.

Ca bază este luată baza de date Education.dbo, al cărei proces de creare este descris în detaliu

Figura 1 prezintă structura bazei de date Education.dbo. După cum se poate observa din figură, baza de date se numește:

sasha-pc\sqlexpress.Education.dbo

Aici „sasha-pc” este identificatorul computerului din rețea, „sqlexpress” este numele serverului bazei de date, „Education.dbo” este numele bazei de date.

Orez. 1. Baza de date Education.dbo

Baza de date conține două tabele: Student și Session. Structura tabelelor este următoarea.

Masa elevilor.

Tabel de sesiune.

Performanţă

1. Creați un nou proiect în MS Visual Studio ca aplicație Windows Forms.

Creați un nou proiect de tip Windows Forms Application. Un exemplu de creare a unui nou proiect este descris în detaliu

2. Creați o nouă vizualizare pentru a afișa datele din tabelul Student.

Pentru a afișa date din tabelele bazei de date, puteți utiliza căi diferite. Una dintre ele este crearea de vizualizări, care sunt generate folosind MS Visual Studio.

În cazul nostru, datele din tabel vor fi afișate pe formular într-un control de tip DataGridView. După crearea vizualizărilor, este foarte convenabil să le asociați cu elemente DataGridView.

Pentru a crea o vizualizare, trebuie să apelați comanda „Add New View” din meniul contextual, care este apelată făcând clic dreapta pe elementul „Views” din baza de date Education.dbo (Figura 2).

Orez. 2. Apelarea comenzii pentru a adăuga o nouă vizualizare

Ca rezultat, se va deschide fereastra „Adăugați tabel” (Figura 3). În fereastră trebuie să selectați tabelele care sunt adăugate la vizualizare.

Orez. 3. Selectarea tabelelor pe care se va baza noua vizualizare

În cazul nostru, selectați tabelul Student și confirmați alegerea făcând clic pe butonul Adăugați. Următorul pas este să închideți fereastra selectând butonul Închidere.

După parcurgerea pașilor, va fi generată o fereastră în care trebuie să selectați câmpurile care ar trebui să fie afișate în vizualizare (pe formular). Selectați toate câmpurile (Figura 4).

Când selectați câmpuri, câmpurile din tabelul Student sunt afișate în partea de sus a zonei de lucru. Cu ajutorul mouse-ului, puteți selecta câmpurile dorite pentru prezentare.

În consecință, zona din mijloc a ferestrei afișează numele câmpurilor selectate, tabelul în care acestea există (vezi Fig. 4), capacitatea de sortare, filtrare etc.

Partea de jos a zonei afișează textul de interogare SQL corespunzător care este utilizat pentru a crea vizualizarea.

Orez. 4. Selectarea câmpurilor din tabel Student pentru a fi afișate în vizualizare

După alegerea unei echipe

Fișier->Salvați tot Fișier->Salvare vizualizare1

Se va deschide o fereastră în care trebuie să specificați numele vizualizării. Setați numele „Vizualizare student” (Figura 5).

Orez. 5. Specificarea unui nume pentru vizualizare

După finalizarea pașilor, fereastra de prezentare va arăta ca în figura 6.

Orez. 6. Vizualizați reprezentarea studenților în baza de date

Acum puteți găzdui un control DataGridView și îl puteți asocia cu o vizualizare.

3. Plasați controlul DataGridView și configurați conexiunea cu baza de date.

Înainte de a plasa controlul DataGridView, trebuie să intrați în modul de proiectare a formularului „Form1.cs”.

Elementul DataGridView este un tabel care poate afișa date. Acest control se află în panoul ToolBox. Mai întâi, ajustăm ușor dimensiunea formularului și apoi plasăm controlul DataGridView pe acesta (Figura 7). Aceasta va crea în mod implicit o instanță de obiect numită dataGridView1.

Orez. 7. Fereastra de control DataGridView și de selecție a sursei de date

După plasarea controlului DataGridView pe formular, în colțul din dreapta sus puteți alege să configurați sursa de date. În consecință, se va deschide fereastra „DataGridView Tasks”. În această fereastră trebuie să selectați meniul pop-up „Alegeți sursa de date”.

În meniul care se deschide, selectați comanda „Add Project Data Source...” (Fig. 7). După aceasta, se deschide o fereastră expert, în care sursa de date este selectată secvenţial.

Figura 8 prezintă „ Expertul de configurare a sursei de date„, în care este selectat tipul sursei de date. În cazul nostru, instalăm „Bază de date”.

Orez. 8. Selectarea unui tip de sursă de date

În fereastra următoare (Figura 9) este selectat modelul sursei de date. Trebuie să selectați DataSet.

Orez. 9. Selectarea unui model de sursă de date

În fereastra prezentată în Figura 10, trebuie să specificați conexiunea de date pe care doriți să o utilizați pentru a vă conecta la baza de date. În cazul nostru, trebuie să selectăm baza de date " sasha-pc\sqlexpress\Education.dbo«.

Orez. 10. Selectarea unei conexiuni de date

Următoarea fereastră (Figura 11) sugerează salvarea șirului de conexiune în fișierul de configurare a aplicației. Lăsăm totul așa cum este și trecem la următoarea fereastră.

Orez. 11. Propunere de salvare a șirului de conexiune la baza de date șir de conexiune în fișierul de configurare a aplicației

După crearea unei conexiuni la baza de date, sunt afișate o varietate de obiecte de bază de date (Figura 12). În cazul nostru, trebuie să selectăm vizualizarea „Vizualizare student” și toate câmpurile din aceasta. Câmpurile bifate vor fi afișate în componenta de tip DataGridView.

Orez. 12. Selectarea obiectelor bazei de date de afișat în DataGridView

După selectarea butonului Finish, vor fi afișate obiectele selectate (View Student view) din baza de date Education.dbo (Figura 13).

Orez. 13. Control DataGridView cu câmpurile View Student selectate

Într-un mod similar, puteți configura vizualizări care conțin orice câmpuri din orice tabel de bază de date. De asemenea, câmpurile din tabele diferite pot fi afișate într-o singură vizualizare.

4. Setarea aspectului controlului DataGridView.

Dacă rulați aplicația, veți primi date din vizualizarea View Student, care corespunde tabelului Student din baza de date (Figura 14).

Orez. 14. Lansarea aplicației pentru execuție

După cum puteți vedea din Figura 14, datele din tabelul dataGridView1 sunt afișate în mod normal, dar designul poate fi ajustat.

Un control de tip DataGridView vă permite să ajustați aspectul câmpurilor care sunt afișate.

Pentru a apela comenzi pentru editarea câmpurilor, trebuie doar să apelați meniul contextual făcând clic dreapta pe controlul dataGridView1.

Meniul are diverse comenzi utile, care vă permit să controlați aspectul și funcționarea DataGridView:

  • comanda de blocare a controlului (Lock Controls);
  • comanda pentru editarea campurilor care sunt afisate in vizualizare (Edit Columns...);
  • comandă pentru a adăuga câmpuri noi, de exemplu cele calculate (Adăugare coloană).

În cazul nostru, trebuie să selectați comanda „Editați coloanele...” (Figura 15).

Orez. 15. Comanda „Editare coloane...” din meniul contextual

Ca urmare, se va deschide fereastra „Editare coloane”, în care puteți personaliza aspectul câmpurilor de prezentare după bunul plac (Figura 16).

Orez. 16. Fereastra pentru configurarea vizualizării câmpurilor în vizualizarea „Vizualizare student”.

În fereastra din Figura 16, pentru orice câmp puteți configura numele, alinierea, lățimea, capacitatea de a edita date etc.

5. Șirul de conexiune

Pentru a face modificări în baza de date, trebuie să obțineți un șir de conexiune la baza de date Connection String .

Există diferite moduri de a obține șirul de conexiune la baza de date. Una dintre ele se bazează pe citirea acestei linii în fereastra Proprietăți a bazei de date Education.dbo (Fig. 17).

Orez. 17. Definirea unui șir de conexiune

Pentru a salva șirul în program, o variabilă internă de tip şir. Folosind clipboard, copiați șirul de conexiune în variabila descrisă de tip șir .

În textul fișierului „Form1.cs” de la începutul descrierii clasei Form1, trebuie să descrieți variabila:

șir conn_string = ;

În acest moment, textul clasei Form1 este următorul:

clasă parțială publică Form1 : Form { șir conn_string = @"Sursa de date=(local)\SQLEXPRESS;Catalog inițial=Educație;Securitate integrată=Adevărat;Pooling=Fals"; Public Form1() { InitializeComponent(); } private void Form1_Load (emițător obiect, EventArgs e) { // TODO: Această linie de cod încarcă date în tabelul „educationDataSet.View_Student”. Puteți mutați sau îndepărtați-l, după cum este necesar. } }

6. Creația formă nouă pentru a demonstra comenzile de manipulare a datelor.

Pentru a putea procesa datele înregistrării curente, trebuie să creați un nou formular. Procesul de creare a unui formular nou în MS Visual Studio - C# este descris în detaliu.

Adăugarea unui formular nou se face cu comanda:

Proiect -> Adăugați formularul Windows...

În fereastra „Articol nou” care se deschide, trebuie să selectați elementul „Formular Windows“.

Lăsați noul nume de fișier formular ca implicit „Form2.cs”.

Figura 18 prezintă o vedere a noului formular.

Plasăm următoarele tipuri de controale pe formular:

  • două butoane de control (butoanele OK și Anulare). În consecință, vor fi primite două obiecte numite button1 și button2;
  • patru comenzi Etichetă pentru crearea mesajelor informaționale;
  • patru comenzi de tip TextBox pentru introducerea datelor în câmpurile Num_book, Name, Group, Year.

Trebuie să configurați următoarele proprietăți ale controalelor:

  • în proprietatea butonul de control 1 Text = „OK”;
  • în proprietatea controlului butonul 2 Text = „Anulează”;
  • în proprietatea butonul de control 1 DialogResult = "OK";
  • în proprietatea control button2 DialogResult = "Anulare";
  • în proprietatea control label1 Text = "Num_book";
  • în proprietatea control label2 Text = "Nume";
  • în proprietatea control label3 Text = "Grup";
  • în label4 controlează proprietatea Text = „An”.

Configuram, de asemenea, vizibilitatea controalelor TextBox. Pentru a face acest lucru, în toate controalele textBox1, textBox2, textBox3, textBox4, valoarea proprietății Modifiers = „public”.

Orez. 18. Vedere a formularului nou creat

7. Adăugarea de butoane pentru apelarea comenzilor pentru manipularea datelor din tabelul Student.

Pentru a lucra în continuare, trebuie să utilizați mouse-ul pentru a comuta la formularul principal Form1.

Adăugați trei butoane la formularul principal al aplicației Form1 (Buton). Trei variabile obiect vor fi create automat cu numele button1, button2, button3. În fiecare dintre aceste butoane facem următoarele setări (fereastra Proprietăți):

  • în proprietatea butonului butonul 1 Text = „Insert …” (inserați înregistrarea);
  • în proprietatea butonului butonul 2 Text = „Editare...” (modificați intrarea);
  • în proprietatea butonul button3 Text = „Șterge”.

Ca urmare a modificărilor efectuate, formularul principal va arăta ca în figura 19.

Orez. 19. Forma principală a cererii

8. Programarea unui eveniment de clic pe butonul „Inserare...”.

Managerul de evenimente clic pe butonul „Inserați...” arată astfel:

private void button1_Click_1 (expeditor al obiectului, EventArgs e) { șir cmd_text; Form2 f2 = nou Form2(); if (f2.ShowDialog() == DialogResult .OK) { cmd_text = „INSERT INTO Student VALUES (" + """ + f2.textBox1.Text + "" , "" + f2.textBox2.Text + "" , "" + f2.textBox3.Text + "" , " + f2.textBox4.Text + ")" ; // creează o conexiune la baza de date SqlConnection sql_conn = new SqlConnection(conn_string); // creează o comandă în limbaj SQL SqlCommand sql_comm = new SqlCommand(cmd_text, sql_conn); sql_conn.Open(); // deschiderea conexiunii sql_comm.ExecuteNonQuery(); // execută comanda în limbaj SQL sql_conn.Close(); // strânsă legătură acest .view_StudentTableAdapter.Fill (acest .educationDataSet.View_Student); } }

Form2 este numit primul. După primirea rezultatului „OK” (apăsând butonul corespunzător), în Form2 câmpurile completate în elemente de tip TextBox sunt incluse în șirul de interogare SQL. Interogarea SQL pentru adăugarea unui nou rând arată astfel:

INSERT INTO Student VALORI (valoare1, valoare2, valoare3, valoare4)

unde valoarea1 corespunde numărului caietului de note; value2 – numele de familie al elevului; valoare3 – grupa în care învață studentul; valoare4 – anul intrării.

Șirul de conexiune la baza de date Connection String este descris în variabila conn_string (vezi paragraful 5). Obiectul clasei SqlConnection conectează aplicația la sursele de date. În plus, clasa Connection se ocupă de autentificarea utilizatorului, conectarea în rețea, identificarea bazei de date, tamponarea conexiunii și procesarea tranzacțiilor.

Comanda SQL care adaugă o înregistrare la un tabel este încapsulată în clasa SqlCommand. Constructorul clasei SqlCommand ia doi parametri: un șir de interogare SQL (variabilă cmd_text) și un obiect al clasei SqlConnection.

Metoda ExecuteNonQuery() este implementată în interfața IDBCommand. Metoda implementează comenzi SQL care nu returnează date. Astfel de comenzi includ comenzile INSERT, DELETE, UPDATE, precum și procedurile stocate care nu returnează date. Metoda ExecuteNonQuery() returnează numărul de înregistrări implicate.

9. Programarea unui eveniment de clic pe butonul „Editare...”.

Managerul de evenimente clic pe butonul „Editați...” arată astfel:

private void button2_Click(emițător obiect, EventArgs e) ( șir cmd_text; Form2 f2 = new Form2 (); index int; șir num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert .ToString(dataGridView1.Value); f2.textBox1 .Text = num_book; f2.textBox2.Text = Convertiți .ToString(dataGridView1.Value); f2.textBox3.Text = Convertiți .ToString(dataGridView1.Value); f2.textBox4.Text = Convertiți .ToString(dataGridView1.Value); if (f2.ShowDialog() == DialogResult .OK) ( cmd_text = „UPDATE Student SET Num_book = „”+ f2.textBox1.Text + "", " + " = "" + f2.textBox2.Text + "", " + " = "" + f2.textBox3.Text + "", " + "An = " + f2 .TextBox4.Text + „What num_book =" " + num_book +" "" "" SQLConNection SQL_Conn = SQLConNECTION nou (Conn_String); SQLCMAND SQL_comm = SQLCMANT nou (CMD_TEXT , sql_conn); (sql_conn); sqlpenry_com); ; sql_conn.Close(); acest .view_StudentTableAdapter.Fill (acest .educationDataSet.View_Student); ) )

Acest handler execută o comandă UPDATE SQL care modifică valoarea curentă a înregistrării active.

10. Programarea unui eveniment de clic pe butonul „Ștergere”.

Managerul de evenimente clic pe butonul „Șterge” arată astfel:

private void button3_Click(exmițător obiect, EventArgs e) ( șir cmd_text = "ȘTERGERE FROM Student" ; int index; șir num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert.ToString(dataGridView1.Value); cmd_text = „ȘTERGERE FROM Student WHERE . = „”+ num_book + """ ; SqlConnection sql_conn = nou SqlConnection (conn_string); SqlCommand sql_comm = nou SqlCommand (cmd_text, sql_conn); sql_conn.Open(); sql_Comm.Conn.(); Adaptor. Completați (acest .educationDataSet.View_Student); )

Acest handler execută comanda SQL DELETE pentru a șterge o înregistrare.

Subiecte asemănătoare

  • Ieșirea unui tabel de bază de date Microsoft Access

SQL Server Management Studio oferă un instrument complet pentru crearea tuturor tipurilor de interogări. Cu ajutorul acestuia puteți crea, salva, încărca și edita interogări. În plus, puteți lucra la interogări fără a vă conecta la niciun server. Acest instrument oferă, de asemenea, posibilitatea de a dezvolta interogări pentru diferite proiecte.

Puteți lucra cu interogări folosind fie Editorul de interogări, fie Exploratorul de soluții. Acest articol acoperă ambele instrumente. În plus față de aceste două componente ale SQL Server Management Studio, ne vom uita la depanarea codului SQL folosind depanatorul încorporat.

Editor de interogări

Pentru a deschide panoul Editor de interogări Editor de interogări, în bara de instrumente SQL Server Management Studio, faceți clic pe butonul Interogare nouă. Acest panou poate fi extins pentru a afișa butoane pentru crearea tuturor interogărilor posibile, nu doar a interogărilor din Motorul de baze de date. Implicit este creat cerere nouă Componenta Database Engine, dar făcând clic pe butonul corespunzător din bara de instrumente, puteți crea și interogări MDX, XMLA etc.

Bara de stare din partea de jos a panoului Editor de interogări indică starea conexiunii editorului la server. Dacă nu vă conectați automat la server, atunci când lansați Editorul de interogări, apare o casetă de dialog Conectare la server, care vă permite să selectați serverul la care să vă conectați și modul de autentificare.

Editarea interogărilor offline oferă mai multă flexibilitate decât atunci când este conectat la un server. Pentru a edita interogări, nu este necesară conectarea la server, iar fereastra editorului de interogări poate fi deconectată de la un server (folosind comanda de meniu Interogare --> Conexiune --> Deconectare) și conectată la altul fără a deschide o altă fereastră de editor. Pentru a selecta modul de editare offline, utilizați caseta de dialog Conectare la server care se deschide când lansați editorul. tip specific cereri, faceți clic pe butonul Anulare.

Puteți utiliza Editorul de interogări pentru a efectua următoarele sarcini:

    crearea și executarea instrucțiunilor Transact-SQL;

    salvarea instrucțiunilor create de limbajul Transact-SQL într-un fișier;

    crearea și analizarea planurilor de execuție pentru interogări comune;

    ilustrând grafic planul de execuție al interogării selectate.

Editorul de interogări conține un sistem încorporat editor de textși o bară de instrumente cu un set de butoane pentru diferite acțiuni. Fereastra principală a editorului de interogări este împărțită orizontal într-un panou de interogări (în partea de sus) și un panou cu rezultate (în partea de jos). Declarațiile Transact-SQL (adică interogări) care urmează să fie executate sunt introduse în panoul de sus, iar rezultatele procesării de către sistem a acelor interogări sunt afișate în panoul de jos. Figura de mai jos arată un exemplu de introducere a unei interogări în editorul de interogări și rezultatele executării acelei interogări:

Prima instrucțiune de solicitare USE specifică utilizarea bazei de date SampleDb ca bază de date curentă. A doua instrucțiune, SELECT, preia toate rândurile din tabelul Employee. Pentru a rula această interogare și a afișa rezultatele, în bara de instrumente Editor de interogări, faceți clic pe butonul Executare sau apăsați F5.

Puteți deschide mai multe ferestre Editor de interogări, de ex. face mai multe conexiuni la una sau mai multe instanțe ale Motorului de baze de date. O nouă conexiune este creată făcând clic pe butonul New Query din bara de instrumente SQL Server Management Studio.

Bara de stare din partea de jos a ferestrei Editor de interogări afișează următoarele informații legate de execuția instrucțiunilor de interogare:

    starea operațiunii curente (de exemplu, „Solicitare finalizată cu succes”);

    numele serverului bazei de date;

    numele de utilizator curent și ID-ul procesului de server;

    numele curent al bazei de date;

    timpul petrecut pentru executarea ultimei cereri;

    numărul de linii găsite.

Unul dintre principalele avantaje ale SQL Server Management Studio este ușurința în utilizare, care se aplică și Editorului de interogări. Editorul de interogări oferă multe caracteristici pentru a facilita codificarea instrucțiunilor Transact-SQL. În special, folosește evidențierea sintaxelor pentru a îmbunătăți lizibilitatea instrucțiunilor Transact-SQL. Toate cuvintele rezervate sunt afișate cu albastru, variabilele sunt afișate cu negru, șirurile sunt afișate cu roșu, iar comentariile sunt afișate cu verde.

În plus, editorul de interogări este echipat cu ajutor sensibil la context numit Ajutor dinamic, prin care puteți obține informații despre o anumită instrucțiune. Dacă nu cunoașteți sintaxa unei instrucțiuni, selectați-o în editor, apoi apăsați tasta F1. De asemenea, puteți evidenția parametrii diferitelor instrucțiuni Transact-SQL pentru a obține ajutor despre aceștia din Books Online.

SQL Management Studio acceptă SQL Intellisense, care este un tip de instrument de completare automată. Cu alte cuvinte, acest modul sugerează finalizarea cea mai probabilă a elementelor de instrucțiune Transact-SQL introduse parțial.

De asemenea, exploratorul de obiecte vă poate ajuta să editați interogări. De exemplu, dacă doriți să știți cum să creați o instrucțiune CREATE TABLE pentru tabelul Employee, faceți clic dreapta pe tabel în Object Explorer și pe rezultatul meniul contextual selectați Script Table As --> CREATE to --> New Query Editor Window. Fereastra Editor de interogări care conține instrucțiunea CREATE TABLE creată în acest mod este prezentată în figura de mai jos. Această caracteristică se aplică și altor obiecte, cum ar fi procedurile și funcțiile stocate.

Browserul de obiecte este foarte util pentru afișarea grafică a planului de execuție al unei anumite interogări. Planul de execuție a interogării este opțiunea de execuție selectată de către optimizatorul de interogări dintre mai multe opțiuni posibileîndeplinirea unei cereri specifice. Introduceți interogarea necesară în panoul de sus al editorului, selectați o secvență de comenzi din meniul Interogare --> Afișare plan de execuție estimat, iar planul de execuție pentru această interogare va fi afișat în panoul de jos al ferestrei editorului.

Explorator de soluții

Editarea interogărilor în SQL Server Management Studio se bazează pe metoda soluțiilor. Dacă creați o interogare goală folosind butonul Interogare nouă, aceasta se va baza pe o soluție goală. Puteți vedea acest lucru rulând o secvență de comenzi din meniul View --> Solution Explorer imediat după deschiderea unei interogări goale.

Decizia poate fi legată de niciunul, unul sau mai multe proiecte. O soluție goală, care nu este asociată cu niciun proiect. Pentru a asocia un proiect cu o soluție, închideți soluția goală, Solution Explorer și Query Editor și creați un nou proiect rulând File --> New --> Project. În fereastra Proiect nou care se deschide, selectați opțiunea Scripturi SQL Server din panoul din mijloc. Un proiect este o modalitate de organizare a fișierelor într-o anumită locație. Puteți atribui un nume proiectului și puteți alege o locație pentru locația acestuia pe disc. Când creați un nou proiect, o nouă soluție este lansată automat. Proiectul poate fi adăugat solutie existenta folosind Solution Explorer.

Pentru fiecare proiect creat, Solution Explorer afișează folderele Conexiuni, Interogări și Diverse. Pentru a deschide o nouă fereastră Editor de interogări pentru un proiect dat, faceți clic dreapta pe folderul Interogări și selectați Interogare nouă din meniul contextual.

Depanare SQL Server

SQL Server, începând cu SQL Server 2008, are un depanator de cod încorporat. Pentru a începe o sesiune de depanare, selectați Debug --> Start Debugging din meniul principal SQL Server Management Studio. Ne vom uita la modul în care funcționează depanatorul folosind un exemplu folosind un lot de comenzi. Un lot este o secvență logică de instrucțiuni SQL și extensii procedurale care este trimisă la Motorul bazei de date pentru a executa toate instrucțiunile pe care le conține.

Figura de mai jos prezintă un pachet care numără numărul de angajați care lucrează la proiectul p1. Dacă acest număr este 4 sau mai mult, atunci este afișat un mesaj corespunzător. În caz contrar, sunt afișate numele și prenumele angajaților.

Pentru a opri execuția unui pachet la o anumită instrucțiune, puteți seta puncte de întrerupere, așa cum se arată în figură. Pentru a face acest lucru, faceți clic în partea stângă a liniei pe care doriți să vă opriți. Când începe depanarea, execuția se oprește la prima linie de cod, care este marcată cu o săgeată galbenă. Pentru a continua execuția și depanarea, selectați comanda de meniu Debug --> Continue. Instrucțiunile batch vor continua să se execute până la primul punct de întrerupere, iar săgeata galbenă se va opri în acel punct.

Informațiile legate de procesul de depanare sunt afișate în două panouri în partea de jos a ferestrei Editor de interogări. Informatii despre tipuri diferite Informațiile de depanare sunt grupate în aceste panouri pe mai multe file. Panoul din stânga conține fila Auto, fila Locals și până la cinci file Vizionare. Panoul din dreapta conține filele Stack de apeluri, Threads, Breakpoints, Command Window, Imediate Window și Output. Fila Locals afișează valorile variabile, fila Call Stack afișează valorile stivei de apeluri, iar fila Breakpoints afișează informații despre punctele de întrerupere.

Pentru a încheia procesul de depanare, executați o secvență de comenzi din meniul principal Depanare --> Oprire depanare sau faceți clic pe butonul albastru din bara de instrumente a depanatorului.

SQL Server 2012 adaugă câteva funcții noi depanatorului încorporat în SQL Server Management Studio. Acum puteți efectua o serie dintre următoarele operații în el:

    Specificați o condiție de punct de întrerupere. Starea punctului de întrerupere este o expresie SQL a cărei valoare evaluată determină dacă execuția codului se va opri la un anumit punct sau nu. Pentru a specifica o condiție de punct de întrerupere, faceți clic dreapta pe pictograma roșie a punctului de întrerupere și selectați Condiție din meniul contextual. Se deschide caseta de dialog Condiție punct de întrerupere, permițându-vă să introduceți expresia booleană necesară. În plus, dacă trebuie să opriți execuția dacă expresia este adevărată, ar trebui să setați comutatorul Is True. Dacă execuția trebuie oprită dacă expresia s-a schimbat, atunci trebuie să setați comutatorul Când este schimbat.

    Specificați numărul de accesări la punctul de întrerupere. Numărul de hit-uri este condiția pentru oprirea execuției la un anumit punct, pe baza numărului de ori acel punct de întrerupere a fost atins în timpul execuției. Când numărul specificat de treceri și orice altă condiție specificată pentru un punct de întrerupere dat este atins, depanatorul efectuează acțiunea specificată. Condiția de anulare a execuției bazată pe numărul de accesări poate fi una dintre următoarele:

    1. necondiționat (acțiune implicită) (Break always);

      dacă numărul de accesări este egal cu valoarea specificată (Pauza când numărul lui este egal cu o valoare specificată);

      dacă numărul de accesări este un multiplu al unei valori specificate (Pauza când numărul de accesări este egal cu un multiplu al unei valori specificate);

      Pauza atunci când numărul lui este mai mare sau egal cu o valoare specificată.

    Pentru a seta numărul de accesări în timpul depanării, faceți clic dreapta pe pictograma punctului de întrerupere necesară din fila Puncte de întrerupere, selectați Număr de accesări din meniul contextual, apoi selectați una dintre condițiile din caseta de dialog Număr de accesări ale punctului de întrerupere care se deschide din lista anterioară. Pentru opțiunile care necesită o valoare, introduceți-o în caseta de text din dreapta listei derulante de condiții. Pentru a salva condițiile specificate, faceți clic pe OK.

    Specificați un filtru de punct de întrerupere. Un filtru de punct de întrerupere limitează operarea punctului de întrerupere doar la computerele, procesele sau firele specificate. Pentru a seta un filtru de punct de întrerupere, faceți clic dreapta pe punctul de întrerupere dorit și selectați Filtru din meniul contextual. Apoi, în caseta de dialog Breakpoint Filters care se deschide, specificați resursele la care doriți să restricționați execuția acestui punct de întrerupere. Pentru a salva condițiile specificate, faceți clic pe OK.

    Specificați o acțiune la un punct de întrerupere. Condiția When Hit specifică acțiunea de întreprins atunci când execuția lotului atinge un anumit punct de întrerupere. În mod implicit, când atât condiția de numărare a hit-urilor, cât și condiția de oprire sunt îndeplinite, atunci execuția este întreruptă. Alternativ, poate fi afișat un mesaj prespecificat.

    Pentru a specifica ce trebuie făcut atunci când este lovit un punct de întrerupere, faceți clic dreapta pe pictograma roșie pentru punctul de întrerupere și selectați Când este lovit din meniul contextual. În caseta de dialog When Breakpoint is Hit care se deschide, selectați acțiunea pe care doriți să o întreprindeți. Pentru a salva condițiile specificate, faceți clic pe OK.

    Utilizați fereastra Quick Watch. Puteți vizualiza valoarea unei expresii Transact-SQL în fereastra QuickWatch și apoi salvați expresia în fereastra Watch. Pentru a deschide fereastra Quick Watch, selectați Quick Watch din meniul Debug. Expresia din această fereastră poate fi fie selectată din lista derulantă Expresie, fie introdusă în acest câmp.

    Folosiți indicația pentru informații rapide. Când treceți mouse-ul peste un ID de cod, Informații rapide ( Informatie scurta) își afișează anunțul într-o fereastră pop-up.




Top