Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Recenzii
  • Funcționalitatea limbajului SQL. Limbajul de descriere a datelor Comenzi

Funcționalitatea limbajului SQL. Limbajul de descriere a datelor Comenzi

Structure Query Language (SQL) a fost creat ca urmare a dezvoltării modelului de date relaționale și este acum standardul de facto pentru sistemele de management al bazelor de date relaționale. Limbajul SQL este susținut astăzi de un număr mare de tipuri diferite de SGBD.

Numele limbajului SQL este de obicei pronunțat prin literele „es-q-el”. Numele mnemonic „See-Quel” este uneori folosit.

Limbajul SQL oferă utilizatorului (cu un efort minim din partea lui) următoarele capabilități:

Creați baze de date și tabele cu o descriere completă a structurii acestora

Efectuați operațiuni de bază de manipulare a datelor: inserarea, modificarea, ștergerea datelor

Efectuați atât interogări simple, cât și complexe.

SQL este complet relațional.

Structura și sintaxa comenzilor sale sunt destul de simple, iar limbajul în sine este universal, adică sintaxa și structura comenzilor sale nu se schimbă la trecerea de la un SGBD la altul.

Limbajul SQL are două componente principale:

Data Definition Language (DDL) pentru definirea structurilor bazei de date și controlul accesului la date

DML (Data Manipulation Language), conceput pentru a prelua și actualiza datele.

Limbajul SQL este non-procedural, adică atunci când îl utilizați, este necesar să indicați ce informații trebuie obținute, și nu cum poate fi obținută. Comenzile SQL sunt cuvinte obișnuite în limba engleză (SELECT, INSERT etc.). Să ne uităm mai întâi la instrucțiunile SQL DML:

SELECT - preluarea datelor din baza de date

INSERT - inserarea datelor într-un tabel

UPDATE - actualizarea datelor dintr-un tabel

DELETE - ștergerea datelor dintr-un tabel

instrucțiunea SELECT

Instrucțiunea SELECT efectuează operații echivalente cu următoarele operații de algebră relațională: select, projection și join.

Cea mai simplă interogare SQL care o folosește arată astfel:

SELECT COL_name FROM tbl

Cuvântul cheie select este urmat de o listă de coloane, separate prin virgulă, care vor fi returnate din interogare. Cuvântul cheie from specifică din ce tabel (sau vizualizare) să preiau datele.

Rezultatul unei interogări de selectare este întotdeauna un tabel, care se numește tabel cu rezultate. Mai mult, rezultatele unei interogări executate cu instrucțiunea select pot fi folosite pentru a crea un tabel nou. Dacă rezultatele a două interogări pe tabele diferite au același format, acestea pot fi combinate într-un singur tabel. De asemenea, tabelul obținut în urma interogării poate deveni subiect de interogări ulterioare.

Pentru a selecta toate coloanele și toate rândurile unui tabel, trebuie doar să faceți SELECT * FROM tbl;

Luați în considerare tabelul cu produse, care conține informații despre preț pentru diferite tipuri de produse:

Rezultatul interogării

SELECT * FROM Produs;

va fi întregul tabel de produse.

Puteți selecta anumite coloane ale unui tabel folosind o interogare

SELECT col1, col2, ..., coln FROM tbl;

Deci, rezultatul interogării

SELECTează tipul, prețul din produs;

va fi o masă

Lista coloanelor din instrucțiunea select este folosită și atunci când este necesar să se schimbe ordinea coloanelor din tabelul rezultat:

Pentru a selecta doar acele rânduri de tabel care îndeplinesc anumite restricții, se folosește un cuvânt cheie special unde, urmat de o condiție booleană. Dacă o înregistrare îndeplinește această condiție, este inclusă în rezultat. În caz contrar, o astfel de înregistrare este eliminată.

De exemplu, selectarea acelor bunuri din tabelul Produs, al căror preț satisface condiția Preț<3200, можно осуществить, используя запрос

SELECTAȚI * DIN Produs unde Preț<3200;

Rezultatul ei:

Condiția poate fi compusă și combinată folosind operatorii logici NOT, AND, OR, XOR, de exemplu: unde id_ Price> 500 AND Price<3500. Допускается также использование выражений в условии: where Price>(1 + 1) și constante de șir: unde nume = „autobalance”.

Utilizarea constructului BETWEEN var1 AND var2 vă permite să verificați dacă valorile oricărei expresii se încadrează în intervalul var1 la var2 (inclusiv aceste valori):

SELECTAȚI * FROM Produs la care Prețul INTRE 3000 SI 3500;

Prin analogie cu operatorul NOT BETWEEN, există operatorul NOT IN.

Numele de coloane specificate în clauza SELECT pot fi redenumite. Pentru aceasta se folosește cuvântul cheie AS, care, totuși, poate fi omis, întrucât este implicit subînțeles. De exemplu, cererea

SELECT Tip AS model, Type_id AS num FROM Product unde Type_id = 3

va reveni (numele de alias trebuie scrise fără ghilimele):

Operatorul LIKE este pentru a compara un șir cu un model:

SELECT * FROM tbl unde col_name LIKE "abc"

Această interogare returnează numai acele înregistrări care conțin valoarea șirului abc în coloana nume_col.

Două metacaractere sunt permise în model: „_” și „%”. Primul înlocuiește un caracter arbitrar din șablon, iar al doilea înlocuiește o secvență de caractere arbitrare. Deci, "abc%" se potrivește cu orice șir care începe cu abc, "abc_" - un șir de 4 caractere care începe cu abc, "% z" - un șir arbitrar care se termină cu z și, în sfârșit, "% z%" - secvențe de caractere care conțin z.

Puteți găsi toate înregistrările din tabelul Produs în care valoarea Tip începe cu litera „a” după cum urmează:

SELECT * FROM Produs unde Tip LIKE „a%”;

cântare automate

Dacă șirul de căutare conține un caracter wildcard, atunci trebuie să specificați caracterul de control în clauza ESCAPE. Acest caracter de control ar trebui folosit în modelul înainte de caracterul wildcard, indicând faptul că acesta din urmă ar trebui tratat ca un caracter obișnuit. De exemplu, dacă într-un anumit câmp se găsesc toate valorile care conțin caracterul „_”, atunci modelul „% _%” va avea ca rezultat returnarea tuturor înregistrărilor din tabel. În acest caz, șablonul trebuie scris după cum urmează:

"% | _%" ESCAPE "|"

Pentru a verifica valoarea conformității cu șirul „20%”, puteți utiliza următorul operator:

LIKE „20 #%” ESCAPE „#”

Operatorul IS NULL vă permite să verificați absența (prezența) valorilor NULL în câmpurile tabelului. Utilizarea operatorilor normali de comparare în aceste cazuri poate duce la rezultate incorecte, deoarece compararea cu o valoare NULL are ca rezultat UNKNOWN (necunoscut). Astfel, condiția de selecție ar trebui să arate astfel:

unde col_name ESTE NULL, în loc de unde col_name = NULL.

Rezultatul implicit al selecției returnează înregistrările în aceeași ordine în care sunt stocate în baza de date. Dacă trebuie să sortați înregistrările după una dintre coloane, trebuie să utilizați clauza ORDER BY, urmată de numele acestei coloane:

SELECT * FROM tbl ORDER BY col_name;

Ca rezultat al acestei interogări, înregistrările vor fi returnate în ordinea crescătoare a valorii atributului col_name.

Înregistrările pot fi sortate după mai multe coloane. Pentru a face acest lucru, numele lor trebuie specificate după ORDER BY, separate prin virgule:

SELECTAȚI * FROM tbl ORDER BY col_name1, col_name2.

Înregistrările vor fi sortate după câmpul col_name1; dacă există mai multe înregistrări cu aceeași valoare în coloana col_name1, acestea vor fi sortate după câmpul col_name2.

Dacă doriți să sortați înregistrările în ordine inversă (de exemplu, descrescătoare după dată), trebuie să specificați ORDER BY col_name DESC.

Pentru sortarea directă, există cuvântul cheie ASC, care este implicit.

Dacă rezultatul selecției conține sute sau mii de înregistrări, producția și procesarea acestora durează o perioadă semnificativă de timp.

Prin urmare, informațiile sunt adesea paginate și prezentate utilizatorului în bucăți. Navigarea în pagină este utilizată cu cuvântul cheie limită urmat de numărul de înregistrări de afișat. Următoarea interogare preia primele 10 înregistrări, în timp ce efectuează simultan o sortare inversă în câmpul col_name1:

SELECTAȚI * FROM tbl ORDER BY col_name1 DESC LIMIT 10

Pentru a prelua următoarele 10 înregistrări, cuvântul cheie limită este utilizat cu două valori: prima indică poziția din care să fie afișat rezultatul, iar a doua indică numărul de înregistrări de preluat:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10,10

Pentru a prelua următoarele 10 înregistrări, trebuie să utilizați construcția LIMIT 20, 10.

Fiecare comandă SQL începe cu un cuvânt cheie - un verb care descrie acțiunea care trebuie efectuată de comandă, cum ar fi CREATE. O echipă poate avea una sau mai multe propoziții. Propoziția descrie datele cu care lucrează echipa sau conține informații clarificatoare despre acțiunea efectuată de echipă. Fiecare clauză începe cu un cuvânt cheie, cum ar fi WHERE (unde). Unele clauze din comandă sunt necesare, altele nu. Unele propoziții pot conține cuvinte cheie, expresii suplimentare. Multe sugestii includ nume de tabel sau câmpuri. Numele trebuie să aibă între 1 și 18 caractere, să înceapă cu o literă și să nu conțină spații sau caractere speciale de punctuație. Cuvintele cheie nu pot fi folosite ca nume.

52. SQL (Structured Query Language) - Structured Query Language Este limbajul standard de interogare pentru lucrul cu baze de date relaționale.

SQL nu conține instrucțiuni tradiționale care controlează fluxul de programe, conține doar un set de instrucțiuni standard pentru accesarea datelor stocate într-o bază de date.

Limbajul SQL poate fi folosit pentru a accesa baza de date în două moduri: când munca interactivă si in programe de aplicație.

Cu ajutorul SQL, utilizatorul poate obține rapid răspunsuri la orice, inclusiv la întrebări destul de complexe, într-un mod interactiv, în timp ce pentru a implementa aceste interogări într-o altă limbă, ar trebui să dezvolte un program corespunzător. În programele de aplicație scrise în anumite limbaje de programare, SQL este folosit ca incorporat limba pentru accesarea bazei de date.

Caracterizând limbajul SQL în ansamblu, se pot distinge următoarele caracteristici:

· Structură la nivel înalt, care amintește de engleză;

· Independență față de SGBD specific;

· Disponibilitatea standardelor de dezvoltare;

· Capacitatea de a executa interogări interactive pentru a prelua date și a modifica structura acestora;

· Acces software la baze de date;

· Suport pentru arhitectura client/server;

· Extensibilitate și suport pentru tehnologiile orientate pe obiecte;



· Capacitatea de a accesa date de pe Internet.

Principalele funcții ale limbajului SQL:

SQL - limbaj interactiv de interogare... Utilizatorii introduc comenzi SQL în mod interactiv pentru a prelua date și a le afișa pe ecran și pentru a face modificări în baza de date;

SQL - limbaj de programare baze de date... Comenzile SQL sunt inserate în aplicații pentru a accesa baza de date;

SQL - limbaj de administrare a bazei de date... Administratorul bazei de date poate folosi SQL pentru a defini structura bazei de date și a controla accesul la date;

SQL - limbaj de creare a aplicației client/server... În programele de aplicație, SQL este folosit ca mijloc de organizare a comunicării într-o rețea locală cu un server de baze de date care stochează date partajate etc.

55. Posibilitățile limbajului Limbajul SQL, care respectă cele mai recente standarde SQL: 2003, SQL: 1999, este un limbaj foarte bogat și complex, ale cărui posibilități sunt greu de înțeles imediat, cu atât mai puțin de înțeles. Prin urmare, trebuie să împărțiți limba în niveluri. Într-una dintre clasificările oferite de standardul SQL, acest limbaj este împărțit în niveluri „de bază” (de intrare), „intermediar” (intermediar) și „plin” (plin). Nivelul de bază conține aproximativ patruzeci de comenzi care pot fi grupate în categorii în funcție de funcționalitatea lor.

CREATE TABLE Detalii (NOMZ INT, NAME CHAR (15), YEAR INT, SEX CHAR (3))

DROP TABLE Detalii

Informații ALTER TABLE (SEMPOL CHAR (10))

CREATE VIEW Grade M1 AS SELECT * FROM Grade WHERE GROUP = "M-1"

INSERT INTO Information VALUES (980101, „IVANOV I. I.”, 1980, „SOȚUL”)

DELETE FROM Detalii WHERE NOMZ = 980201

ACTUALIZARE Detalii SETARE NUME COMPLET = "I. I. KRAVTSOVA" UNDE NOMZ = 980201

SELECTAȚI * FROM Informații WHERE NUME COMPLET = „SIDOROV S. S.” SAU Nume complet = „PETROV P. P.”

54. Tipuri de date și expresii Pentru a accesa un tabel relațional în SQL, trebuie să scrieți (setați) o comandă. SELECTAȚIcuvânt cheie spune DBMS ce acțiune va lua această comandă. Comenzile de interogare încep cu un cuvânt cheie. Pe lângă SELECT, acestea pot fi cuvinte CREA- crea, INTRODUCE-introduce, ȘTERGE- șterge, COMMIT- a completa și etc.

DE LA - un cuvânt cheie precum SELECT care apare în fiecare comandă. Este urmată de un spațiu urmat de numele tabelelor folosite ca surse de informații. Numele tabelelor și câmpurilor trebuie să conțină de la 1 la 18 caractere, să înceapă cu o literă și să nu conțină spații sau caractere speciale.

UNDE un cuvânt cheie urmat de un predicat este o condiție impusă unei înregistrări din tabel, pe care trebuie să o îndeplinească pentru a dispărea în selecție.

COMANDA PENTRU - sortarea înregistrărilor afișate (Asc - în ordine crescătoare, Desc - în ordine descrescătoare. Dacă nu este specificat tipul de sortare, sortarea are loc în ordine crescătoare).

CHAR (lungime) CARACTER (lungime)Șiruri de caractere de lungime constantă

INTEGER INTNumere întregi

SMALLINTNumăr întreg mic

NUMERIC (precizie, grad) DECIMAL (precizie, grad DEC (precizie, grad)Număr punct fix

FLOAT (precizie)Număr în virgulă mobilă

Precizie dublanumere cu float zap de mare precizie

Expresiiîn SQL, acestea sunt folosite pentru a stabili criterii de selectare a datelor sau de efectuare a operațiunilor asupra valorilor care sunt citite dintr-o bază de date. Expresiile sunt o secvență specifică de câmpuri de baze de date, constante, funcții, conectate prin operatori.

constante sunt folosite pentru a indica anumite valori ale datelor. Constante de punct fix, de exemplu: 21 -375,18 62,3

Constante în virgulă mobilă, de exemplu: 1,5Е7 -3,14Е9 2,5Е-6 0,783Е24

Constante de șir trebuie să fie cuprinse între ghilimele simple. Exemple de astfel de constante: „Minsk” „New York” „Ivanov I. I.”

Valoare lipsă(NUL). SQL acceptă gestionarea datelor lipsă cu conceptul de valoare lipsă.

Majoritatea SGBD-urilor orientate spre SQL acceptă așa-numitele funcții de agregare (rezumat).... Funcțiile agregate utilizate în mod obișnuit includ următoarele:

· NUMARA- numărul de valori din coloana tabelului;

· SUMĂ- suma valorilor din coloană;

· AVG- media aritmetică a valorilor din coloană;

· MAX- valoarea maximă din coloană;

· MIN Este valoarea minimă din coloană.

Puteți folosi următoarele în expresii tipuri de operatori:

· aritmetic: + (plus), - (scădere), * (multiplicare), / (Divizia);

· relaţie: = (egal),> (mai mare decât),< (меньше), >= (mai mare sau egal),<= (меньше или равно), <>(nu este egal);

· joc de inteligență: ȘI(logic „ȘI”), SAU(„SAU” logic), NU(negație logică);

56. Comenzi pentru gestionarea tranzacțiilor vă permit să asigurați integritatea bazei de date.

Tranzacție SQL Sunt mai multe comenzi SQL secvențiale care trebuie executate ca o singură unitate.

În limbajul SQL, procesarea tranzacțiilor este implementată folosind două comenzi - COMMITși ROLLBACK... Aceștia gestionează modificările făcute de un grup de echipe. Echipă COMMIT raportează finalizarea cu succes a tranzacției. Acesta informează SGBD că tranzacția este finalizată, toate comenzile sale au fost executate cu succes și nu au apărut neconcordanțe în baza de date. Echipă ROLLBACK raportează finalizarea nereușită a tranzacției. Acesta informează SGBD că utilizatorul nu dorește să finalizeze tranzacția, iar SGBD trebuie să renunțe la toate modificările făcute în baza de date ca urmare a tranzacției. În acest caz, SGBD returnează baza de date la starea în care se afla înainte de executarea tranzacției.

Comenzi COMMITși ROLLBACK sunt utilizate în principal în modul program, deși pot fi utilizate și în modul interactiv.

57. Pentru a accesa comenzile de control se referă la comenzi pentru efectuarea de funcții administrative care atribuie sau revocă dreptul (privilegiul) de a utiliza tabelele bazei de date într-un anumit mod. Fiecare utilizator al bazei de date are anumite drepturi în raport cu obiectele bazei de date.

Drepturi Sunt acele acțiuni cu obiectul pe care utilizatorul le poate efectua. Drepturile se pot schimba în timp: cele vechi pot fi anulate, altele noi adăugate. Sunt acordate următoarele drepturi:

INSERT - dreptul de a adăuga date în tabel;

UPDATE - dreptul de modificare a datelor din tabel;

DELETE - dreptul de a șterge datele din tabel;

· REFERINȚE - dreptul de a defini cheia primară.

58 Încorporarea limbajului în programele de aplicație...Pentru a încorpora se referă la comenzi concepute pentru a implementa accesul la baza de date din programe de aplicație scrise într-un anumit limbaj de programare.

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, să trecem la subiect. Acum, să vorbim despre ce este SQL și pentru ce este.

Structured Query Language este un limbaj cu scop general pentru crearea, modificarea și manipularea informațiilor care fac parte din bazele de date relaționale. SQL a fost inițial modalitatea principală de lucru 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 tipului și structurii unuia sau mai multor tabele.

Pe măsură ce s-a dezvoltat, SQL a fost foarte transformat și îmbogățit cu noi funcții utile, drept urmare a devenit din ce în ce mai mult ca un adevărat limbaj de programare. Astăzi, 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 solicitată, 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 pentru lucrul cu date.

Beneficii 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 asociate cu prelucrarea datelor în tabele.
  • Prezența standardelor SQL ajută 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. Modul în care se va face acest lucru este decis automat la nivelul programului propriu-zis al SGBD.

Dezavantajele SQL

  • SQL nu este conform cu modelul de date relaționale. În acest sens, SQL înlocuiește Tutorialul 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 ar lucra un utilizator obișnuit.
  • O oarecare discrepanță în standarde. Multe companii DBMS adaugă propriile caracteristici la dialectul SQL, ceea ce afectează în mod semnificativ versatilitatea limbajului.

Un ultim lucru: ce este SQL Server? Acesta este un sistem de gestionare a bazelor de date care a fost dezvoltat între zidurile celebrei companii Microsoft. Acest sistem funcționează cu succes cu baze de date atât ale computerelor personale de acasă, cât și cu 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 server care primește apeluri 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.

LIMBAJ SQL: MANIPULARE DATE

IN ACEASTA PRELEGERE...

· Scopul Structure Query Language (SQL) și rolul său special în lucrul cu bazele de date.

· Istoria apariției și dezvoltării limbajului SQL.

· Scrierea de instrucțiuni SQL.

· Preluarea informațiilor din baze de date folosind instrucțiunea SELECT.

· Construcția de instrucțiuni SQL, caracterizată prin următoarele caracteristici:

· Utilizarea clauzei WHERE pentru a selecta rânduri care satisfac diverse condiții;

· Sortarea rezultatelor executării interogării folosind construcția ORDER BY;

· Utilizarea funcţiilor de agregare ale limbajului SQL;

· Gruparea datelor selectate folosind clauza GROUP BY;

· Aplicarea subinterogărilor;

· Utilizarea table joins;

· Aplicarea operaţiilor cu mulţimi (UNION, INTERSECT, EXCEPT).

· Efectuarea de modificări în baza de date utilizând instrucțiunile INSERT, UPDATE și DELETE.

Unul dintre limbajele care a apărut ca urmare a dezvoltării modelului de date relaționale este SQL, care acum este foarte răspândit și a devenit de fapt limbajul standard pentru bazele de date relaționale. Standardul SQL a fost lansat de Institutul Național de Standarde al SUA (ANSI) în 1986, iar în 1987 Organizația Internațională pentru Standardizare (ISO) a adoptat acest standard ca standard internațional. SQL este suportat în prezent de sute de tipuri diferite de sisteme de gestionare a bazelor de date concepute pentru o mare varietate de platforme de calcul, de la computere personale la mainframe.

Acest capitol folosește definiția ISO a SQL.

Introducere în limbajul SQL

În această parte, ne vom uita la scopul limbajului SQL, vom explora istoria acestuia și vom analiza motivele pentru care este acum atât de important pentru aplicațiile de baze de date.

Scopul limbajului SQL

Orice limbaj conceput pentru a funcționa cu baze de date ar trebui să ofere utilizatorului următoarele capabilități:

· Creați baze de date și tabele cu o descriere completă a structurii acestora;



· Efectuează operațiuni de bază de manipulare a datelor, cum ar fi inserarea, modificarea și ștergerea datelor din tabele;

· Executați interogări simple și complexe.

În plus, limbajul de lucru cu bazele de date ar trebui să rezolve toate sarcinile de mai sus cu un efort minim din partea utilizatorului, iar structura și sintaxa comenzilor sale ar trebui să fie suficient de simple și accesibile pentru învățare.

Și în sfârșit, limbajul trebuie să fie universal, adică. respectă un standard recunoscut, care vă va permite să utilizați aceeași sintaxă și structură de comandă atunci când treceți de la un SGBD la altul. Standardul modern al limbajului SQL satisface aproape toate aceste cerințe.

SQL este un exemplu de limbaj de transformare a datelor sau un limbaj conceput pentru a lucra cu tabele pentru a transforma datele de intrare în forma de ieșire dorită. Limbajul SQL, care este definit de standardul ISO, are două componente principale:

· Data Definition Language (DDL), conceput pentru a defini structurile bazelor de date și a controla accesul la date;

· Limbajul de manipulare a datelor (DML), conceput pentru a prelua și actualiza datele.

Înainte de standardul SQL3, SQL includea doar comenzi pentru definirea și manipularea datelor; îi lipseau orice comenzi pentru a controla cursul calculelor. Cu alte cuvinte, în acest limbaj nu existau IF ... THEN ... ELSE, GO TO, DO ... WHILE sau orice alte instrucțiuni menite să controleze fluxul procesului de calcul. Astfel de sarcini trebuiau rezolvate programatic, folosind limbaje de programare sau controlul sarcinilor, sau interactiv, ca urmare a acțiunilor efectuate de utilizatorul însuși. Datorită unei asemenea incompletitudini, din punct de vedere al organizării procesului de calcul, limbajul SQL ar putea fi utilizat în două moduri. Prima a fost pentru munca interactivă, în care utilizatorul a introdus instrucțiuni SQL individuale din terminal. Al doilea a fost injectarea instrucțiunilor SQL în programele cu limbaj procedural.

Avantajele limbajului SQL3, a cărui definiție formală a fost adoptată în 1999:

· Limbajul SQL este relativ ușor de învățat.

· Este un limbaj non-procedural, deci trebuie să indice ce informații vor fi obținute, nu cum pot fi obținute. Cu alte cuvinte, SQL nu necesită specificarea metodelor de acces la date.

· La fel ca majoritatea limbilor moderne, SQL acceptă un format de operator fluent. Aceasta înseamnă că atunci când intrați, elementele individuale ale operatorului nu sunt legate de elementele fixe de pe ecran.

· Structura comenzilor este stabilită de un set de cuvinte cheie care sunt cuvinte obișnuite în limba engleză, cum ar fi CREATE TABLE -Create a table, INSERT - Insert, SELECT -Select.

De exemplu:

CREATE TABLE [Vânzări] ((S), [Nume obiect] VARCHAR (15), [Cost] DECIMAL (7,2));

INSERT INTO [Obiect] VALUES ("SG16", "Maro", 8300);

SELECT, [Nume obiect], [Cost];

DE LA [Vânzări]

UNDE [Cost]> 10000;

· Limbajul SQL poate fi folosit de o gamă largă de utilizatori, inclusiv administratorii de baze de date (DBA), managementul companiei, programatori de aplicații și mulți alți utilizatori finali din diferite categorii.

În prezent, există standarde internaționale pentru limbajul SQL care îl definesc în mod oficial ca limbaj standard pentru crearea și manipularea bazelor de date relaționale, ceea ce este de fapt.

Istoria limbajului SQL

Istoria modelului de date relaționale, și indirect a limbajului SQL, a început în 1970 cu publicarea unei lucrări fundamentale a lui EF Codd, care se afla la acea vreme la Laboratorul de Cercetare IBM San Jose. În 1974, D. Chamberlain, care a lucrat în același laborator, a publicat o definiție a unei limbi numită „Structured English Query Language” sau SEQUEL. În 1976, a fost lansată o versiune revizuită a acestui limbaj, SEQUEL / 2; mai târziu numele său a trebuit să fie schimbat în SQL din motive legale - abrevierea SEQUEL era deja folosită de filologi. Dar până în ziua de azi, mulți oameni încă pronunță acronimul SQL ca „sequel”, deși oficial se recomandă să îl citiți ca „es-kyu-el”.

În 1976, pe baza limbajului SEQUEL / 2, IBM Corporation a lansat un prototip DBMS numit „System R”. Scopul acestui studiu a fost de a testa fezabilitatea implementării modelului relațional. Printre alte aspecte pozitive, cel mai important dintre rezultatele acestui proiect poate fi considerat dezvoltarea limbajului SQL în sine. Cu toate acestea, rădăcinile acestui limbaj se întorc la limbajul SQUARE (Specifying Queries as Rational Expressions), care a fost predecesorul. a proiectului System R. Limbajul SQUARE a fost dezvoltat ca instrument de cercetare pentru implementarea algebrei relaționale prin fraze scrise în limba engleză.

La sfârșitul anilor 1970, Oracle a fost lansat de ceea ce este acum Oracle Corporation. Poate că aceasta este prima implementare comercială a unui SGBD relațional construit pe utilizarea limbajului SQL.

Puțin mai târziu, a apărut DBMS-ul INGRES, care folosea limbajul de interogare QUEL.

Acest limbaj era mai structurat decât SQL, dar semantica sa era mai puțin asemănătoare cu cea a englezei obișnuite. Mai târziu, când SQL a fost adoptat ca limbaj standard al bazei de date relaționale, INGRES a fost complet tradus în utilizarea sa. În 1981, IBM a lansat primul său sistem comercial de gestionare a bazelor de date relaționale numit SQL / DS (pentru DOS / VSE). În 1982, a fost lansată o versiune a acestui sistem pentru mediul VM / CMS, iar în 1983 - pentru mediul MVS, dar sub numele DB2.

În 1982, Institutul Național de Standarde al Statelor Unite (ANSI) a început să lucreze la Relation Database Language (RDL) pe baza unor documente conceptuale de la IBM. În 1983, Organizația Internațională pentru Standardizare (ISO) s-a alăturat acestei lucrări. Eforturile comune ale ambelor organizații au culminat cu lansarea standardului de limbaj SQL. Numele RDL a fost abandonat în 1984, iar schița de limbaj a fost reproiectată pentru a aproxima implementările SQL existente.

Versiunea originală a standardului, care a fost emisă de ISO în 1987, a primit multe critici. În special, Date, un cercetător renumit în domeniu, a subliniat că standardul omite funcții critice, inclusiv integritatea referențială și unii operatori relaționali.

În plus, el a remarcat redundanța excesivă a limbii - una și aceeași cerere ar putea fi scrisă în mai multe versiuni diferite. Majoritatea criticilor s-au dovedit a fi valabile și s-au făcut ajustările necesare standardului chiar înainte de a fi publicat. Cu toate acestea, s-a decis că este mai important să se lanseze standardul cât mai curând posibil, astfel încât să poată acționa ca o bază comună pe care atât limbajul în sine, cât și implementările sale să se poată dezvolta mai mult decât să aștepte până când toate funcțiile pe care diferiți experți le consideră necesare. sunt definite şi agreate.pentru un limbaj similar.

În 1989, ISO a publicat un supliment la standardul care definește funcțiile de integritate a datelor. În 1992, a fost lansată prima revizuire majoră a standardului ISO, denumită uneori SQL2 sau SQL-92. Deși unele dintre funcții au fost definite pentru prima dată în acest standard, multe dintre ele au fost deja implementate integral sau parțial în una sau mai multe implementări comerciale ale limbajului SQL.

Și următoarea versiune a standardului, care se numește în mod obișnuit SQL3, a fost lansată abia în 1999. Această versiune conține suport suplimentar pentru funcțiile de gestionare a datelor orientate pe obiecte.

Funcțiile care sunt adăugate standardului de limbaj de către dezvoltatorii de implementări comerciale sunt numite extensii. De exemplu, standardul limbajului SQL definește șase tipuri diferite de date care pot fi stocate în baze de date. În multe implementări, această listă este completată de diverse extensii. Fiecare dintre implementările limbii este numită dialect. Nu există două dialecte complet identice, deoarece în prezent nu există niciun dialect care să respecte pe deplin standardul ISO.

Mai mult, pe măsură ce dezvoltatorii de baze de date introduc noi funcționalități în sisteme, își extind continuu dialectele SQL, cu rezultatul că dialectele individuale devin din ce în ce mai diferite unele de altele. Cu toate acestea, nucleul limbajului SQL rămâne mai mult sau mai puțin standardizat în toate implementările.

Deși conceptele originale ale SQL au fost dezvoltate de IBM, importanța sa i-a împins curând pe alți dezvoltatori să-și creeze propriile implementări. În prezent, există literalmente sute de produse disponibile pe piață bazate pe utilizarea limbajului SQL și auzim în mod constant despre lansarea a tot mai multe versiuni noi,

Funcționalitatea limbajului SQL

Funcționalitatea de bază a limbajului SQL este prezentată mai jos.

Definirea datelor. Această funcție SQL este o descriere a structurii datelor suportate și a organizării relațiilor relaționale (tabele). Pentru a-l implementa sunt destinati operatorii pentru crearea unei baze de date, crearea tabelelor si accesarea datelor.

Crearea bazei de date... Instrucțiunea CREATE DATABASE este utilizată pentru a crea o nouă bază de date. Numele bazei de date care urmează să fie creată este indicat în structura operatorului.

Crearea de tabele. Tabelul de bază este creat folosind instrucțiunea CREATE TABLE. Acest operator specifică numele câmpurilor, tipurile de date pentru acestea, lungimea (pentru unele tipuri de date). Următoarele tipuri de date sunt utilizate în SQL:

INTEGER - întreg;

CHAR - valoarea caracterului;

VARCHAR - valoarea caracterului, sunt stocate doar caracterele nevide;

DECIMAL - număr zecimal;

FLOAT - număr în virgulă mobilă;

DOUBLE PRECISION - precizie dublă în virgulă mobilă;

DATETIME - data și ora;

BOOL este o valoare booleană.

Declarația create table specifică constrângeri asupra valorilor coloanei și asupra unui tabel. Limitările posibile sunt prezentate în tabel. 4.8

Tabelul 4.8 Restricții privind datele definite

Pentru modelul de date relaționale, specificarea unei chei străine (FOREIGNKEY) este esențială. Când declarați chei străine, trebuie să impuneți constrângeri adecvate asupra coloanei, cum ar fi NOT NULL.

Într-o instrucțiune SQL, CHECK denotă constrângeri semantice care impun integritatea datelor, cum ar fi constrângerea setului de valori valide pentru o anumită coloană.

Nu puteți utiliza instrucțiunea create table de mai multe ori pentru același tabel. Dacă, după crearea sa, s-au găsit inexactități în definiția sa, atunci puteți face modificări folosind instrucțiunea ALTER TABLE. Acest operator are scopul de a schimba structura unui tabel existent: puteți șterge sau adăuga un câmp la un tabel existent.

Manipulare de date. SQL permite unui utilizator sau aplicație să modifice conținutul unei baze de date prin inserarea de date noi, ștergerea sau modificarea datelor existente.

Inserarea de date noi este procedura de adăugare a rândurilor la baza de date și se realizează folosind instrucțiunea INSERT.

Modificarea datelor presupune modificări ale valorilor într-una sau mai multe coloane ale unui tabel și se efectuează folosind o instrucțiune UPDATE. Exemplu:

SET suma = suma + 1000,00

UNDE suma> 0

Ștergerea rândurilor din tabel se face folosind instrucțiunea DELETE. Sintaxa operatorului este:

DE LA masă

Clauza WHERE este opțională; totuși, dacă nu o includeți, toate înregistrările din tabel vor fi șterse. Este util să folosiți instrucțiunea SELECT cu aceeași sintaxă ca și instrucțiunea DELETE pentru a verifica în prealabil ce înregistrări vor fi șterse.

Asigurarea integritatii datelor. Limbajul SQL vă permite să definiți constrângeri de integritate destul de complexe, a căror satisfacție va fi verificată pentru toate modificările bazei de date. Controlul asupra rezultatelor tranzacțiilor, procesarea erorilor emergente și coordonarea lucrărilor paralele cu baza de date a mai multor aplicații sau utilizatori este asigurată de instrucțiunile COMMIT (fixează încheierea cu succes a tranzacției curente și începutul uneia noi) și ROLLBACK ( nevoia de rollback - restabilirea automată a stării bazei de date la începutul tranzacției)

Colectare de date Este una dintre cele mai importante funcții ale bazei de date, căreia îi corespunde instrucțiunea SELECT. Un exemplu de utilizare a operatorului a fost discutat în secțiunea anterioară.

În SQL, puteți crea secvențe imbricate de interogări (subinterogări). Există anumite tipuri de interogări care sunt cel mai bine implementate folosind subinterogări. Aceste cereri includ așa-numitele verificări ale existenței. Să presupunem că doriți să obțineți date despre elevii care nu au nota șapte. Dacă se returnează un set gol, atunci aceasta înseamnă un singur lucru - fiecare elev are cel puțin o astfel de notă.

Legătura de tabele... Instrucțiunile SQL vă permit să preluați date din mai mult de un tabel. O modalitate de a face acest lucru este să legați tabelele pe un singur câmp comun.

Instrucțiunea SELECT trebuie să conțină o constrângere privind coincidența valorilor unei anumite coloane (câmp). Apoi numai acele rânduri în care valorile coloanei specificate sunt aceleași vor fi preluate din tabelele legate. Numele coloanei este indicat numai împreună cu numele tabelului; în caz contrar, operatorul va fi ambiguu.

Puteți utiliza alte tipuri de îmbinări de tabel: instrucțiunea INTER JOIN asigură că setul de înregistrări rezultat conține valori corespunzătoare în câmpurile aferente. Imbinarile exterioare (OUTER JOIN) permit sa se includa in rezultatul interogarii toate randurile dintr-un tabel si randurile corespunzatoare dintr-un altul

Controlul accesului. SQL asigură sincronizarea procesării bazei de date de către diverse aplicații, protecția datelor împotriva accesului neautorizat.

Accesul la date într-un mediu multi-utilizator este guvernat de declarațiile GRANT și REVOKE. În fiecare instrucțiune, trebuie să specificați utilizatorul, obiectul (tabel, vizualizare), în raport cu care este atribuită autoritatea și autoritatea însăși. De exemplu, instrucțiunea GRANT îi cere utilizatorului X să selecteze date din tabelul PRODUCT:

Acordați SELECTARE PE PRODUS LUI X

Operatorul REVOKE revocă toate autorizațiile acordate anterior.

Încorporarea SQL în aplicații... Aplicațiile reale sunt de obicei scrise în alte limbi care generează cod SQL și le trimit la DBMS ca text ASCII.

Standardul IBM pentru produse SQL specifică utilizarea SQL încorporat. Când scrieți un program de aplicație, textul acestuia este un amestec de comenzi din limbajul principal de programare (de exemplu, C, Pascal, Cobol, Fortran, Assembler) și comenzi SQL cu un prefix special, de exemplu. ExecSQL. Structura instrucțiunilor SQL a fost extinsă pentru a se adapta variabilelor limbajului gazdă în instrucțiunea SQL.



Procesorul SQL modifică vizualizarea programului în conformitate cu cerințele compilatorului limbajului principal de programare. Funcția compilatorului este de a traduce (traduce) un program dintr-un limbaj de programare sursă într-un limbaj apropiat unui limbaj de mașină. După compilare, programul de aplicație (aplicația) este un modul independent.

dialecte SQL

SGBD-urile relaționale moderne folosesc dialectele SQL pentru a descrie și a manipula datele. Un subset al limbajului SQL care vă permite să creați și să descrieți o bază de date se numește DDL (Data Definition Language).

Inițial, SQL a fost numit SEQUEL (Structured English Query Language), apoi SEQUEL / 2 și apoi pur și simplu SQL. Astăzi, SQL este standardul de facto pentru sistemele de management al bazelor de date relaționale.

Primul standard de limbaj a apărut în 1989 - SQL-89 și a fost susținut de aproape toate SGBD-urile relaționale comerciale. Era de natură generală și era deschisă unei interpretări ample. Avantajele SQL-89 includ standardizarea sintaxei și semanticii operatorilor pentru preluarea și manipularea datelor, precum și fixarea instrumentelor pentru limitarea integrității bazei de date. Cu toate acestea, lipsea o secțiune atât de importantă precum manipularea schemei bazei de date. Incompletitudinea standardului SQL-89 a dus la apariția în 1992. următoarea versiune a limbajului SQL.

SQL2 (sau SQL-92) acoperă aproape toate problemele necesare: manipularea schemei bazei de date, gestionarea tranzacțiilor și sesiunilor, suportarea arhitecturii client-server sau instrumente de dezvoltare a aplicațiilor.

Un alt pas în dezvoltarea limbajului este versiunea SQL 3. Această versiune a limbajului este completată cu un mecanism de declanșare, definirea unui tip de date arbitrar și o extensie de obiect.

În prezent, există trei niveluri ale limbii: începător, intermediar și complet. Mulți furnizori de SGBD-uri folosesc propriile lor implementări SQL bazate cel puțin la nivelul de intrare al standardului ANSI corespunzător și care conțin unele extensii specifice SGBD. Masa 4.9 prezintă exemple de dialecte SQL.

Tabelul 4.9 Dialecte SQL

SGBD Limbajul de interogare
SGBD System R SQL
Db2 SQL
Acces SQL
SYBASE SQL oriunde Watcom-SQL
SYBASE SQL Server Transact_SQL
SQL-ul meu SQL
Oracol PL / SQL

Bazele de date orientate pe obiecte folosesc Object Query Language (OQL). Limbajul OQL s-a bazat pe comanda SQL2 SELECT și a adăugat capacitatea de a direcționa o interogare către un obiect sau o colecție de obiecte, precum și capacitatea de a apela metode într-o singură interogare.

Compatibilitatea multora dintre dialectele SQL utilizate determină compatibilitatea SGBD. De exemplu, SYBASE SQL Anywhere este cât se poate de compatibil cu SYBASE SQL Server. Una dintre laturile acestei compatibilități este suportul SYBASE SQL Anywhere pentru un astfel de dialect al limbajului SQL precum Transact-SQL... Acest dialect este folosit în SYBASE SQL Server și poate fi folosit în SYBASE SQL Anywhere împreună cu propriul său dialect SQL - Watcom-SQL.

Întrebări de control

1. Cum puteți clasifica un SGBD?

2. Ce modele de baze de date există?

3. Care sunt principalele elemente ale modelelor infologice?

4. Ce tipuri de relații există între entități?

5. Ce sunt diagramele ER și pentru ce sunt folosite?

6. Ce permite procedura de normalizare a tabelului?

7. Care sunt limbajul și instrumentele software ale SGBD?

8. Ce tip este MS Access DBMS?

9. Care sunt principalele obiecte ale SGBD-ului MS Access?

10. Pentru ce sunt folosite instrucțiunile SQL de bază?

Top articole similare