Interogările sunt scrise fără ghilimele de escape, deoarece MySQL, MS SQLŞi PostGree sunt diferite.
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.
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.
Primim o listă de înregistrări: țări în care numărul de persoane este mai mare de 100.000.000.
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.
Obținem numărul (numărul) de înregistrări din tabel. În acest caz, NU există o listă de înregistrări.
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.
Afișarea înregistrărilor dintr-un tabel bazat pe o condiție dată folosind operatori logici.
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ă.
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ă.
Primim o listă de înregistrări: toți utilizatorii din Rusia ŞI care a făcut NU MAI MAI 7 comentarii.
Primim o listă de înregistrări: toți utilizatorii care locuiesc în ( ÎN) (Rusia, sau Bulgaria sau China)
Primim o listă de înregistrări: toți utilizatorii care nu locuiesc în ( NU IN) (Rusia sau China).
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).
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\%”.
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.
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.
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.
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).
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)
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, de asemenea, semnificativ sarcina pe server. 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).
Instrucţiuni INTRODUCE vă permit să introduceți înregistrări într-un tabel. Cu cuvinte simple, creați un rând cu date într-un tabel.
la masa" table_name„2 (doi) utilizatori vor fi introduși deodată.
Acest lucru are avantajele și dezavantajele sale.
În tabel " table_name„în înregistrarea cu numărul id=1, valorile câmpurilor user_login și user_surname vor fi modificate la valorile specificate.
În tabelul table_name înregistrarea cu numărul ID 3 va fi ștearsă.
Acest material este o referință scurtă pentru munca de zi cu zi și nu pretinde a fi o sursă super mega autorizată, care este sursa originală de interogări SQL pentru o anumită bază de date.
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.
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.
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.
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.
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.
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– înregistrarea rezultatului cererii în conformitate cu cerințele pentru comoditatea perceperii acesteia 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 pe baza acestuia.
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.
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.
Continuăm să explorăm capabilitățile SQL Server de la Microsoft și următoarea noastră componentă este Căutare text integral, în versiunea rusă este „ Căutare text integral", iar acum vom afla de ce este nevoie și cum să implementăm această căutare full-text într-un server SQL folosind această componentă.
Și vom începe, desigur, prin a lua în considerare elementele de bază ale căutării full-text, i.e. ce este si de ce este necesar?
Căutare text integral este o căutare de cuvinte sau expresii în datele text. În mod obișnuit, acest tip de căutare este folosit pentru a căuta text într-o cantitate mare de date, de exemplu, un tabel cu un milion sau mai multe rânduri, deoarece este mult mai rapidă decât o căutare obișnuită, care poate fi făcută folosind constructul LIKE.
Căutarea full-text implică crearea unui index special ( este diferit de indicii obișnuiți) date text, care este un fel de dicționar de cuvinte care apar în aceste date.
Folosind căutarea full-text, puteți implementa un fel de sistem de căutare a documentelor ( aceste. linii), conform cuvintelor sau expresiilor din baza de date a afacerii dvs. Deoarece, pe lângă munca sa rapidă, are și capacitatea de a clasifica documentele găsite, i.e. atribuiți un rang fiecărui rând găsit, cu alte cuvinte, puteți găsi cele mai relevante înregistrări, adică cel mai potrivit pentru cererea dvs.
Înainte de a începe să creați o căutare de text integral, există câteva lucruri importante pe care trebuie să le știți:
Nota! Voi implementa căutarea full-text folosind exemplul SQL Server 2008 R2. De asemenea, se presupune că ați instalat deja componenta Full-Text Search, dacă nu, instalați-o adăugând componenta corespunzătoare prin „Centrul de instalare SQL Server”, adică; bifați caseta corespunzătoare.
În exemplele de mai jos, voi folosi SQL Server Management Studio ca instrument pentru crearea și gestionarea cataloagelor și indicilor full-text.
Să presupunem că avem o bază de date TestBase, iar în ea există un tabel TestTable, în care există doar două câmpuri, primul (id) este cheia primară, iar al doilea (textdata) este text, conform căruia noi va efectua o căutare integrală.
CREATE TABLE TestTable(id int IDENTITY(1,1) NOT NULL, textdata varchar(500) NULL, CONSTRAINT PK_TestTable PRIMARY KEY CLUSTERED (id ASC))
De exemplu, va conține următoarele date
Pentru a crea un catalog de text complet, precum și un index, puteți utiliza fie interfața grafică SSMS, fie instrucțiunile T-SQL, vom analiza ambele metode.
Crearea unui catalog full-text în T-SQL
CREATE FULLTEXT CATALOG TestCatalog WITH ACCENT_SENSITIVITY = ON CA AUTORIZARE IMPLICITĂ dbo GO
Crearea unui catalog full-text în GUI Management Studio
Exact același catalog full-text poate fi creat în interfața grafică a Management Studio. Pentru a face acest lucru, deschideți baza de date, accesați folderul Stocare -> Cataloage full-text, faceți clic dreapta pe acest articol și selectați „ Creați un catalog cu text integral».
Se va deschide o fereastră de creare a directorului, unde specificăm numele directorului și opțiunile acestuia.
Pentru a schimba opțiunile de director, puteți folosi instrucțiunea ALTER FULLTEXT CATALOG, de exemplu, să facem catalogul nostru să nu mai ia în considerare diacritice, pentru aceasta scriem o instrucțiune SQL care ne va reconstrui catalogul cu noua opțiune.
ALTER FULLTEXT CATALOG TestCatalog RECONSTRUIRE WITH ACCENT_SENSITIVITY=OFF GO
Pentru a elimina un director puteți folosi o instrucțiune T-SQL, de exemplu
DROP FULLTEXT CATALOG TestCatalog
Toate acestea ar putea fi făcute în interfața grafică a Management Studio ( pentru a modifica parametrii directorului „Proprietăți”, pentru a șterge „Șterge”)
Odată ce ați creat un catalog cu text integral, puteți începe să creați indecși cu text integral în el. În cazul nostru, dorim să creăm un index full-text care să includă câmpul textdata al tabelului TestTable.
Crearea unui index full-text în T-SQL
Pentru a crea un index full-text, puteți scrie următoarea instrucțiune SQL
CREATE FULLTEXT INDEX ON TestTable(textdata) KEY INDEX PK_TestTable ON (TestCatalog) WITH (CHANGE_TRACKING AUTO) GO
Crearea unui index full-text în GUI Management Studio
Un index full-text poate fi creat folosind instrumente grafice pentru a face acest lucru, deschideți proprietățile catalogului full-text și accesați articolul „; Tabele sau vederi", selectați tabelul, câmpul, indexul unic și metoda dorite pentru urmărirea modificărilor. În cazul nostru, avem un singur tabel disponibil și un câmp.
Dacă este necesar, puteți modifica parametrii indexului full-text. De exemplu, să schimbăm modul în care sunt urmărite modificările de la automat la manual. Pentru a face modificări în interfața grafică, puteți utiliza " Proprietăți catalog text integral -> Tabele sau vizualizări", pe care l-am folosit pentru a crea indexul full-text.
Sau puteți scrie următorul cod
ALTER FULLTEXT INDEX ON TestTable SET CHANGE_TRACKING = MANUAL
Pentru a șterge un index full-text, pur și simplu eliminați tabelul din lista de obiecte asociate cu catalogul full-text din aceeași fereastră " Proprietăți catalog text integral -> Tabele sau vizualizări»
Sau scrie cod T-SQL
ROȚIȚI INDEXUL TEXTULUI COMPLET PE TestTable
După cum am menționat mai devreme, un catalog și un index cu text complet pot fi create folosind vrăjitorul, de exemplu. pas cu pas, pentru a face acest lucru, faceți clic dreapta pe tabelul pe care vrem să-l includem în căutarea full-text și selectați „ Index text complet ->Definește index text complet».
Nota! Înainte de a face acest lucru, am șters atât directorul, cât și indexul pe care le-am creat în exemplele anterioare.
Aceasta va lansa Expertul de indexare a textului complet SQL Server.
Apoi coloana care va fi inclusă în indexul textului integral.
Apoi trebuie să alegeți o modalitate de a urmări modificările.
Indicăm numele directorului și opțiunile acestuia pentru a-l crea, deoarece se presupune că nu avem un director, l-am putea selecta;
Aici putem configura programul pentru completarea catalogului full-text.
Pentru a crea un catalog și un index, faceți clic pe „ Gata».
În fereastra următoare vom vedea rezultatul operațiunilor de creare a unui catalog și index full-text. În cazul meu, totul a mers bine.
Astfel, am creat catalogul full-text și indexul simultan folosind vrăjitorul.
Voi spune imediat că vom lua în considerare interogările full-text mai detaliat în materialele următoare, dar deocamdată, ca exemplu și confirmare că căutarea noastră full-text funcționează, să scriem câteva interogări simple cu text integral.
Dacă vă amintiți, TestTable-ul nostru conține definiții ale tehnologiilor, limbajelor de programare, în general, definiții legate de domeniul IT. Să presupunem că vrem să obținem toate înregistrările unde există o mențiune despre Microsoft, pentru aceasta scriem o interogare full-text cu cuvântul cheie CONTAINS, de exemplu:
SELECTAȚI * FROM TestTable WHERE CONTAINS (date text, „„Microsoft”)
Am obținut rezultatul, dar să presupunem că trebuie să-l sortăm și după relevanță, cu alte cuvinte, ce rânduri sunt mai relevante pentru interogarea noastră. Pentru a face acest lucru, vom folosi funcția CONTAINSTABLE, care atribuie un rang fiecărei înregistrări găsite.
SELECTați Table1.id AS ID, RowRank.Rank ca , Table1.textdata ca FROM TestTable Table1 INNER JOIN CONTAINSTABLE(TestTable, textdata, ""Microsoft") ca RowRank pe Table1.id=RowRank.
ORDER BY RowRank.RANK DESC
După cum puteți vedea, rangul este stabilit și liniile sunt sortate după el. Algoritmul de clasare în sine, precum și informații mai detaliate despre căutarea full-text, pot fi găsite în SQL Server Books Online.
Propun sa inchei aici, sper ca totul a fost clar, succes!
De aceea am pregătit un scurt tur al elementelor de bază ale SQL. Să începem!
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 după nume lună. Este format din 3 coloane:
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));
Tip de date | Descriere |
---|---|
DATA | Valori date |
DATETIME | Valori date și ore exacte la minut |
TIMP | Valori de timp |
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.
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 de la 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.
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
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.
WHERE acceptă, de asemenea, mai multe comenzi speciale, permițându-vă să verificați rapid interogările cele mai frecvent utilizate. Iată-le:
De exemplu, dacă vrem să selectăm albume cu popŞi suflet muzica, putem folosi IN("value1","value2") .
SELECTAȚI * DIN albumele WHERE genul 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;
SQL este plin de funcții care fac tot felul de lucruri utile. Iată câteva dintre cele mai frecvent utilizate:
Pentru a obține cel mai recent an în tabelul nostru, trebuie să scriem următoarea interogare SQL:
SELECT MAX (lansat) FROM albume;
Î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);
Î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.
Dacă te uiți la exemplul anterior, vei observa că există două coloane numite 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;
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:
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;Ș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!
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 efectiv 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.