Structured Query Language (SQL) este unul dintre elementele fundamentale ale arhitecturii moderne a bazelor de date. SQL definește metodele utilizate pentru a crea și manipula baze de date relaționale pe toate platformele majore. La prima vedere, limbajul poate părea intimidant și complex, dar nu este atât de dificil.
Despre SQL
Pronunția corectă a SQL este o problemă controversată în comunitatea bazelor de date. În standardul său SQL, Institutul Național de Standardizare American a declarat că pronunția oficială este „es queue el. "Cu toate acestea, mulți profesioniști din baza de date au adoptat pronunția argoului" continuare ". La fel ca și pronunția de GIF, nu există un răspuns corect.
SQL vine în multe variante. Bazele de date Oracle își folosesc propriul PL / SQL. Microsoft SQL Server folosește Transact-SQL. Toate variațiile se bazează pe standardul industrial ANSI SQL.
Această introducere folosește comenzi SQL conforme ANSI care funcționează pe orice sistem modern de baze de date relaționale.
DDL și DML
Comenzile SQL pot fi împărțite în două sub-limbaje principale. Limbajul de definire a datelor conține comenzile utilizate pentru a crea și distruge baze de date și obiecte de baze de date. După ce structura bazei de date este definită cu DDL, administratorii și utilizatorii bazei de date pot utiliza Limbajul de manipulare a datelor pentru a insera, prelua și modifica datele conținute în acesta.
SQL acceptă un al treilea tip de sintaxă numit Limbajul de control al datelor. DCL guvernează accesul de securitate la obiectele din baza de date. De exemplu, a Script DCL acordă sau revocă anumite conturi de utilizator dreptul de a citi sau scrie în tabele în una sau mai multe zone definite ale bazei de date. În majoritatea mediilor gestionate de mai mulți utilizatori, administratorii de baze de date execută de obicei scripturi DCL.
Comenzi de limbaj pentru definirea datelor
Limbajul de definire a datelor este utilizat pentru a crea și distruge baze de date și obiecte de baze de date. Aceste comenzi sunt utilizate în principal de administratorii bazei de date în timpul fazelor de configurare și eliminare a unui proiect de bază de date. DDL se învârte în jurul a patru comenzi principale—crea, utilizare, modifica, și cădere brusca.
Crea
crea comanda stabilește baze de date, tabele sau interogări pe platforma dvs. De exemplu, comanda:
CREAȚI angajați din BAZA DE DATE;
creează o bază de date goală numită angajați pe SGBD. După crearea bazei de date, următorul pas este crearea de tabele care conțin date. O altă variantă a crea porunca realizează acest scop. Comanda:
CREATE TABLE personal_info (prenume_car (20) nu nul, prenume_car (20) nu nul, angajat_id int nu nul);
stabilește un tabel intitulat informatie personala în baza de date curentă. În exemplu, tabelul conține trei atribute: Nume, numele de familie, și card de identitate al angajatului împreună cu câteva informații suplimentare.
Utilizare
utilizare comanda specifică baza de date activă. De exemplu, dacă lucrați în prezent în baza de date de vânzări și doriți să emiteți câteva comenzi care vor afecta baza de date a angajaților, prefațați-le cu următoarea comandă SQL:
Angajați USE;
Verificați din nou baza de date în care lucrați înainte de a emite comenzi SQL care manipulează datele.
Modifica
După ce ați creat un tabel într-o bază de date, modificați definiția acestuia prin modifica comanda, care se modifică la structura unui tabel fără a o șterge și a o recrea. Aruncați o privire la următoarea comandă:
ALTER TABLE personal_info ADAUGĂ salariu bani nuli;
Acest exemplu adaugă un nou atribut în tabelul personal_info - salariul unui angajat. bani argumentul specifică faptul că salariul unui angajat stochează în format de dolari și cenți. În cele din urmă, nul cuvântul cheie spune bazei de date că este OK ca acest câmp să nu conțină nicio valoare pentru un anumit angajat.
cădere brusca
Comanda finală a limbajului de definire a datelor, cădere brusca, elimină obiecte întregi de baze de date din SGBD. De exemplu, pentru a elimina definitiv tabelul personal_info pe care l-am creat, utilizați următoarea comandă:
DROP TABLE personal_info;
În mod similar, comanda de mai jos va fi utilizată pentru a elimina întreaga bază de date a angajaților:
Angajații DROP DATABASE;
Folosiți această comandă cu grijă. cădere brusca comanda elimină structuri de date întregi din baza de date. Dacă doriți să eliminați înregistrări individuale, utilizați șterge comanda limbajului de manipulare a datelor.
Comenzi de limbaj de manipulare a datelor
Limbajul de manipulare a datelor este utilizat pentru a prelua, insera și modifica informațiile bazei de date. Aceste comenzi DML oferă cadrul tipic pentru interacțiunea cu baza de date în mod obișnuit.
Introduce
introduce comanda adaugă înregistrări la un tabel existent. Revenind la exemplul personal_info din secțiunea anterioară, imaginați-vă că departamentul nostru de resurse umane trebuie să adauge un nou angajat la baza sa de date. Folosiți o comandă similară cu aceasta:
INSERT INTO personal_info
valori ('bart', 'simpson', 12345, 45000 $);
Rețineți că există patru valori specificate pentru înregistrare. Acestea corespund atributelor tabelului în ordinea în care au fost definite: Nume, numele de familie, card de identitate al angajatului și salariu.
Selectați
Selectați comanda este cea mai frecvent utilizată comandă în SQL. Acesta preia informații specifice dintr-o bază de date operațională. Aruncați o privire la câteva exemple, din nou folosind tabelul personal_info din baza de date a angajaților.
Comanda prezentată mai jos recuperează toate informațiile conținute în tabelul personal_info. Asteriscul este un caracter wildcard în SQL.
SELECTAȚI *
FROM personal_info;
Alternativ, limitați atributele care sunt preluate din baza de date specificând ce este selectat. De exemplu, departamentul Resurse Umane poate solicita o listă cu numele de familie ale tuturor angajaților din companie. Următoarea comandă SQL va prelua numai acele informații:
SELEGEZE prenume
FROM personal_info;
Unde clauza limitează înregistrările care sunt recuperate la cele care îndeplinesc criteriile specificate. CEO-ul ar putea fi interesat să revizuiască evidența personalului tuturor angajaților foarte bine plătiți. Următoarea comandă preia toate datele conținute în personal_info pentru înregistrări care au o valoare salarială mai mare de 50.000 USD:
SELECTAȚI *
FROM personal_info
UNDE salariu> 50000 USD;
Actualizați
Actualizați comanda modifică informațiile conținute într-un tabel, fie în bloc, fie individual. Să presupunem că compania le oferă tuturor angajaților o creștere a salariului cu 3% din costul vieții anual. Următoarea comandă SQL aplică această lovitură tuturor angajaților stocați în baza de date:
ACTUALIZARE personal_info
Salariu SET = salariu * 1,03;
Când noul angajat Bart Simpson demonstrează performanțe superioare cerințelor datoriei, conducerea dorește să recunoască realizările sale stelare cu o majorare de 5.000 USD. Clauza WHERE îl desemnează pe Bart pentru această majorare:
ACTUALIZARE personal_info
SET salariu = salariu + 5000
UNDE angajat_id = 12345;
Șterge
În cele din urmă, să aruncăm o privire la șterge comanda. Veți descoperi că sintaxa acestei comenzi este similară cu cea a celorlalte comenzi DML. Comanda DELETE, cu un Unde , eliminați o înregistrare dintr-un tabel:
ȘTERGEȚI DE la personal_info
UNDE angajat_id = 12345;
DML acceptă și câmpuri agregate. Într-o Selectați declarație, operatorilor matematici le place sumă și numara rezumați datele dintr-o interogare. De exemplu, interogarea:
selectați numărul (*) din personal_info;
numără numărul de înregistrări din tabel.
Alăturări la baze de date
A a te alatura statement combină datele în mai multe tabele pentru a procesa în mod eficient cantități mari de date. Aceste afirmații sunt locul în care se află adevărata putere a unei baze de date.
Pentru a explora utilizarea unui element de bază a te alatura operație de combinare a datelor din două tabele, continuați cu exemplul folosind tabelul personal_info și adăugați un tabel suplimentar la mix. Să presupunem că aveți un tabel numit acțiune disciplinară care a fost creat cu următoarea declarație:
CREATE TABLE disciplinary_action (action_id int not null, angajat_id int not nul, comments char (500));
Acest tabel conține rezultatele acțiunilor disciplinare pentru angajații companiei. Nu conține alte informații despre angajat decât numărul de angajat.
Să presupunem că ați fost însărcinat cu crearea unui raport care să enumere măsurile disciplinare întreprinse împotriva tuturor angajaților cu un salariu mai mare de 40.000 USD. Utilizarea unei operații JOIN, în acest caz, este simplă. Obțineți aceste informații folosind următoarea comandă:
SELECT personal_info.first_name, personal_info.last_name, disciplinary_action.comments
FROM personal_info INNER JOIN disciplinar_action ON personal_info.employee_id = disciplinary_action.employee_id
UNDE personal_info.salary> 40000;
Tipuri de îmbinări

Îmbinările vin în mai multe arome. În instrucțiunea SQL, primul tabel (numit de obicei Tabelul A sau Tabelul din stânga) se alătură la al doilea tabel (denumit de obicei Tabelul B sau Masa dreapta) într-o manieră conștientă de poziție. Astfel, dacă modificați ordinea tabelelor din instrucțiunea join, rezultatele operației vor diferi. Principalele tipuri de unire includ:
- Alăturare interioară: Se potrivește numai cu înregistrările în care pe condiția se potrivește cu aceleași înregistrări din ambele tabele.
- Alăturare exterioară: Potrivește numai înregistrările din ambele tabele care exclude rezultatele identificate în pe condiție.
- Alăturați-vă corect: Se potrivește cu toate înregistrările din tabelul B plus înregistrările din tabelul A care se potrivesc cu pe condiție.
- Stânga Alăturați-vă: Se potrivește cu toate înregistrările din tabelul A plus înregistrările din tabelul B care se potrivesc cu pe condiție.
- Alăturați-vă încrucișat: Potrivește toate înregistrările ca și cum tabelele ar fi identice. Acest proces generează ceva numit produs cartezian. Adesea, îmbinările încrucișate nu sunt binevenite, deoarece se potrivesc cu fiecare rând al tabelului A, individual, cu fiecare rând al tabelului B. Astfel, dacă Tabelul A a oferit cinci înregistrări, iar Tabelul B a oferit 9 înregistrări, o interogare de îmbinare încrucișată oferă 45 de rânduri rezultate.