Căutați în întregul tabel c. Căutare text integral în Microsoft SQL Server

Să începem cu interogările de bază. Cum ar fi fără ei? Cea mai laconică formă a unei interogări SQL se traduce prin „Vreau să obțin toate datele din acest tabel”. Rezultatul următoarei interogări sunt toate înregistrările cu toate câmpurile din tabelul D_STAFF.

SELECTAȚI * FROM D_STAFF

Introducerea unei interogări SQL în programul de instruire.

Selectați [secțiunea SQL] în Explorer din stânga, faceți clic pe [butonul SQL] deasupra listei din dreapta, introduceți o interogare și faceți clic din nou pe [butonul SQL]. După confirmarea cererii, lista din dreapta va arăta astfel. În acest caz, totul este mai simplu: trebuie doar să introduceți interogarea SQL în câmpul corespunzător și să faceți clic pe [Run].


Rezultatul executării unei interogări SQL simple.

Folosirea (*) după instrucțiunea SELECT este cu siguranță convenabilă, mai ales dacă nu știi ce câmpuri există în tabel, dar este și costisitoare - structurile care stochează rezultatul unei interogări consumă destul de multă memorie „extra”, iar acest lucru se adaugă doar la creșterea timpului petrecut pentru executarea interogării în sine. Următoarea opțiune este mult de preferat dacă aveți nevoie doar de informații despre numele dvs. complet. angajat și vechimea acestuia. Traducerea este cam așa: „Vreau să știu doar asta și asta despre toți cei din tabel...”

SELECTAȚI S_NAME, S_EXPERIENCE FROM D_STAFF

Rezultatul ultimei interogări SQL ocupă mult mai puțin spațiu în lățime.


Selectarea valorilor pentru anumite câmpuri de tabel.

Pasul 2. Interogare SQL cu un criteriu de selecție simplu

Cele mai simple interogări nu sunt practic aplicabile în practică, deoarece „extrag” absolut toate înregistrările din tabelul specificat și pot exista sute de mii de ele. SGBD-ul poate refuza pur și simplu să îndeplinească o astfel de solicitare și pur și simplu s-ar putea să nu existe suficientă memorie RAM pe computerul clientului. Ce să faci cu rezultatele unor astfel de interogări, chiar dacă sunt executate corect, nu este întotdeauna clar, deși pentru unii va funcționa. Pentru a impune restricții asupra selecției înregistrărilor de care aveți nevoie, SQL folosește cuvântul cheie WHERE. Interogarea de mai jos selectează doar angajații cu mai puțin de 5 ani de experiență.

SELECTAȚI S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE


Utilizare criteriu simplu selecția înregistrărilor.

Pasul 3. Interogare SQL cu criterii de selecție compuse

Pentru ce sunt? criterii de selecție compoziteînregistrări, cred că nu este nevoie să explic. În același scop ca și interogările cu criterii simple. Condițiile sunt combinate folosind operații logice conjuncţiiŞi disjuncţii(operatori AND și SAU) și sunt grupate folosind paranteze. Următoarea interogare va returna înregistrările angajaților cu mai puțin de 5 ani de experiență și cu o restricție suplimentară asupra funcției pe care o dețin.

SELECTAȚI S_NAME, S_EXPERIENCE, S_POSITION FROM D_STAFF WHERE (D_STAFF.S_POSITION 20) ȘI D_STAFF.S_EXPERIENCE


Utilizare criteriu complex selecția înregistrărilor.

Pasul 4. ÎNTRE Operator

Operatorul BETWEEN simplifică sintaxa pentru descrierea criteriilor care definesc intervalul de valori acceptabile. În loc de ÎNTRE 3 ȘI 7 de mai jos, puteți scrie D_STAFF.S_EXPERIENCE >=3 AND D_STAFF.S_EXPERIENCE<=7 . Первый вариант способствует наглядности запроса – это раз, поиск на стороне СУБД может выполняться по отдельному алгоритму, специально оптимизированному для подобного вида ограничений – это два.

SELECTAȚI S_NAME, S_EXPERIENCE, S_POSITION FROM D_STAFF WHERE (D_STAFF.S_POSITION 20) ȘI D_STAFF.S_EXPERIENCE ÎNTRE 3 ȘI 7


Folosind operatorul BETWEEN.

Pasul 5: Operator LIKE

Acest operator minunat vă permite să restricționați valorile câmpurilor de text folosind metacaractere. Nu voi explica sintaxa, cred că totul este clar din exemplu. Căutăm angajați cu nume complet. incepand cu "CU", ar trebui să se întâlnească la mijloc "Arbore" si totul trebuie sa se termine cu „ich”. În unele SGBD, cuvântul cheie LIKE poate fi folosit și cu valori de dată și oră.

SELECTAȚI S_NAME DIN D_STAFF UNDE S_NAME LIKE „C%” ȘI S_NAME LIKE „%Val%” ȘI S_NAME LIKE „%ich”

SELECTAȚI S_NAME DIN D_STAFF WHERE S_NAME LIKE „S%Val%ich”


Folosind operatorul LIKE.

Pasul 6: Aliasuri de tabel și câmp

Tabelele și numele câmpurilor utilizate în interogare pot fi determinate pseudonime. Cum se face acest lucru este demonstrat mai jos. De ce se face acest lucru va fi arătat în următorii pași, inclusiv pasul 7, iar acest exemplu ilustrează cel mai evident folosind aliasuri în SQL– formatarea rezultatului interogării în conformitate cu cerințele de ușurință a percepției de către o persoană. Pentru a defini un alias pentru un tabel sau un câmp în SQL, este folosit cuvântul cheie AS. Rezultatul interogării (antetul tabelului) în această versiune pare mai potrivit pentru realizarea unui raport bazat pe acesta.

SELECTAȚI S_NAME CA Angajat, S_EXPERIENCE AS [Experiență de lucru], S_POSITION AS Poziție FROM D_STAFF CA STAFF


Aplicarea aliasurilor de tabel și câmp.

Pasul 7. Relația „Șef - subordonat”

Acest exemplu completează „primii pași” de învățare a interogărilor SQL cu cele mai complexe dintre ele. Aici „programăm” rezultatul unei liste de angajați împreună cu managementul lor imediat. Dificultatea este că înregistrările despre ambele sunt stocate în același tabel și aici nu puteți face fără aliasuri. SGBD, în timpul procesării interogărilor, va accesa tabelul D_STAFF ca și cum ar fi două tabele diferite (sub aliasurile STAFF și CHIEF), pentru a combina înregistrările într-un singur caravană pe baza relaţiei „superior-subordonat”. Relația este modelată astfel: valoarea câmpului S_CHIEF_ID al unui subordonat corespunde valorii câmpului XD_IID al superiorului său.

SELECTAȚI STAFF.S_NAME CA Subordonat, STAFF.S_POSITION AS [Posiția subordonată], CHIEF.S_NAME CA Șef, CHIEF.S_POSITION AS [Posiția de supervizor] FROM D_STAFF CA STAFF, D_STAFF CA ȘEF WHERE STAFF.S_CHIEF_ID=CHIEF.


Obținerea ierarhiei „superior - subordonat” folosind un alias de tabel într-o interogare SQL.

Fiecare dezvoltator web trebuie să cunoască SQL pentru a scrie interogări de baze de date. Și, deși phpMyAdmin nu a fost anulat, este adesea necesar să vă murdărești mâinile pentru a scrie SQL de nivel scăzut.

De aceea am pregătit un scurt tur al elementelor de bază ale SQL. Să începem!

1. Creați un tabel

Instrucțiunea CREATE TABLE este folosită pentru a crea tabele. Argumentele trebuie să fie numele coloanelor, precum și tipurile de date ale acestora.

Să creăm un tabel simplu numit lună. Este format din 3 coloane:

  • id– Numărul lunii din anul calendaristic (întreg).
  • nume– Numele lunii (șir, maximum 10 caractere).
  • zile– Numărul de zile din această lună (întreg).

Iată cum ar arăta interogarea SQL corespunzătoare:

CREATE TABLE luni (id int, nume varchar(10), zile int);

De asemenea, la crearea tabelelor, este recomandabil să adăugați o cheie primară pentru una dintre coloane. Acest lucru va păstra înregistrările unice și va accelera cererile de preluare. În cazul nostru, să fie numele lunii unic (coloana nume)

CREATE TABLE luni (id int, name varchar(10), days int, PRIMARY KEY (nume));

Data și ora
Tip de dateDescriere
DATAValori date
DATETIMEValori date și ore exacte la minut
TIMPValori de timp

2. Inserarea rândurilor

Acum să ne completăm tabelul luni informatii utile. Adăugarea înregistrărilor la un tabel se face folosind instrucțiunea INSERT. Există două moduri de a scrie această instrucțiune.

Prima metodă nu este de a specifica numele coloanelor în care vor fi inserate datele, ci de a specifica doar valorile.

Această metodă de înregistrare este simplă, dar nesigură, deoarece nu există nicio garanție că, pe măsură ce proiectul se extinde și tabelul este editat, coloanele vor fi în aceeași ordine ca înainte. O modalitate sigură (și în același timp mai greoaie) de a scrie o instrucțiune INSERT necesită specificarea atât a valorilor, cât și a ordinii coloanelor:

Iată prima valoare din listă VALORI se potrivește cu primul nume de coloană specificat etc.

3. Extragerea datelor din tabele

Declarația SELECT este cel mai bun prieten al nostru atunci când dorim să extragem date dintr-o bază de date. Este folosit foarte des, așa că acordați o atenție deosebită acestei secțiuni.

Cea mai simplă utilizare a instrucțiunii SELECT este o interogare care returnează toate coloanele și rândurile dintr-un tabel (de exemplu, tabelele după nume personaje):

SELECTAȚI * DIN „personaje”

Simbolul asterisc (*) înseamnă că dorim să obținem date din toate coloanele. Deoarece bazele de date SQL constau de obicei din mai mult de un tabel, este necesar să specificați cuvântul cheie FROM, urmat de numele tabelului, separat de un spațiu.

Uneori nu dorim să obținem date din toate coloanele dintr-un tabel. Pentru a face acest lucru, în loc de asterisc (*), trebuie să notăm numele coloanelor dorite, separate prin virgulă.

SELECT ID, numele FROM luna

În plus, în multe cazuri dorim ca rezultatele rezultate să fie sortate într-o anumită ordine. În SQL facem acest lucru folosind ORDER BY. Poate accepta un modificator opțional - sortarea ASC (implicit) în ordine crescătoare sau DESC , sortarea în ordine descrescătoare:

SELECT ID, nume FROM luna ORDENARE DUPA nume DESC

Când utilizați ORDER BY, asigurați-vă că este ultimul în instrucțiunea SELECT. În caz contrar, va fi afișat un mesaj de eroare.

4. Filtrarea datelor

Ați învățat cum să selectați anumite coloane dintr-o bază de date folosind o interogare SQL, dar ce se întâmplă dacă trebuie să recuperăm și anumite rânduri? Clauza WHERE vine în ajutor aici, permițându-ne să filtram datele în funcție de condiție.

În această interogare, selectăm doar acele luni din tabel lună, în care există mai mult de 30 de zile folosind operatorul mai mare decât (>).

SELECT ID, nume FROM luna WHERE zile > 30

5. Filtrare avansată a datelor. operatori AND și SAU

Anterior, am folosit filtrarea datelor folosind un singur criteriu. Pentru o filtrare mai complexă a datelor, puteți utiliza operatorii AND și SAU și operatorii de comparație (=,<,>,<=,>=,<>).

Aici avem un tabel care conține cele patru albume cele mai vândute din toate timpurile. Să le alegem pe cele care sunt clasificate ca rock și s-au vândut în mai puțin de 50 de milioane de exemplare. Acest lucru se poate face cu ușurință prin plasarea unui operator AND între aceste două condiții.


SELECT * FROM albume WHERE gen = „rock” AND sales_in_millions<= 50 ORDER BY released

6. În/Între/Like

WHERE acceptă, de asemenea, mai multe comenzi speciale, permițându-vă să verificați rapid interogările cele mai frecvent utilizate. Iată-le:

  • IN – folosit pentru a indica o serie de condiții, dintre care oricare poate fi îndeplinită
  • BETWEEN – verifică dacă o valoare se află în intervalul specificat
  • LIKE – caută modele specifice

De exemplu, dacă vrem să selectăm albume cu popŞi suflet muzica, putem folosi IN("value1","value2") .

SELECTAȚI * DIN albumele WHERE genre IN ("pop","soul");

Dacă vrem să obținem toate albumele lansate între 1975 și 1985, trebuie să scriem:

SELECTAȚI * DIN albumele WHERE lansate ÎNTRE 1975 ȘI 1985;

7. Funcții

SQL este plin de funcții care fac tot felul de lucruri utile. Iată câteva dintre cele mai frecvent utilizate:

  • COUNT() – returnează numărul de rânduri
  • SUM() – returnează suma totală a unei coloane numerice
  • AVG() – returnează media unui set de valori
  • MIN() / MAX() – Obține valoarea minimă/maximă dintr-o coloană

Pentru a obține cel mai recent an în tabelul nostru, trebuie să scriem următoarea interogare SQL:

SELECT MAX (lansat) FROM albume;

8. Subinterogări

În paragraful anterior, am învățat cum să facem calcule simple cu date. Dacă dorim să folosim rezultatul din aceste calcule, nu ne putem lipsi de interogări imbricate. Să presupunem că vrem să ieșim artist, albumŞi anul lansării pentru cel mai vechi album din tabel.

Știm cum să obținem aceste coloane specifice:

SELECT artist, album, lansat DIN albume;

De asemenea, știm cum să obținem cel mai devreme an:

SELECT MIN (lansat) FROM album;

Tot ce este nevoie acum este să combinați cele două interogări folosind WHERE:

SELECT artist,album,released FROM albums WHERE lansat = (SELECT MIN(released) FROM albums);

9. Îmbinarea meselor

În bazele de date mai complexe, există mai multe tabele legate între ele. De exemplu, mai jos sunt două tabele despre jocuri video ( jocuri_video) și dezvoltatori de jocuri video ( game_developers).


În tabel jocuri_video există o coloană pentru dezvoltatori ( developer_id), dar conține un număr întreg, nu numele dezvoltatorului. Acest număr reprezintă identificatorul ( id) a dezvoltatorului corespunzător din tabelul dezvoltatorilor de jocuri ( game_developers), legând logic două liste, permițându-ne să folosim informațiile stocate în ambele în același timp.

Dacă vrem să creăm o interogare care să returneze tot ce trebuie să știm despre jocuri, putem folosi un INNER JOIN pentru a lega coloanele din ambele tabele.

SELECT video_games.name, video_games.genre, game_developers.name, game_developers.country FROM video_games INNER JOIN game_developers ON video_games.developer_id = game_developers.id;

Acesta este cel mai simplu și mai comun tip JOIN. Există mai multe alte opțiuni, dar acestea se aplică cazurilor mai puțin frecvente.

10. Aliasuri

Dacă te uiți la exemplul anterior, vei observa că sunt numite două coloane nume. Acest lucru este confuz, așa că să setăm un alias la una dintre coloanele care se repetă, astfel nume de la masă game_developers va fi chemat dezvoltator.

De asemenea, putem scurta interogarea prin aliasarea numelor tabelelor: jocuri_video hai sa sunam jocuri, game_developers - dezvoltatori:

SELECT games.name, games.genre, devs.name AS dezvoltator, devs.country FROM video_games AS jocuri INNER JOIN game_developers AS devs ON games.developer_id = devs.id;

11. Actualizarea datelor

Adesea trebuie să schimbăm datele pe unele rânduri. În SQL acest lucru se face folosind instrucțiunea UPDATE. Declarația UPDATE constă din:

  • Tabelul în care se află valoarea de înlocuire;
  • Numele coloanelor și noile lor valori;
  • Rândurile selectate folosind WHERE pe care dorim să le actualizăm. Dacă nu se face acest lucru, toate rândurile din tabel se vor schimba.

Mai jos este tabelul Seriale TV cu serialele TV și ratingurile acestora. Cu toate acestea, o mică eroare s-a strecurat în tabel: deși seria Game of Thronesși este descrisă ca o comedie, chiar nu este. Să reparăm asta!

Date de tabel tv_series UPDATE tv_series SET gen = "drama" WHERE id = 2;

12. Ștergerea datelor

Ștergerea unui rând de tabel folosind SQL este un proces foarte simplu. Tot ce trebuie să faceți este să selectați tabelul și rândul pe care doriți să le ștergeți. Să ștergem ultimul rând din tabel din exemplul anterior Seriale TV. Acest lucru se face folosind instrucțiunea >DELETE.

DELETE FROM tv_series WHERE id = 4

Aveți grijă când scrieți instrucțiunea DELETE și asigurați-vă că este prezentă clauza WHERE, altfel toate rândurile din tabel vor fi șterse!

13. Ștergeți un tabel

Dacă vrem să ștergem toate rândurile, dar să părăsim tabelul în sine, atunci folosiți comanda TRUNCATE:

TRUNCATE TABLE nume_tabel;

În cazul în care dorim de fapt să ștergem atât datele, cât și tabelul în sine, atunci comanda DROP ne va fi utilă:

DROP TABLE nume_tabel;

Fii foarte atent cu aceste comenzi. Nu pot fi anulate!/p>

Aceasta încheie tutorialul nostru SQL! Sunt multe pe care nu le-am acoperit, dar ceea ce știți deja ar trebui să fie suficient pentru a vă oferi niște abilități practice pentru cariera dvs. pe web.

Interogările sunt scrise fără ghilimele de escape, deoarece MySQL, MS SQLŞi PostGree sunt diferite.

Interogare SQL: obținerea câmpurilor specificate (necesare) din tabel

SELECT ID, country_title, count_people FROM table_name

Primim o listă de înregistrări: TOATE țările și populațiile lor. Numele câmpurilor obligatorii sunt indicate separate prin virgule.

SELECT * FROM table_name

* denotă toate câmpurile. Adică vor fi spectacole ABSOLUT TOTUL câmpuri de date.

Interogare SQL: scoaterea înregistrărilor dintr-un tabel, excluzând duplicatele

SELECTAȚI DISTINCT country_title FROM table_name

Primim o listă de înregistrări: țări în care se află utilizatorii noștri. Pot exista mulți utilizatori dintr-o singură țară. În acest caz, este cererea dvs.

Interogare SQL: afișarea înregistrărilor dintr-un tabel pe baza unei anumite condiții

SELECT ID, country_title, city_title FROM table_name WHERE count_people>100000000

Primim o listă de înregistrări: țări în care numărul de persoane este mai mare de 100.000.000.

Interogare SQL: afișarea înregistrărilor dintr-un tabel cu ordonare

SELECT ID, city_title FROM table_name ORDER BY city_title

Primim o listă de înregistrări: orașe în ordine alfabetică. La începutul A, la sfârșitul Z.

SELECT ID, city_title FROM table_name ORDER BY city_title DESC

Obținem o listă de înregistrări: orașe în sens invers ( DESC) Bine. La început I, la sfârșit A.

Interogare SQL: numărarea numărului de înregistrări

SELECTAȚI COUNT(*) FROM table_name

Obținem numărul (numărul) de înregistrări din tabel. În acest caz, NU există o listă de înregistrări.

Interogare SQL: ieșirea intervalului dorit de înregistrări

SELECT * FROM table_name LIMIT 2, 3

Obținem 2 (a doua) și 3 (a treia) înregistrări din tabel. Interogarea este utilă atunci când se creează navigarea pe pagini WEB.

Interogări SQL cu condiții

Afișarea înregistrărilor dintr-un tabel bazat pe o condiție dată folosind operatori logici.

Interogare SQL: construcție ȘI

SELECT ID, city_title FROM table_name WHERE country="Russia" AND oil=1

Primim o listă de înregistrări: orașe din Rusia ŞI au acces la petrol. Când să folosiți operatorul ŞI, atunci ambele condiții trebuie să se potrivească.

Interogare SQL: construcție SAU

SELECT ID, city_title FROM table_name WHERE country="Russia" SAU country="USA"

Primim o listă de înregistrări: toate orașele din Rusia SAU STATELE UNITE ALE AMERICII. Când să folosiți operatorul SAU, atunci cel puțin o condiție trebuie să se potrivească.

Interogare SQL: ȘI NU construcție

SELECT ID, user_login FROM table_name WHERE country="Russia" AND NOT count_comments<7

Primim o listă de înregistrări: toți utilizatorii din Rusia ŞI care a făcut NU MAI MAI 7 comentarii.

Interogare SQL: construcție IN (B)

SELECT ID, user_login FROM table_name WHERE country IN ("Rusia", "Bulgaria", "China")

Primim o listă de înregistrări: toți utilizatorii care locuiesc în ( ÎN) (Rusia, sau Bulgaria sau China)

Interogare SQL: NU ÎN construcție

SELECT ID, user_login FROM table_name WHERE country NOT IN ("Rusia","China")

Primim o listă de înregistrări: toți utilizatorii care nu locuiesc în ( NU IN) (Rusia sau China).

Interogare SQL: construcție IS NULL (valori goale sau NOT goale)

SELECT ID, user_login FROM table_name WHERE starea ESTE NULL

Primim o listă de înregistrări: toți utilizatorii pentru care starea nu este definită. NULL este o problemă separată și, prin urmare, este verificată separat.

SELECT ID, user_login FROM table_name WHERE starea NU ESTE NULL

Obținem o listă de înregistrări: toți utilizatorii în care starea este definită (NU NULL).

Interogare SQL: construcție LIKE

SELECT ID, user_login FROM table_name WHERE nume de familie LIKE „Ivan%”

Primim o listă de înregistrări: utilizatori al căror nume de familie începe cu combinația „Ivan”. Semnul % înseamnă ORICE număr de ORICE caractere. Pentru a găsi semnul %, trebuie să utilizați evadarea „Ivan\%”.

Interogare SQL: BETWEEN construcție

SELECT ID, user_login FROM table_name WHERE salariul INTRE 25000 SI 50000

Primim o listă de înregistrări: utilizatori care primesc un salariu de la 25.000 la 50.000 inclusiv.

Există o mulțime de operatori logici, așa că studiați documentația serverului SQL în detaliu.

Interogări SQL complexe

Interogare SQL: combinarea mai multor interogări

(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

Primim o listă de intrări: utilizatori care sunt înregistrați în sistem, precum și acei utilizatori care sunt înregistrați separat pe forum. Operatorul UNION poate combina mai multe interogări. UNION acționează ca SELECT DISTINCT, adică elimină valorile duplicat. Pentru a obține absolut toate înregistrările, trebuie să utilizați operatorul UNION ALL.

Interogare SQL: numărarea valorilor câmpului MAX, MIN, SUM, AVG, COUNT

Afișarea unei valori maxime a contorului în tabel:

SELECT MAX(contorul) FROM table_name

Ieșire a unei valori minime de contor din tabel:

SELECTAȚI MIN(contorul) FROM table_name

Afișarea sumei tuturor valorilor contorului în tabel:

SELECTAȚI SUMA(contorul) FROM table_name

Afișarea valorii medii a contorului în tabel:

SELECTAȚI AVG(contor) FROM table_name

Afișarea numărului de contoare din tabel:

SELECTAȚI COUNT(contorul) FROM table_name

Afișarea numărului de contoare din atelierul nr. 1 în tabel:

SELECT COUNT(counter) FROM table_name WHERE office="Workshop No. 1"

Acestea sunt cele mai populare echipe. Se recomandă, acolo unde este posibil, utilizarea interogărilor SQL de acest fel pentru calcule, deoarece niciun mediu de programare nu poate compara viteza de procesare a datelor decât serverul SQL însuși atunci când procesează propriile date.

Interogare SQL: gruparea înregistrărilor

SELECTAȚI continentul, SUM(țara_zona) FROM Țara GROUP BY continent

Primim o listă de înregistrări: cu numele continentului și suma zonelor tuturor țărilor lor. Adică, dacă există un director de țări în care fiecare țară are aria sa înregistrată, atunci folosind constructul GROUP BY puteți afla dimensiunea fiecărui continent (pe baza grupării pe continente).

Interogare SQL: folosind mai multe tabele prin alias

SELECT o.order_no, o.amount_paid, c.company FROM comenzi AS o, client AS cu WHERE o.custno=c.custno AND c.city="Tyumen"

Primim o listă de înregistrări: comenzi de la clienți care locuiesc numai în Tyumen.

De fapt, cu o bază de date proiectată corespunzător de acest tip, interogarea este cea mai frecventă, așa că a fost introdus în MySQL un operator special care funcționează de multe ori mai rapid decât codul scris mai sus.

SELECT o.order_no, o.amount_paid, z.company FROM comenzi AS o LEFT JOIN client AS z ON (z.custno=o.custno)

Subinterogări imbricate

SELECT * FROM table_name WHERE salariu=(SELECT MAX(salariu) FROM angajat)

Obținem o singură înregistrare: informații despre utilizatorul cu salariul maxim.

Atenţie! Subinterogările imbricate sunt unul dintre cele mai mari blocaje din serverele SQL. Împreună cu flexibilitatea și puterea lor, ele măresc semnificativ încărcarea serverului. Ceea ce duce la o încetinire catastrofală pentru alți utilizatori. Cazurile de apeluri recursive în interogări imbricate sunt foarte frecvente. Prin urmare, recomand insistent să NU folosiți interogări imbricate, ci să le împărțiți în altele mai mici. Sau utilizați combinația LEFT JOIN descrisă mai sus. În plus, acest tip de solicitare este o sursă sporită de încălcări de securitate. Dacă decideți să utilizați subinterogări imbricate, atunci trebuie să le proiectați foarte atent și să faceți rulări inițiale pe copii ale bazelor de date (baze de date de testare).

Interogările SQL modifică datele

Interogare SQL: INSERT

Instrucţiuni INTRODUCE vă permit să inserați înregistrări într-un tabel. Cu cuvinte simple, creați un rând cu date într-un tabel.

Opțiunea #1. Instrucțiunea care este adesea folosită este:

INSERT INTO table_name (id, user_login) VALUES (1, "ivanov"), (2, "petrov")

la masa" nume_tabel» 2 (doi) utilizatori vor fi introduși deodată.

Opțiunea #2. Este mai convenabil să folosiți stilul:

INSERT table_name SET id=1, user_login="ivanov"; INSERT table_name SET id=2, user_login="petrov";

Acest lucru are avantajele și dezavantajele sale.

Principalele dezavantaje:

  • Multe interogări SQL mici vor rula puțin mai lent decât o interogare SQL mare, dar alte interogări vor fi în coadă pentru service. Adică, dacă o interogare SQL mare durează 30 de minute pentru a se finaliza, atunci în tot acest timp interogările rămase vor fuma bambus și își vor aștepta rândul.
  • Solicitarea se dovedește a fi mai masivă decât versiunea anterioară.

Principalele avantaje:

  • În timpul interogărilor SQL mici, alte interogări SQL nu sunt blocate.
  • Ușurință de citit.
  • Flexibilitate. În această opțiune, nu trebuie să urmați structura, ci să adăugați doar datele necesare.
  • Când creați arhive în acest fel, puteți copia cu ușurință o linie și o puteți rula prin linia de comandă (consolă), astfel nu restaurând întreaga ARHIVĂ.
  • Stilul de scriere este similar cu declarația UPDATE, ceea ce face mai ușor de reținut.

Interogare SQL: UPDATE

UPDATE table_name SET user_login="ivanov", user_surname="Ivanov" WHERE id=1

În tabel " nume_tabel„în înregistrarea cu numărul id=1, valorile câmpurilor user_login și user_surname vor fi modificate la valorile specificate.

Interogare SQL: DELETE

DELETE FROM table_name WHERE id=3

În tabelul table_name înregistrarea cu numărul ID 3 va fi ștearsă.

  1. Se recomandă să scrieți toate numele câmpurilor cu litere mici și, dacă este necesar, să le separați cu un spațiu forțat „_” pentru compatibilitate cu diferite limbaje de programare, precum Delphi, Perl, Python și Ruby.
  2. Scrieți comenzile SQL cu majuscule pentru a fi lizibile. Amintiți-vă întotdeauna că alte persoane pot citi codul după dvs. și, cel mai probabil, voi înșivă după N perioadă de timp.
  3. Numiți câmpurile mai întâi cu un substantiv și apoi cu o acțiune. De exemplu: city_status, user_login, user_name.
  4. Încercați să evitați cuvintele rezervate în diferite limbi care pot cauza probleme în SQL, PHP sau Perl, cum ar fi (nume, număr, link). De exemplu: linkul poate fi folosit în MS SQL, dar este rezervat în MySQL.

Acest material este o scurtă referință pentru munca de zi cu zi și nu pretinde a fi o sursă super mega autorizată, care este sursa originală a interogărilor SQL ale unei anumite baze de date.