Funcționalitatea limbajului SQL. Introducere în limbajul de interogare structurat SQL

SQL este un limbaj de interogare structurat. SQL nu există fără baze de date - nu poți scrie programe în el, iar în acest sens nu este un limbaj de programare precum PHP, dar atunci când ai de-a face cu un anumit SGBD, atunci nu te poți descurca fără cunoștințe de SQL. Puteți scrie interogări simple pe el sau puteți efectua tranzacții mari constând din mai multe interogări complexe. O interogare SQL este un fel de comandă către o bază de date. O astfel de comandă poate solicita returnarea informațiilor care îndeplinesc anumite criterii sau poate solicita ștergerea oricăror înregistrări etc. O comandă SQL este un șir simplu, ca acesta:

SELECTAȚI * DIN departamentul Staff WHERE

Interogările SQL sunt de obicei aproape de o expresie simplă în limba engleză. Comanda de mai sus poate fi tradusă în rusă după cum urmează

SELECTAȚI TOTUL din Staff WHERE clwjiertme"

Echipa destul de înțeleasă, păcat că este înregistrat doar în engleză. Ca rezultat al executării unei astfel de interogări, DBMS va returna toate înregistrările din tabelul Staff în care câmpul depart* Mit_id este egal cu trei. În exemplul nostru, această interogare selectează de fapt numai programatori din întreaga bază de angajați.

Dacă nu ați mai lucrat cu un SGBD, atunci este posibil să aveți o întrebare rezonabilă: unde și cum poate fi executată această interogare? Există trei moduri de a executa interogări SQL.

1. Mediu interactiv pentru interacțiunea cu SGBD. Pentru majoritatea serverelor DBMS, există programe client (încorporate sau furnizate de terți) în mediul de lucru al cărora puteți scrie interogări SQL, le puteți executa și obține rezultatul. De obicei, astfel de instrumente sunt folosite de administratorii bazelor de date și nu au legătură directă cu programarea PHP. Un exemplu de program client MySQL este programul MySQL Administrator (http: /www.mysgl.coin/product-s/administratoT/) sau foarte popularul sistem PHP phpMyAdmin (http: / /www.phpmyadi'ln.r»et /itummjiage/index.php). Pentru a începe, va fi suficient un kit de distribuție deja instalat, care are o interfață de consolă. Pe Linux, trebuie să tastați comanda mysql din linia de comandă pentru a deschide o fereastră cu o invitație de a introduce interogări SQL, iar pe Windows, pentru a lansa aceeași interfață, trebuie să rulați fișierul mysql. exe din directorul bin.

2. Interogări SQL statice. De obicei, astfel de interogări sunt scrise în cadrul procedurilor stocate în bazele de date în sine sau conectate în aplicații în sine. O interogare SQL statică este predefinită și se modifică numai dacă programul sau codul procedurii stocate este rescris manual. Din PHP, o astfel de interogare SQL este executată folosind funcții speciale, care vor fi discutate în continuare.

3. Interogări SQL dinamice. Acest tip include astfel de interogări, iar când scriu aplicația nu poate fi pe deplin definită. i „de exemplu, când scrieți un program pentru a obține o listă a unui angajat” la diferite departamente ale întreprinderii, programatorul nu știe, ci „> despre compania va avea departamente și care angajați vor fi incluși în ele i „. Desigur, aceste date pot fi scrise în program în mod rigid, dar odată cu prima modificare a structurii companiei, programul poate fi aruncat sau va trebui rescris. Interogările dinamice vă permit să creați programe care sunt flexibile la modificările datelor. .În PHP, astfel de interogări sunt efectuate aproape aceleași funcții ca și cele statice, doar că în ele '^in'> Nu este posibil să treci unii parametri.

Ca un rezumat al celor trei puncte de mai sus, putem spune că interogările SQL sunt executate din programe administrative speciale sau în diverse moduri din scripturi PHP.

Deoarece SGBD rezolvă multe probleme, SQL trebuie să fie, de asemenea, un limbaj multifuncțional. Există mai multe tipuri de operații care pot fi< \ ществлять с помощью SQL.

1. Determinarea structurii bazei de date. Acest tip include interogări care creează și modifică tabele și indecși. De obicei, acestea sunt comenzi CRE; "E TA' LE, ALI'R TA' LE, ' ” '. TE INDEX etc.

2. Manipularea datelor. Acest tip include cereri de inserare (mutare*și> leni), ștergere sau modificare a datelor din tabele. Acestea sunt cele trei comenzi principale: INSERT. ȘTERGEȚI ȘI ACTUALIZAȚI.

3. Selectarea datelor Aceasta include o singură instrucțiune SELECT. Nu aduce modificări datelor în sine, dar vă permite să le obțineți din baza de date. Chiar dacă o singură comandă este folosită pentru a prelua date, este foarte puternică și este folosită foarte des în aplicații.

4. Managementul serverului DBMS. Acest tip include în principal solicitări de gestionare a utilizatorilor și a drepturilor lor de acces (de exemplu, comanda GRANT).

Cunoașterea bună a SQL facilitează foarte mult munca unui programator atunci când lucrează cu o bază de date. Aplicațiile pot fi mici, dar au o funcționalitate excelentă doar datorită faptului că SQL va prelua o mulțime de sarcini.

Ca în orice altă zonă a IT, există standarde în SQL - acesta este ANSI SQL. Abrevierea ANSI înseamnă Institutul Național American de Standarde (American National Standards Institute). Cu toate acestea, nu în ultimul rând din cauza diferenței de funcționalitate a DBMS în sine, implementarea SQL pentru diferite

Cu toate acestea, DBMS diferă unul de celălalt. În prezent, aproape fiecare DBMS are propriul său dialect, care de obicei nu diferă mult de standardul general, dar are propriile sale caracteristici. De exemplu, PL/SQL este compatibil cu Oracle și PostgreSQL, iar T-SQL este folosit pentru a lucra cu MS SQL Server.

Pentru munca ulterioară cu bazele de date, vă recomandăm să studiați imediat standardul cu care intenționați să lucrați în viitor. Pentru majoritatea dezvoltatorilor Web, funcționalitatea SGBD-ului MySQL (și poate fi folosit gratuit) este suficientă pentru cap în acest moment, așa că în această carte, toate exemplele MySQL vor fi date, respectiv, în dialectul acestui SGBD. Documentația limbajului de interogare pentru MySQL poate fi găsită la www.mysql.com.

Structured Query Language (limbaj de interogare structurat) sau SQL- este un limbaj de programare declarativ pentru utilizare în baze de date cvasi-relaționale. Multe dintre caracteristicile originale ale SQL au fost preluate de calculul tuplu, dar extensiile recente ale SQL includ din ce în ce mai multă algebră relațională.
SQL a fost creat inițial de IBM, dar mulți furnizori și-au dezvoltat propriile dialecte. A fost adoptat ca standard de Institutul Național American de Standarde (ANSI) în 1986 și de ISO în 1987. În standardul limbajului de programare SQL, ANSI a declarat că pronunția oficială a SQL este „es cue el”. Cu toate acestea, mulți specialiști în baze de date au folosit pronunția „slang” „Sequel”, reflectând numele inițial al limbii, Sequel, care a fost schimbat ulterior din cauza conflictelor privind mărcile comerciale și denumirea la IBM. Programare pentru incepatori.
limbaj de programare SQL a fost revizuită în 1992 și această versiune este cunoscută sub numele de SQL-92. Apoi 1999 a fost revizuit din nou pentru a deveni SQL: 1999 (AKA SQL3). Programare pentru manechini. SQL 1999 acceptă obiecte care nu erau suportate anterior în alte versiuni, dar abia la sfârșitul anului 2001, doar câteva sisteme de gestionare a bazelor de date au suportat implementări SQL: 1999.
SQL, deși este definit ca ANSI și ISO, are multe variații și extensii, majoritatea având caracteristici proprii, cum ar fi implementarea „PL/SQL” a corporației Oracle sau implementarea Sybase și Microsoft numită „Transact-SQL”, care poate deruta utilizatorul.bazele programării. De asemenea, nu este neobișnuit ca implementările comerciale să omite suportul pentru caracteristicile cheie ale standardului, cum ar fi tipuri de date, cum ar fi data și ora, în favoarea unora dintre ele. Ca rezultat, spre deosebire de ANSI C sau ANSI Fortran, care de obicei pot fi portate de la platformă la platformă fără modificări structurale majore, interogările limbajului de programare SQL pot fi portate rareori între diferite sisteme de baze de date fără modificări majore. Majoritatea oamenilor din domeniul bazelor de date cred că această lipsă de interoperabilitate este intenționată pentru a oferi fiecărui dezvoltator propriul sistem de gestionare a bazelor de date și a lega clientul la o anumită bază de date.
După cum sugerează și numele, limbajul de programare SQL este conceput pentru un scop specific, limitat - interogarea datelor conținute într-o bază de date relațională. Ca atare, este un set de instrucțiuni de limbaj de programare pentru realizarea de mostre de date, mai degrabă decât un limbaj procedural precum C sau BASIC, care sunt concepute pentru a rezolva o gamă mult mai largă de probleme. Extensiile de limbaj precum „PL/SQL” sunt concepute pentru a aborda această limitare prin adăugarea de elemente procedurale la SQL, păstrând în același timp beneficiile SQL. O altă abordare este de a permite interogărilor SQL să încorporeze comenzile limbajului de programare procedural și să interacționeze cu baza de date. De exemplu, Oracle și alții acceptă limbajul Java în baza de date, în timp ce PostgreSQL permite ca funcțiile să fie scrise în Perl, Tcl sau C.
O glumă SQL: „SQL nu este nici structurat, nici limbaj”. Ideea glumei este că SQL nu este un limbaj Turing. .

Selectați * din T
C1 C2
1 A
2 b
C1 C2
1 A
2 b
Selectați C1 din T
C1
1
2
C1 C2
1 A
2 b
Selectați * din T unde C1=1
C1 C2
1 A

Având în vedere un tabel T, o interogare Select * din T va afișa toate elementele tuturor rândurilor din tabel.
Din același tabel, o interogare Select C1 from T va afișa elementele din coloana C1 a tuturor rândurilor din tabel.
Din același tabel, interogarea Select * din T unde C1=1 va afișa toate elementele tuturor rândurilor unde valoarea coloanei C1 este „1”.

Cuvinte cheie SQL

Cuvintele SQL sunt împărțite într-un număr de grupuri.

Primul este Limbajul de manipulare a datelor sau DML(limbaj de gestionare a datelor). DML este un subset al limbajului folosit pentru a interoga bazele de date, pentru a adăuga, actualiza și șterge date.

  • SELECT este una dintre cele mai frecvent utilizate comenzi DML și permite utilizatorului să specifice o interogare ca descriere a rezultatului dorit ca set. Interogarea nu specifică modul în care trebuie aranjate rezultatele - traducerea interogării într-o formă care poate fi făcută în baza de date este sarcina sistemului de baze de date, mai precis a optimizatorului de interogări.
  • INSERT este folosit pentru a adăuga rânduri (set formal) la un tabel existent.
  • UPDATE este folosit pentru a modifica valorile datelor dintr-un rând de tabel existent.
  • DELETE specifică rândurile existente care trebuie eliminate din tabel.

Se poate spune că alte trei cuvinte cheie se încadrează în grupul DML:

  • BEGIN WORK (sau START TRANZACȚIA, în funcție de dialectul SQL) poate fi folosit pentru a marca începutul unei tranzacții de bază de date care fie va rula complet, fie nu va rula deloc.
  • COMMIT afirmă că toate modificările datelor după comiterea operațiunii sunt salvate.
  • ROLLBACK specifică faptul că toate modificările datelor de la ultima comitere sau rollback ar trebui să fie distruse, până la punctul în care a fost trimis în baza de date ca „retroducere”.

COMMIT și ROLLBACK sunt folosite în domenii precum controlul tranzacțiilor și blocările. Ambele instrucțiuni completează toate tranzacțiile curente (seturile de operațiuni ale bazei de date) și eliberează toate blocările la modificarea datelor din tabele. Prezența sau absența unei instrucțiuni BEGIN WORK sau similare depinde de implementarea particulară a SQL.

Al doilea grup de cuvinte cheie se referă la grup Data Definition Language sau DDL (Data Definition Language). DDL permite utilizatorului să definească noi tabele și elemente aferente. Majoritatea bazelor de date SQL comerciale au propriile extensii DDL care permit controlul asupra elementelor non-standard, dar de obicei vitale ale unui anumit sistem.
Principalele puncte ale DDL sunt comenzile de creare și ștergere.

  • CREATE specifică obiectele (cum ar fi tabelele) care urmează să fie create în baza de date.
  • DROP specifică ce obiecte existente în baza de date vor fi abandonate, de obicei permanent.
  • Unele sisteme de baze de date acceptă și comanda ALTER, care permite utilizatorului să modifice un obiect existent în moduri diferite, cum ar fi adăugarea de coloane la un tabel existent.

Al treilea grup de cuvinte cheie SQL este Limbajul de control al datelor sau DCL (Limbajul de control al datelor). DCL este responsabil pentru drepturile de acces la date și permite utilizatorului să controleze cine are acces pentru a vizualiza sau manipula datele din baza de date. Există două cuvinte cheie principale aici:

  • GRANT - permite utilizatorului să efectueze operațiuni
  • REVOKE - elimină sau restricționează capacitatea utilizatorului de a efectua operațiuni.

Sisteme de baze de date folosind SQL

  • InterBase
  • MySQL
  • Oracol
  • PostgreSQL
  • SQL Server

Cum să devii un profesionist în dezvoltarea de site-uri web și să începi să câștigi? Cursuri video ieftine cu o introducere introductivă.

Astăzi ne vom referi la subiectul computerului, așa că acest articol va fi de un interes deosebit, în primul rând pentru programatori. Noi, dragi cititori, vom vorbi despre limbajul de interogare structurat, care în versiunea în limba engleză este criptat ca SQL (Structured Query Language). Deci, mai la obiect. Acum, să vorbim despre ce este SQL și pentru ce este.

Structured Query Language este un limbaj de uz general pentru crearea, modificarea și gestionarea informațiilor care fac parte din bazele de date relaționale. Inițial, SQL a fost principala modalitate de a lucra cu datele. Cu acesta, utilizatorul poate efectua următoarele acțiuni:

  • crearea unui nou tabel în baza de date (DB);
  • adăugarea de noi înregistrări la tabelele existente;
  • editarea înregistrărilor;
  • ștergerea completă a înregistrărilor;
  • selectarea înregistrărilor din diferite tabele, în conformitate cu condițiile specificate;
  • modificarea aspectului și structurilor unuia sau mai multor mese.

Pe măsură ce s-a dezvoltat, SQL a fost mult transformat și îmbogățit cu noi caracteristici utile, ca urmare, a devenit din ce în ce mai mult ca un adevărat limbaj de programare. Până în prezent, SQL este singurul mecanism capabil să conecteze aplicația software și o bază de date. Asta este SQL.

SQL are mai multe tipuri de interogări. Este de remarcat faptul că orice interogare SQL implică fie o solicitare de date din baza de date dorită, fie o apel la baza de date cu modificarea obligatorie a datelor din aceasta. În acest sens, se obișnuiește să se distingă următoarele tipuri de cereri:

  • crearea sau modificarea obiectelor noi sau existente în baza de date;
  • primirea datelor;
  • adăugarea de date noi la tabel;
  • stergerea datelor;
  • acces la sistemul de management al bazei de date (DBMS).

Câteva despre avantajele și dezavantajele acestui sistem de gestionare a datelor.

Beneficiile SQL

  • Independență față de SGBD existent în sistemul dat. Textele SQL sunt universale pentru multe SGBD. Cu toate acestea, această regulă se aplică sarcinilor simple legate de prelucrarea datelor în tabele.
  • Prezența standardelor SQL contribuie la „stabilizarea” limbajului.
  • Declarativitatea. Acest avantaj constă în faptul că atunci când lucrează cu date, programatorul selectează doar informațiile care trebuie schimbate sau modificate. Cum se va face acest lucru este decis automat la nivelul programului propriu-zis al SGBD.

Dezavantajele SQL

  • SQL nu urmează modelul de construcție a datelor relaționale. În acest sens, SQL înlocuiește limbajul Tutorial D, care este cu adevărat relațional.
  • Complexitatea SQL determină scopul acestuia. Limbajul este atât de complex încât doar un programator îl poate folosi. Deși inițial a fost conceput ca un instrument de control cu ​​care va lucra un utilizator obișnuit.
  • O anumită inconsecvență în standarde. Multe companii DBMS adaugă propriile caracteristici la dialectul SQL, ceea ce afectează în mod semnificativ universalitatea limbii.

Un ultim lucru: ce este SQL Server? Acesta este un sistem de gestionare a bazelor de date care a fost dezvoltat între zidurile cunoscutei companii Microsoft. Acest sistem funcționează cu succes cu baze de date, atât computere personale de acasă, cât și baze de date mari ale întreprinderilor uriașe. În acest segment de piață, SQL Server este mai mult decât competitiv.

Ei bine, pe scurt, să ne amintim de MySQL. Această aplicație este utilizată de obicei ca un server care primește cereri de la clienți locali sau la distanță. MySQL poate fi inclus și în programele independente. Trebuie remarcat faptul că această aplicație este unul dintre cele mai flexibile sisteme de gestionare a datelor, deoarece include multe tipuri diferite de tabele.

Ultima actualizare: 24.06.2017

SQL Server este unul dintre cele mai populare sisteme de gestionare a bazelor de date (DBMS) din lume. Acest SGBD este potrivit pentru o varietate de proiecte: de la aplicații mici până la proiecte mari cu sarcină mare.

SQL Server a fost creat de Microsoft. Prima versiune a apărut în 1987. Iar versiunea actuală este versiunea 16, care a fost lansată în 2016 și va fi folosită în ghidul actual.

SQL Server a fost mult timp exclusiv un sistem de gestionare a bazelor de date pentru Windows, dar începând cu versiunea 16 acest sistem este disponibil și pe Linux.

SQL Server este caracterizat de caracteristici precum:

    Performanţă. SQL Server este foarte rapid.

    Fiabilitate și siguranță. SQL Server oferă criptarea datelor.

    Simplitate. Acest SGBD este relativ ușor de utilizat și de administrat.

Aspectul central în MS SQL Server, ca în orice SGBD, este baza de date. O bază de date este un depozit de date organizate într-un anumit mod. Nu este neobișnuit ca o bază de date să reprezinte fizic un fișier pe un hard disk, deși o astfel de mapare nu este necesară. Sistemele de management al bazelor de date sau SGBD-urile sunt folosite pentru a stoca și administra bazele de date. Și doar MS SQL Server este unul dintre astfel de SGBD.

MS SQL Server folosește un model relațional pentru a organiza bazele de date. Acest model de bază de date a fost dezvoltat în 1970 de către Edgar Codd. Și astăzi este de fapt standardul pentru organizarea bazelor de date.

Modelul relațional presupune stocarea datelor sub formă de tabele, fiecare dintre ele constând din rânduri și coloane. Fiecare rând stochează un obiect separat, iar coloanele conțin atributele acestui obiect.

O cheie primară este utilizată pentru a identifica fiecare rând dintr-un tabel. Cheia primară poate fi una sau mai multe coloane. Folosind cheia primară, ne putem referi la un anumit rând dintr-un tabel. În consecință, două rânduri nu pot avea aceeași cheie primară.

Prin chei, un tabel poate fi legat de altul, adică pot fi organizate legături între două tabele. Și tabelul în sine poate fi reprezentat ca o relație („relație”).

SQL (Structured Query Language) este folosit pentru a interacționa cu baza de date. Clientul (de exemplu, un program extern) trimite o solicitare în SQL folosind un API special. SGBD interpretează și execută în mod corespunzător cererea, apoi trimite rezultatul către client.

SQL a fost dezvoltat inițial de IBM pentru un sistem de baze de date numit System/R. În același timp, limba în sine a fost numită SEQUEL (Structured English Query Language). Deși nici baza de date, nici limba în sine nu au fost ulterior publicate oficial, în mod tradițional, termenul SQL în sine este adesea pronunțat ca „o continuare”.

În 1979, Relational Software Inc. a dezvoltat primul sistem de gestionare a bazelor de date, care se numea Oracle și care folosea limbajul SQL. Datorită succesului acestui produs, compania a fost redenumită Oracle.

Ulterior, au început să apară și alte sisteme de baze de date care foloseau SQL. Drept urmare, în 1989, Institutul Național American de Standarde (ANSI) a codificat limba și a publicat primul său standard. După aceea, standardul a fost actualizat și completat periodic. Ultima actualizare a avut loc în 2011. Dar, în ciuda existenței unui standard, furnizorii de DBMS folosesc adesea propriile implementări ale limbajului SQL, care sunt ușor diferite unele de altele.

Există două varietăți de limbaj SQL: PL-SQL și T-SQL. PL-SQL este utilizat în sistemele de baze de date precum Oracle și MySQL. T-SQL (Transact-SQL) este utilizat în SQL Server. De aceea, T-SQL va fi luat în considerare în cadrul ghidului actual.

În funcție de sarcina pe care o îndeplinește comanda T-SQL, aceasta poate fi unul dintre următoarele tipuri:

    DDL (Data Definition Language). Acest tip include diverse comenzi care creează o bază de date, tabele, indecși, proceduri stocate și așa mai departe. În general, datele sunt definite.

    În special, putem trimite următoarele comenzi la acest tip:

    • CREATE : creează obiecte de bază de date (baza de date însăși, tabele, indecși etc.)

      ALTER : Schimbă obiectele bazei de date

      DROP: elimină obiectele bazei de date

      TRUNCATE : elimină toate datele din tabele

    DML (Data Manipulation Language / Data Manipulation Language). Acest tip include comenzi pentru selectarea datelor, actualizarea acestora, adăugarea, ștergerea – în general, toate acele comenzi cu care putem gestiona datele.

    Acest tip include următoarele comenzi:

    • SELECT: preluați date din baza de date

      UPDATE: actualizează datele

      INSERT: adaugă date noi

      DELETE : șterge datele

    DCL (Data Control Language / Data Access Control Language). Acest tip include comenzi care gestionează drepturile de acces la date. În special, acestea sunt următoarele comenzi:

    • GRANT : acordă drepturi de acces la date

      REVOCA : revocă drepturile de acces la date

Limbaj de programare

SQL (Structured Query Language - Structured Query Language) este un limbaj de gestionare a bazelor de date pentru baze de date relaționale. SQL în sine nu este un limbaj de programare complet Turing, dar standardul său vă permite să creați extensii procedurale pentru acesta, care își extind funcționalitatea într-un limbaj de programare cu drepturi depline.

Limbajul a fost creat în anii 1970 sub numele „SEQUEL” pentru sistemul de management al bazelor de date (DBMS) System R. Ulterior a fost redenumit „SQL” pentru a evita conflictele de mărci înregistrate. În 1979, SQL a fost publicat pentru prima dată ca produs comercial, Oracle V2.

Primul standard de limbă oficială a fost adoptat de ANSI în 1986 și ISO în 1987. De atunci, au fost create mai multe versiuni ale standardului, unele dintre ele repetându-le pe cele anterioare cu variații minore, altele luând noi caracteristici semnificative.

În ciuda existenței standardelor, cele mai obișnuite implementări SQL diferă atât de mult încât codul poate fi rareori portat de la un SGBD la altul fără modificări majore. Acest lucru se datorează lungimii și complexității standardului, precum și lipsei de specificații în unele domenii importante de implementare.

SQL a fost creat ca o modalitate simplă, standardizată de a prelua și manipula datele conținute într-o bază de date relațională. Mai târziu, a devenit mai complex decât s-a prevăzut și s-a transformat într-un instrument pentru dezvoltator, nu pentru utilizatorul final. În prezent, SQL (în cea mai mare parte implementat de Oracle) rămâne cel mai popular dintre limbajele de baze de date, deși există o serie de alternative.

SQL este format din patru părți distincte:

  1. Data Definition Language (DDL) este folosit pentru a defini structurile de date stocate într-o bază de date. Instrucțiunile DDL vă permit să creați, să modificați și să ștergeți obiecte individuale din baza de date. Tipurile de obiecte valide depind de SGBD utilizat și includ de obicei baze de date, utilizatori, tabele și un număr de obiecte suport mai mici, cum ar fi roluri și indecși.
  2. Limbajul de manipulare a datelor (DML) este folosit pentru a prelua și modifica datele dintr-o bază de date. Instrucțiunile DML vă permit să preluați, să inserați, să modificați și să ștergeți date din tabele. Uneori, instrucțiunile de selectare pentru extragerea datelor nu sunt considerate parte a DML deoarece nu schimbă starea datelor. Toate instrucțiunile DML sunt declarative.
  3. Data Access Definition Language (DCL) este folosit pentru a controla accesul la datele dintr-o bază de date. Declarațiile DCL se aplică privilegiilor și vă permit să acordați și să revocați drepturi de a aplica anumite instrucțiuni DDL și DML anumitor obiecte de bază de date.
  4. Transaction Control Language (TCL) este folosit pentru a controla procesarea tranzacțiilor din baza de date. În mod obișnuit, declarațiile TCL includ commit to commit modificările făcute în timpul unei tranzacții, rollback pentru a le anula și salvare pentru a împărți tranzacția în mai multe părți mai mici.

Trebuie remarcat faptul că SQL implementează o paradigmă de programare declarativă: fiecare instrucțiune descrie doar acțiunea necesară, iar SGBD decide cum să o efectueze, adică. planifică operaţiile elementare necesare realizării acţiunii şi le execută. Cu toate acestea, pentru a utiliza eficient puterea SQL, dezvoltatorul trebuie să înțeleagă cum DBMS analizează fiecare instrucțiune și își creează planul de execuție.

Exemple:

Salut Lume!:

Exemplu pentru Oracle 10g SQL, Oracle 11g SQL

Șirul „Hello, World!” este selectat din tabelul dual încorporat, folosit pentru interogări care nu necesită acces la tabele reale.

selectați „Hello World!” din dual ;

factorial:

Exemplu pentru Oracle 10g SQL, Oracle 11g SQL

SQL nu acceptă bucle, recursiuni sau funcții definite de utilizator. Acest exemplu demonstrează o posibilă soluție folosind:

  • nivel de pseudo-coloană pentru a crea pseudo-tabele t1 și t2 care conțin numere de la 1 la 16,
  • funcția agregată sum , care vă permite să însumați elementele unei mulțimi fără a utiliza în mod explicit o buclă,
  • și funcțiile matematice ln și exp , care vă permit să înlocuiți produsul (necesar pentru a calcula factorialul) cu suma (furnizată de SQL).

Șirul „0! = 1” nu va fi inclus în setul de rânduri rezultat, deoarece încercarea de a evalua ln(0) are ca rezultat o excepție.

numerele Fibonacci:

Exemplu pentru Oracle 10g SQL, Oracle 11g SQL

SQL nu acceptă bucle sau recursivitate, iar concatenarea câmpurilor din diferite rânduri dintr-un tabel sau interogare nu este o funcție de agregare standard. Acest exemplu folosește:

  • Formula lui Binet și funcțiile matematice ROUND , POWER și SQRT pentru a calcula al n-lea număr Fibonacci;
  • nivel de pseudo-coloană pentru a crea un pseudo-tabel t1 care conține numere de la 1 la 16;
  • funcția încorporată SYS_CONNECT_BY_PATH pentru concatenarea ordonată a numerelor primite.

SELECTARE REPLACE (MAX (SYS_CONNECT_BY_PATH (fib || ", " , "/" )), "/" , "" ) || „...” fiblist FROM ( SELECT n , fib , ROW_NUMBER () OVER (ORDER BY n ) r FROM (selectați n , rotund ((putere ((1 + sqrt (5 ) )) * 0 . 5 , n ) - putere ((1 - sqrt (5 )) * 0 . 5 , n )) / sqrt (5 )) fib din (selectați nivelul n din conectarea duală după nivel<= 16 ) t1 ) t2 ) START WITH r = 1 CONNECT BY PRIOR r = r - 1 ;

Salut Lume!:

Exemplu pentru versiunile Microsoft SQL Server 2005 , Microsoft SQL Server 2008 R2 , Microsoft SQL Server 2012 , MySQL 5 , PostgreSQL 8.4 , PostgreSQL 9.1 , sqlite 3.7.3

selectați „Hello World!” ;

factorial:

Exemplu pentru Microsoft SQL Server 2005 , Microsoft SQL Server 2008 R2 , Microsoft SQL Server 2012

Se folosește definiția recursivă a factorialului, implementată printr-o interogare recursivă. Fiecare linie a interogării conține două câmpuri numerice, n și n!, iar fiecare linie ulterioară este calculată folosind datele din cea precedentă.

Puteți calcula factoriali întregi doar până la 20!. Când încerci să calculezi 21! apare o „Eroare de depășire aritmetică”, adică are loc debordare.

Pentru numerele reale se calculează factorialul 100! (Pentru a face acest lucru, în exemplu, trebuie să înlocuiți bigint cu float în a treia linie)

numerele Fibonacci:

Exemplu pentru Microsoft SQL Server 2005 , Microsoft SQL Server 2008 R2 , Microsoft SQL Server 2012

Se folosește o definiție iterativă a numerelor Fibonacci, implementată printr-o interogare recursivă. Fiecare linie a interogării conține două numere adiacente în succesiune, iar următoarea linie este calculată ca (ultimul număr, suma numerelor) al liniei anterioare. Astfel, toate numerele, cu excepția primului și ultimului, apar de două ori, astfel încât numai primele numere din fiecare rând sunt incluse în rezultat.

factorial:

Exemplu pentru Oracle 10g SQL, Oracle 11g SQL

Acest exemplu demonstrează utilizarea instrucțiunii model, disponibilă începând cu Oracle 10g, care permite ca șirurile de interogări să fie tratate ca elemente de matrice. Fiecare linie conține două câmpuri - numărul liniei n și factorialul său f.

selectați n || „!=" || f factorial din modelul dual returnează toate dimensiunile rândurilor prin ( 0 d ) măsuri ( 0 f , 1 n ) reguli iterate (17 ) ( f [ număr_iterație ] = decodare (număr_iterație , 0 , 1 , f [ număr_iterație - 1 ] * număr_iterație ) , n [ iteration_number ] = iteration_number );

numerele Fibonacci:

Exemplu pentru Oracle 10g SQL, Oracle 11g SQL

Acest exemplu demonstrează utilizarea instrucțiunii model, disponibilă începând cu Oracle 10g, care permite ca șirurile de interogări să fie tratate ca elemente de matrice. Fiecare linie conține două câmpuri - numărul Fibonacci însuși și concatenarea tuturor numerelor mai mici sau egale cu acesta. Concatenarea iterativă a numerelor în aceeași interogare în care sunt generate este mai ușoară și mai rapidă decât agregarea ca operație independentă.

selectați max(uri) || ", ..." din (selectați s din modelul dual returnează toate dimensiunile rândurilor prin ( 0 d ) măsuri ( cast (" " ca varchar2 (200 )) s , 0 f ) regulile iterate (16 ) ( f [ iteration_number ] = decode (număr_iterație, 0, 1, 1, 1, f [număr_iterație - 1] + f [număr_iterație - 2]), s [număr_iterație] = decode (număr_iterație, 0, to_char (f [număr_iterație]), _număr [număr_iterație] 1 ] || ", " || to_char (f [ iteration_number ])) ) );

factorial:

Exemplu pentru versiunile MySQL 5

selectați concat (cast (t2 . n ca char ), "!= " , cast (exp (suma (log (t1 . n ))) ca char )) din ( selectați @ i := @ i + 1 AS n din TABLE , (selectați @ i := 0 ) ca limită sel1 16 ) t1 , ( selectați @ j : = @ j + 1 AS n din TABEL , (selectați @ j := 0 ) ca limită sel1 16 ) t2 unde t1 . n<= t2 . n group by t2 . n

numerele Fibonacci:

Exemplu pentru versiunile MySQL 5

Înlocuiți TABLE cu orice tabel pe care îl puteți accesa, cum ar fi mysql.help_topic .

selectați concat (group_concat (f separator ", " ), ", ..." ) din (selectați @ f := @ i + @ j ca f , @ i := @ j , @ j := @ f din TABLE , (selectați @ i := 1 , @ j := 0 ) sel1 limit 16 ) t

Salut Lume!:

Exemplu pentru Oracle 10g SQL, Oracle 11g SQL

Acest exemplu folosește un bloc PL/SQL anonim care imprimă un mesaj la ieșirea standard folosind pachetul dbms_output.

începe dbms_output . put_line("Bună, lume!"); Sfârşit ;

factorial:

Exemplu pentru Oracle 10g SQL, Oracle 11g SQL

Acest exemplu demonstrează calculul factorial iterativ folosind PL/SQL.

declara n numar := 0 ; fnumar := 1 ; începe în timp ce (n<= 16 ) loop dbms_output . put_line (n || "! = " || f ); n : = n + 1 ; f : = f * n ; end loop ; end ;

numerele Fibonacci:

Exemplu pentru Oracle 10g SQL, Oracle 11g SQL

Acest exemplu folosește definiția iterativă a numerelor Fibonacci. Numerele deja calculate sunt stocate în structura de date varray, în mod analog cu o matrice.

vectorul de tip declarare este varray (16 ) de număr; vector fib := vector(); i număr; svarchar2(100); beginfib . extinde(16); fib (1 ) := 1 ; fib (2 ) := 1 ; s:=fib(1) || ", " || fib(2) || „, „; pentru i în 3 .. 16 buclă fib (i ) : = fib (i - 1 ) + fib (i - 2 ); s := s || fib(i) || „, „; buclă de capăt; dbms_output . put_line(s || "..." ); Sfârşit ;

Ecuația pătratică:

Exemplu pentru Oracle 10g SQL, Oracle 11g SQL

Acest exemplu a fost testat cu SQL*Plus, TOAD și PL/SQL Developer.

Pure SQL vă permite să introduceți variabile în timpul execuției interogării ca variabile substituite. Pentru a defini o astfel de variabilă, numele acesteia (în acest caz A, B și C) trebuie folosit cu un ampersand și în fața acesteia de fiecare dată când variabila trebuie să fie referită. Când se execută o interogare, utilizatorului i se solicită să introducă valorile tuturor variabilelor înlocuite utilizate în interogare. După introducerea valorilor, fiecare referință la o astfel de variabilă este înlocuită cu valoarea acesteia, iar interogarea rezultată este executată.

Există mai multe moduri de a introduce valori pentru variabilele substituite. În acest exemplu, prima referință la fiecare variabilă este precedată de un ampersand dublu && în loc de un singur ampersand. Astfel, valoarea pentru fiecare variabilă este introdusă o singură dată, iar toate referințele ulterioare la aceasta vor fi înlocuite cu aceeași valoare (când se folosește un singur și în SQL*Plus, valoarea pentru fiecare referință la aceeași variabilă trebuie introdusă separat) . În PL/SQL Developer, referințele la toate variabilele trebuie să fie precedate de un singur & , altfel va apărea o eroare ORA-01008 „Nu toate variabilele sunt legate”.

Prima linie a exemplului specifică caracterul pentru separatorul zecimal, care este utilizat la convertirea numerelor rădăcină în șiruri.

Cererea în sine constă din patru cereri diferite. Fiecare interogare returnează un șir care conține rezultatul calculelor, într-unul dintre cazuri (A=0, D=0, D>0 și D<0) и ничего — в трех остальных случаях. Результаты всех четырех запросов объединяются, чтобы получить окончательный результат.

modifica setarea sesiunii NLS_NUMERIC_CHARACTERS = "." ; selectați „Nu este o ecuație pătratică”. și de la dual unde && A = 0 unire selectați "x = " || to_char (-&& B / 2 /& A ) din dual unde & A != 0 și & B *& B - 4 *& A *&& C = 0 unire selectează "x1 = " || to_char ((-& B + sqrt (& B *& B - 4 *& A *& C )) / 2 /& A ) || ", x2 = " || to_char (-& B - sqrt (& B *& B - 4 *& A *& C )) / 2 /& A din dual unde & A != 0 și & B *& B - 4 *& A *& C > 0 unire selectați „x1 = (" || to_char (-& B / 2 /& A ) || "," || to_char (sqrt (-& B *& B + 4 *& A *& C ) / 2 /& A ) || "), " || "x2 = (" || to_char (-& B / 2 /& A ) || "," || to_char (- sqrt (-& B *& B + 4 *& A *& C ) / 2 /& A ) || ")" din dual unde & A != 0 și & B *& B - 4 *& A *& C< 0 ;

  • Serghei Savenkov

    un fel de recenzie „rare”... parcă s-ar grăbi undeva