SQL este limbajul de interogare structurat. A fost creat special pentru a gestiona și accesa datele deținute în baze de date relaționale. Prima activitate comercială care a folosit SQL a fost Oracle, care are încă limbajul de interogare SQL * Plus ca bază a întregului său sistem relațional de gestionare a bazelor de date (RDMS).
Astăzi, MySQL, SQL Server, SAP și Sybase folosesc SQL pentru acces la baze de date. În acest ghid, vă vom oferi versiunea standard a comenzilor SQL, acordând o atenție deosebită implementării Oracle în SQL * Plus.
ALEGEA EDITORULUI: Vă recomandăm instrumentele de gestionare a infrastructurii SolarWinds pentru a monitoriza toate instrumentele dvs. Microsoft, inclusiv SQL Server. Aveți nevoie de o suită de utilități de monitorizare care să poată interacționa pentru a acoperi toate facilitățile care vă sprijină baza de date relațională.
Baze de date relaționale
SQL administrează baze de date relaționale. O bază de date relațională conține tabele care sunt separate pentru a reduce repetarea datelor. Procesul de decizie asupra grupărilor corespunzătoare de categorii de date se numește „normalizare.”În unele cazuri, cerințele de performanță pot dicta că tabelele funcționează mai bine dacă nu sunt normalizate complet. Acest proces se numește „denormalizare” și este o întâlnire rară.
Fiecare tabel are nevoie de o coloană care identifică în mod unic fiecare rând. Aceasta se numește „cheia principala.”Celelalte tabele care se pot alătura acestei entități trebuie să conțină o referință la cheia primară din fiecare înregistrare. Această referință se numește „cheie externă.” Tu a te alatura tabele împreună prin potrivirea cheii străine într-un tabel cu cheia primară în alta. Această acțiune este efectuată cu SQL. Diagrama de entitate-relație este o referință utilă atunci când decideți cum să vă structurați instrucțiunea SQL.
Pentru a accelera accesul, este normal să plasați un index pe fiecare cheie primară din baza de date. De asemenea, este posibil să stocați aderare frecvent utilizate pentru a crea tabele virtuale, care se numesc „vizualizari.“
Încă un obiect de bază de date este a trăgaci. Aceasta este o bucată de SQL care se lansează ori de câte ori o valoare este adăugată la o coloană sau este modificată. Un declanșator va actualiza valorile într-o coloană dintr-un alt tabel sau în alte coloane din același tabel. Acest lucru se întâmplă dacă o valoare este adăugată sau modificată în coloana pe care este plasat declanșatorul. De asemenea, poate restricționa valorile care pot fi introduse într-o coloană.
DQL, DDL, DCL și DML
SQL include patru subseturi de comandă. Acestea sunt Limbajul interogării datelor (DQL), Descrierea limbii (DDL), Limbajul de control al datelor (DCL), și Limbajul de manipulare a datelor (DML).
La majoritatea proiectelor, Administratorul bazei de date (DBA) este singurul membru al echipei care are privilegiile de utilizare DDL. Acest grup de comandă creează, schimbă și scade tabele, indexuri, declanșatoare și vizualizări.
DML este utilizat pentru a adăuga, modifica sau elimina înregistrările din tabelele din baza de date. Accesul la aceste funcții SQL este de obicei limitat la personalul de sprijin sau la membrii seniori, responsabili ai comunității de utilizatori.
DQL este folosit pentru a genera rapoarte din baza de date. Acest subset de comandă este folosit de programatori și poate fi pus la dispoziția utilizatorilor finali, astfel încât să poată efectua propriile întrebări.
Gestionarea privilegiilor utilizatorului este stocată în aceeași bază de date ca și datele. Cu toate acestea, accesul la aceste tabele este de obicei limitat la DBA. Gestionarea accesului utilizatorilor este implementată prin intermediul DCL.
Există o comandă SQL utilă care nu se încadrează în clasificările nici DQL, DDL, DCL sau DML. Aceasta este “descrie”Care este de obicei implementat ca DESC. Aceasta arată structura unui obiect din baza de date. În cazul unui tabel, acesta va afișa o listă de coloane și tipul de date și dimensiunea fiecăreia. Acesta va arăta SQL care a creat o vizualizare sau un declanșator și va arăta coloanele care sunt implicate într-un index dat.
Operatori relaționali
Teoria bazelor de date relaționale a fost definită de E. F. Codd în 1970. În definiția Codd se află o cerință a unui instrument de interogare care trebuie să implementeze opt operații relaționale esențiale. Acestea sunt:
- SELECTAȚI
- PROIECT
- A TE ALATURA
- PRODUS
- UNIUNE
- INTERSECT
- DIFERENȚĂ
- DIVIDE
Trebuie să stăpâniți fiecare dintre aceste operațiuni pentru a accesa eficient datele dintr-o bază de date relațională. Acestea sunt explicate mai jos.
SELECTAȚI
SELECT a fost numită inițial RESTRICT. Este capacitatea de a extrage o înregistrare sau un grup de înregistrări potrivite dintr-un tabel din baza de date. Pe lângă faptul că este o operație teoretică, SELECTAȚI este numele comenzii principale în orice implementare SQL. De fapt, toate preluările de date sunt executate cu un SELECT. Comanda este atât de puternică încât poate fi modificată în mai multe moduri. Majoritatea SQL pe care va trebui să înveți sunt „clauzele” dintr-o instrucțiune SELECT.
PROIECT
PROIECT este abilitatea de a izola o coloană (sau „atribut”) într-un tabel. Aceasta este întotdeauna implementată cu o declarație SELECT.
A TE ALATURA
JOIN face legătura între tabele pe un atribut comun. Utilizați cheia străină într-un tabel pentru a potrivi valorile cheii primare dintr-un alt tabel. Actul unifică efectiv două tabele temporar. Aceasta este implementată ca o clauză într-o declarație SELECT. O îmbinare între două tabele va lăsa automat înregistrările care nu apar în ambele tabele de asistență. Un „îmbinare exterioară”Va afișa înregistrări care nu au o potrivire în celălalt tabel, lăsând câmpurile care ar fi trebuit să fie furnizate de cealaltă tabelă rămase necompletate.
PRODUS
PRODUSUL este cunoscut și sub numele de „ori.”Aceasta este implementată ca o declarație SELECT care atrage date din două tabele, dar nu specifică unirea dintre ele. În viața reală, există foarte puține motive practice pentru care oricine ar putea efectua vreodată de două ori pe două mese. De obicei este un semn de avertizare că ai scris greșit o clauză JOIN. Rezultatul unui PRODUS este că fiecare înregistrare de calificare dintr-un tabel se potrivește cu fiecare înregistrare de calificare din celălalt tabel. Deci, dacă creați o instrucțiune SELECT din două tabele, fiecare având zece înregistrări, rezultatele vor fi în total 100 de înregistrări.
UNIUNE
UNION este un operator comun în teoria seturilor. Dacă aveți două seturi, uniunea combină toți membrii ambelor seturi. Duplicarea este eliminată din rezultate. În SQL, acest lucru este implementat de SAU Operator boolean.
INTERSECT
INTERSECT este celălalt operator principal al teoriei de seturi. Dacă aveți două seturi, intersecția descrie acei subiecți care sunt membri ai ambelor seturi. Orice subiect care este membru al unuia dintre cele două seturi este exclus de la rezultate. În SQL, acest lucru este implementat de ȘI Operator boolean.
DIFERENȚĂ
DIFERINȚA este cunoscută și sub numele de „minus”Și în notație este reprezentat de semnul minus („ – ”). Există mai multe moduri de a implementa o DIFERENȚĂ. Poate fi creat prin includerea unui boolean NU în criteriile de selecție și poate fi implementat și de către MINUS operator urmat de o solicitare.
DIVIDE
DIVIDE este o operație neobișnuită care, la fel ca PRODUCT, are foarte puține aplicații practice. Codd a considerat DIVIDE ca testul acid al oricărui sistem relațional și instrumentul său de interogare, astfel încât fiecare implementare SQL include această capacitate doar pentru a se califica pentru titlul „relațional”. În realitate, nu îl veți folosi niciodată. Implementarea unui DIVIDE necesită o serie de subîncărcări care să alimenteze un sistem MINUS în Oracle SQL * Plus și un an CU EXCEPTIA operator în unele alte implementări SQL, cum ar fi SQL Server și PostgreSQL.
Operatori booleeni
George Boole a fost un matematician britanic care a murit în 1864. El a inventat algebra booleană, care nu a avut nicio aplicație practică până când la sfârșitul secolului XX au apărut domeniile informaticii și a bazelor de date relaționale. Algebra booleană este esențială pentru operațiunile SQL – nu puteți scrie decât cea mai de bază interogare SQL fără a utiliza logica booleană. Logica booleană stă la baza tuturor motoarelor de căutare. Operatorii cheie boolezi din SQL sunt:
- ȘI
- SAU
- NU
Un alt britanic victorian foarte interesant despre care trebuie să știți este Augustus de Morgan. A venit cu o observație asupra transformării în teoria booleană a seturilor, de care fiecare programator SQL trebuie să fie conștient. Aceasta este faptul că un NU poate modifica modul în care funcționează un AND și un OR. Versiunea scurtă este că trebuie să fii atent cum folosești paranteze în declarațiile tale pentru a evita consecințele nedorite. Deci „și” și „sau” ar trebui să fie, de asemenea, considerate a fi operatori booleeni importanți în SQL.
ȘI
ȘI pune în aplicare INTERSECT în teoria seturilor. Dacă doriți să extrageți înregistrări dintr-o bază de date care se potrivesc doar cu două cerințe și nu doar cu unul dintre criteriile compuse, atunci trebuie să utilizați un AND. De exemplu, puteți derula o afacere de semințe și baza de date conține un tabel care stochează toate semințele cu atributele lor. Un client apelează și dorește doar begoniile galbene. Deci, ai căuta în baza de date specie = „begonia” ȘI culoare = „galben” pentru a obține catalogul de semințe potrivit.
SAU
SAU vă oferă tuturor membrilor a două seturi – este UNIUNEA în teoria seturilor. Deci, în baza de date a semințelor dvs., dacă ați efectuat o întrebare: specie = „begonia” SAU culoare = „galben”, veți obține rezultate care includ trandafiri galbeni, begonia galbenă, begonii roz și narcise galbene. În acest exemplu, begoniile galbene se califică de două ori. În teoria relațională, o singură înregistrare ar trebui returnată. Din fericire, SQL include calificativul DISTINCT, deci intrând SELECTĂ DISTINȚĂ * DIN FLORI WHERE specie = „begonia” SAU culoare = „galben”, acel record galben de begonie ar apărea o singură dată.
NU
NU este ușor de înțeles. Acesta exclude rezultatele pe care le-ar produce următoarea afirmație: ȘI NU, SAU NU. În practică, nu veți folosi aproape niciodată „SAU NU” într-o interogare. Dacă clientul tău de semințe dorea orice altă culoare de begonie decât galben, ai folosi specie = „begonia” ȘI NU culoare = „galben” pentru a selecta produsele de oferit.
Console
Conform Legii lui De Morgan:
„Negația unei disjuncții este conjuncția negațiilor; iar negația unei conjuncții este disjuncția negațiilor “.
În limba engleză simplă, utilizați paranteze cu atenție în instrucțiunea SQL când includeți, de asemenea, un NOT pentru a împiedica transformarea AND-urilor dvs. în OR și vice versa. Condițiile de bracketing pot reduce, de asemenea, criteriile de selecție. De exemplu, NU (specie = „begonia” ȘI culoare = „galben”) este la fel ca NU specii = „begonia” SAU NU culoare = „galben”.
Extragerea înregistrărilor
Implementări SQL diferite folosesc sintaxa diferită, dar în acest ghid, vom urma SQL * Plus al Oracle. Structura de bază a unei selecții de date SQL este:
SELECTAȚI
DIN
le. DCL este utilizat pentru a acorda sau a revoca accesul la baza de date și la tabelele sale. Operatori relaționali SQL include o serie de operatori relaționali care permit interogarea datelor din baza de date. Acești operatori includ SELECT, PROIECT, A TE ALATURA, PRODUS, UNIUNE, INTERSECT, DIFERENȚĂ și DIVIDE. Acești operatori permit utilizatorilor să extragă informații specifice din baza de date. Operatori booleeni SQL include operatori booleeni, cum ar fi ȘI, SAU și NU, care permit utilizatorilor să creeze interogări complexe. Acești operatori permit utilizatorilor să combine mai multe condiții pentru a obține informații specifice din baza de date. Extragerea înregistrărilor SQL permite utilizatorilor să extragă informații specifice din baza de date. Acest proces implică utilizarea operatorilor relaționali și booleeni pentru a crea interogări complexe. Mese de alăturare SQL permite utilizatorilor să alăture mai multe tabele pentru a obține informații specifice din baza de date. Acest proces implică utilizarea cheilor primare și externe pentru a conecta tabelele. Subinterogările SQL permite utilizatorilor să creeze interogări complexe care implică mai multe niveluri de interogare. Aceste interogări pot fi utilizate pentru a extrage informații specifice din baza de date. COMANDA PRIN SQL permite utilizatorilor să grupeze informațiile din baza de date în funcție de anumite criterii. Această comandă este utilă pentru a obține informații agregate din baza de date. Funcții SQL include o serie de funcții care permit utilizatorilor să efectueze operații matematice și logice asupra datelor din baza de date. Aceste funcții includ SUM, AVG, COUNT, MAX și MIN. În concluzie, SQL este un limbaj de interogare structurat care este utilizat pentru a gestiona și accesa datele din bazele de date relaționale. Acest limbaj include o serie de comenzi și operatori care permit utilizatorilor să extragă informații specifice din baza de date. Pentru a gestiona bazele de date relaționale, este important să aveți o înțelegere solidă a SQL și a modului în care acesta poate fi utilizat pentru a extrage informații utile din baza de date.