Cum se configurează smartphone-uri și PC-uri. Portal de informare

Limbajul SQL. Scopul limbajului SQL

Programe client

protocol TFTP

TFTP- de asemenea, protocolul FTP, dar pe lângă protocolul UDP (adică un protocol fără livrare garantată). Poate fi folosit într-o rețea locală unde viteza de transmisie este mai importantă. În practică este rar folosit.

FTP- programul este lansat din linia de comandă.

Windows Commander- poate funcționa ca client FTP. Vă permite să lucrați cu directoarele de la distanță în același mod ca și cu cele locale.

NetVampire - Un client FTP specializat care vă permite să descărcați fișiere mari și să descărcați prin canale proaste.

SQL (Structured Query Language) este un limbaj de interogare structurat pentru bazele de date relaționale. În acest limbaj, puteți formula expresii (interogări) care preiau datele necesare, le modifică, creează tabele și modifică structurile acestora, determină drepturile de acces la date și multe altele.

Interogările sunt executate de un sistem de management al bazelor de date (DBMS). Dacă nu sunteți un specialist în dezvoltarea și administrarea bazelor de date, atunci este posibil să fiți un utilizator al bazei de date care vizualizează și/sau modifică datele din tabelele existente. În multe cazuri, acestea și alte operațiuni de bază de date sunt efectuate folosind aplicații speciale care oferă utilizatorului o interfață convenabilă. De obicei, aplicațiile sunt scrise în limbaje speciale de programare (C, Pascal, Visual Basic etc.) și sunt cel mai adesea create folosind medii de dezvoltare integrate, de exemplu, Delphi, C++ Builder etc. Totuși, accesul la baza de date poate fi obţinute fără ele - folosind doar SQL. De asemenea, trebuie menționat că aplicațiile specializate folosesc de obicei fragmente de cod SQL atunci când accesează baza de date.

Astfel, SQL este un limbaj standard utilizat pe scară largă pentru lucrul cu baze de date relaționale. Sintaxa acestui limbaj este suficient de simplă încât poate fi folosită de utilizatorii obișnuiți, nu doar de programatori. În zilele noastre, utilizatorul obișnuit de computer ar trebui să cunoască cel puțin un procesor de text (cum ar fi Microsoft Word) și un program de calcul tabelar (cum ar fi Microsoft Excel). E bine dacă știe și el să folosească bazele de date. Există multe SGBD-uri diferite, dar există un singur instrument universal pentru lucrul cu bazele de date - SQL. Cunoașterea SQL, cel puțin elementele de bază, și capacitatea de a-l folosi pentru a căuta și analiza date reprezintă o parte fundamentală a cunoștințelor de calculator, chiar și pentru utilizatorii obișnuiți.

Primele dezvoltări ale sistemelor de management al bazelor de date relaționale (DBMS relațional) au fost realizate la IBM la începutul anilor 1970. În același timp, a fost creat un limbaj de date pentru a funcționa în aceste sisteme. Versiunea experimentală a acestui limbaj s-a numit SEQUEL - din engleză. Structured English Query Language (limbaj structurat de interogare engleză). Cu toate acestea, versiunea oficială a fost numită mai scurtă - SQL (Structured Query Language). Mai precis, SQL este un sublimbaj de date, deoarece DBMS conține alte instrumente de limbaj.

În 1981, IBM a lansat SGBD relațional SQL/DS. Până în acest moment, Relation Software Inc. (azi este Oracle Corporation) și-a lansat deja SGBD-ul relațional. Aceste produse au devenit imediat standardul pentru sistemele de management al bazelor de date. Aceste produse au inclus și SQL, care a devenit standardul de facto pentru sublimbajele de date. Producătorii altor SGBD-uri au lansat propriile versiuni de SQL. Acestea includ mai mult decât capabilitățile de bază ale produselor IBM. Pentru a obține un avantaj pentru SGBD-ul „lor”, producătorii au introdus câteva extensii SQL. În același timp, au început lucrările pentru crearea unui standard SQL general recunoscut.

În 1986, Institutul Național American de Standarde (ANSI) a lansat standardul oficial SQL-86, care a fost actualizat în 1989 și redenumit SQL-89. În 1992, acest standard a fost numit SQL-92 (ISO/IEC 9075:1992). Cea mai recentă versiune a standardului SQL este SQL:2003 (ISO/IEC 9075X:2003).

Orice implementare a SQL într-un anumit SGBD este oarecum diferită de standardul cu care producătorul declară conformitate. Astfel, multe SGBD-uri (de exemplu, Microsoft Access 2003, PostgreSQL 7.3) nu acceptă pe deplin SQL-92, ci doar cu un anumit nivel de conformitate. În plus, ele suportă și elemente care nu sunt incluse în standard. Cu toate acestea, dezvoltatorii DBMS se străduiesc să se asigure că noile versiuni ale produselor lor respectă cât mai îndeaproape standardul SQL.

Atenţie. Acest tutorial descrie elemente SQL2003, care nu sunt toate acceptate de SGBD-urile existente. Înainte de a le pune în practică, ar trebui să vă asigurați că vor funcționa în SGBD. Puteți afla despre acest lucru din documentația tehnică. Majoritatea elementelor descrise corespund versiunilor anterioare ale SQL, în special SQL-92, utilizat pe scară largă.

SQL a fost conceput ca un simplu limbaj de interogare pentru o bază de date relațională, apropiat de limbajul natural (mai precis, de engleză). Se spera ca apropierea formei de limbajul natural să facă din SQL un instrument care ar putea fi utilizat pe scară largă de utilizatorii obișnuiți ai bazelor de date, nu doar de programatori. Inițial, SQL nu conținea niciuna dintre structurile de control găsite în limbajele de programare convenționale. Cererile, a căror sintaxă este destul de simplă, au fost introduse direct din consolă secvenţial una după alta şi executate în aceeaşi secvenţă. Cu toate acestea, SQL nu a devenit niciodată un instrument pentru angajații băncii, vânzătorii de bilete de avion și de tren, economiști și alți angajați ai diferitelor companii care folosesc informațiile stocate în baze de date. Pentru ei, SQL-ul simplu s-a dovedit a fi prea complex și incomod, în ciuda apropierii sale de limbajul natural al întrebărilor.

În practică, o bază de date este de obicei lucrată prin aplicații scrise de programatori în limbaje procedurale, de exemplu, C, Visual Basic, Pascal, Java etc. Aplicațiile sunt adesea create în medii speciale de dezvoltare vizuală, cum ar fi Delphi, Microsoft Access, Visual dBase, etc. n În același timp, dezvoltatorul aplicației practic nu trebuie să scrie coduri de program, deoarece sistemul de dezvoltare o face pentru el. În orice caz, lucrul cu codul programului se dovedește a fi minim. Aceste aplicații au o interfață grafică ușor de utilizat, care nu obligă utilizatorul să introducă direct interogări în SQL. Aplicația face acest lucru în schimb. Cu toate acestea, aplicația poate sau nu să folosească SQL pentru a accesa baza de date. SQL nu este singurul, deși este un mijloc foarte eficient de preluare, adăugare și modificare a datelor, iar dacă este posibil să îl utilizați într-o aplicație, atunci ar trebui făcut.

Bazele de date relaționale pot și există independent de aplicațiile care oferă interfața cu utilizatorul. Dacă dintr-un motiv oarecare nu există o astfel de interfață, atunci baza de date poate fi accesată folosind SQL, folosind consola sau vreo aplicație cu care vă puteți conecta la baza de date, introduceți și trimiteți o interogare SQL (de exemplu, Borland SQL Explorer).

Limbajul SQL este considerat un limbaj declarativ (descriptiv), spre deosebire de limbajele în care sunt scrise programele. Aceasta înseamnă că expresiile SQL descriu ce trebuie făcut, nu cum.

De exemplu, pentru a selecta informații despre numele și funcțiile angajaților departamentului 102 din tabelul de angajați, trebuie doar să rulați următoarea interogare:

SELECT Nume, Poziție FROM Angajații WHERE Departament=102;

În rusă această expresie sună astfel:

ALEGE Nume, poziție DIN Angajatii CU condiția ca Departament = 102;

Pentru a schimba valoarea " Ivanov "pe" Petrov coloana " Nume , rulați următoarea interogare:

UPDATE Angajații SET Nume = „Petrov” WHERE Nume = „Ivanov”;

În rusă această expresie arată astfel:

UPDATE Angajatii INSTALAT Nume EGAL " Petrov „UNDE Nume = „Ivanov” ;

Nu este necesar să descrieți în detaliu acțiunile pe care trebuie să le efectueze SGBD pentru a selecta datele specificate în interogare din tabel. Pur și simplu descrieți ceea ce doriți să primiți. Ca rezultat al executării interogării, SGBD returnează un tabel care conține datele pe care le-ați solicitat. Dacă nu există date în baza de date care să corespundă interogării, va fi returnat un tabel gol.

Cu toate acestea, versiunile recente ale SQL acceptă instrucțiuni de control al calculelor native limbajelor de control procedurale (instrucțiuni de ramificare condiționată și buclă). Prin urmare, SQL nu este acum un limbaj pur declarativ.

Pe lângă extragerea, adăugarea, modificarea și ștergerea datelor din tabele, SQL vă permite să efectuați toate acțiunile necesare pentru a crea, modifica și securiza bazele de date. Toate aceste capabilități sunt distribuite între trei componente SQL:

· DML (Limba de manipulare a datelor - limbaj de manipulare a datelor ) este destinat să susțină baza de date: selecție ( SELECTA ), completări ( INTRODUCE ), modificări ( UPDATE ) și ștergere ( ŞTERGE ) date din tabele. Acești operatori (comenzi) pot conține expresii, inclusiv cele calculate, precum și subinterogări - interogări conținute în cadrul unei alte interogări. În general, o expresie de interogare poate fi atât de complexă încât nu poți spune imediat ce face. Cu toate acestea, o interogare complexă poate fi împărțită mental în părți care sunt mai ușor de analizat. De asemenea, interogările complexe sunt create din expresii (subinterogări) relativ ușor de înțeles.

· DDL (Limba de definire a datelor - limbaj de definire a datelor ) este conceput pentru a crea, modifica și șterge tabele și întreaga bază de date. Exemple de declarații incluse în DDL sunt CREAȚI TABEL (creați un tabel)" CREATE VIEW (creați vizualizarea), CREAȚI SHEMA (creează o diagramă), ALTER TABLE (tabel de schimb), PICĂTURĂ (șterge), etc.

· DCL (Limbajul de control al datelor - limbaj de gestionare a datelor ) este conceput pentru a proteja baza de date de diferite tipuri de daune. SGBD oferă în mod automat o anumită protecție a datelor. Cu toate acestea, în unele cazuri ar trebui luate în considerare măsuri suplimentare prevăzute de DCL.

Traducere: Alexandr Pyramidin

Acest articol vă prezintă structura limbajului SQL, precum și câteva concepte generale, cum ar fi tipurile de câmpuri de date pe care le pot conține și unele dintre ambiguitățile care există în SQL. Nu trebuie să vă amintiți fiecare detaliu menționat în acest articol. Aceasta este doar o scurtă prezentare generală; sunt oferite multe detalii, astfel încât să vă puteți referi la ele mai târziu, pe măsură ce stăpâniți limba.

Cum funcționează SQL?

SQL este un limbaj conceput special pentru baze de date relaționale (RDB). Face o mare parte din munca pe care ar trebui să o faceți dacă ați folosi un limbaj de programare de uz general, cum ar fi C. Pentru a forma un RDB în C, ar trebui să începeți de la zero. Ați defini un obiect numit tabel care ar putea crește pentru a avea orice număr de rânduri și apoi ați crea proceduri incrementale pentru a insera și a prelua valori.

Dacă doriți să găsiți anumite șiruri de caractere, va trebui să urmați o procedură pas cu pas, cum ar fi următoarea:

  • Luați în considerare un rând de masă.
  • Verificați dacă acest șir este unul dintre șirurile de care aveți nevoie.
  • Dacă da, salvați-l undeva până când întregul tabel a fost verificat.
  • Verificați dacă există alte rânduri în tabel.
  • Dacă există, reveniți la pasul 1.
  • Dacă nu mai există rânduri, imprimați toate valorile stocate la pasul 3.

(Desigur, acesta nu este setul real de comenzi C, ci doar logica pașilor care ar fi incluși într-un program real.) SQL va face toate acestea pentru tine. Comenzile din SQL pot funcționa pe toate grupurile de tabele ca o singură entitate și pot procesa orice cantitate de informații extrase sau derivate din ele ca o singură unitate.

Ce face ANSI?

Așa cum am spus în introducere, standardul SQL este definit folosind codul ANSI (American National Standards Institute). SQL nu a fost inventat de ANSI. Aceasta este în esență o invenție IBM. Dar alte companii au sărit pe SQL imediat. Cel puțin o companie (Oracle) a câștigat dreptul de a comercializa produse SQL de la IBM.

După ce pe piață au apărut o serie de programe SQL concurente, ANSI a definit standardul la care ar trebui să se conformeze. (Definirea unor astfel de standarde este funcția ANSI.) Cu toate acestea, după aceasta au apărut unele probleme. Ele au apărut ca urmare a standardizării ANSI, sub forma unor restricții. Deoarece ANSI nu definește întotdeauna ceea ce este cel mai util, programele încearcă să se conformeze standardului ANSI fără a-i permite să le limiteze prea mult. Acest lucru, la rândul său, duce la inconsecvențe aleatorii. Programele de baze de date adaugă de obicei caracteristici suplimentare la ANSI SQL și adesea relaxează multe dintre restricții. Prin urmare, vor fi luate în considerare și variantele ANSI comune. Deși evident că nu putem acoperi fiecare excepție sau variație, ideile bune tind să fie adoptate și utilizate într-o varietate de programe, chiar și atunci când nu sunt definite de standardul ANSI. ANSI este un tip de standard minim și puteți face mai mult decât vă permite, deși trebuie să urmați liniile directoare ale acestuia atunci când efectuați sarcinile pe care le specifică.

SQL interactiv și imbricat

Există două SQL-uri: interactive și imbricate. În cea mai mare parte, ambele forme funcționează la fel, dar sunt folosite diferit. SQL interactiv este utilizat pentru a rula direct pe baza de date pentru a produce rezultate pentru utilizare de către client. În acest SQL - când introduceți o comandă, aceasta va fi executată imediat și puteți vedea imediat rezultatul (dacă există).

SQL imbricat constă din comenzi SQL plasate în cadrul programelor care sunt de obicei scrise într-o altă limbă (cum ar fi COBOL sau PASCAL). Acest lucru face ca astfel de programe să fie mai puternice și mai eficiente.

Cu toate acestea, permiterea acestor limbi vine cu o structură SQL și un stil de gestionare a datelor care necesită unele extensii SQL interactive. Trecerea comenzilor SQL în SQL imbricat este „fișată” pentru variabilele sau parametrii utilizați de programul în care au fost imbricate.

În această carte, vom prezenta SQL într-un mod interactiv. Acest lucru ne va oferi posibilitatea de a discuta comenzile și acțiunile lor fără a ne îngrijora cum sunt interfațate cu alte limbi. SQL interactiv este cea mai utilă formă pentru non-programatori. Tot ceea ce înveți despre SQL interactiv se aplică în general unui formular imbricat. Modificările necesare pentru utilizarea unui formular imbricat vor fi tratate în ultimul capitol al acestei cărți.

Subsecțiuni SQL

Ambele forme interactive și imbricate de SQL au numeroase părți sau subsecțiuni. Deoarece probabil veți întâlni această terminologie când citiți SQL, vom oferi câteva clarificări. Din păcate, acești termeni nu sunt utilizați universal în toate implementările. Ele sunt specificate de ANSI și sunt utile la nivel conceptual, dar majoritatea programelor SQL nu fac nimic pentru a le gestiona separat, așa că devin în esență categorii funcționale de comenzi SQL.

  • DDL (Data Definition Language) - numit Schema Description Language în ANSI - constă din comenzi care creează obiecte (tabele, indexuri, vizualizări și așa mai departe) într-o bază de date.
  • DML (Data Manipulation Language) este un set de comenzi care determină ce valori sunt reprezentate în tabele la un moment dat.
  • DCD (Data Control Language) constă în instrumente care determină dacă să permită unui utilizator să efectueze sau nu anumite acțiuni. Ele fac parte din ANSI DDL.

Nu uitați aceste nume. Acestea nu sunt limbi diferite, ci secțiuni de comenzi SQL grupate după funcțiile lor.

Diverse tipuri de date

Nu toate tipurile de valori care pot fi găsite în câmpurile de tabel sunt logic aceleași. Cea mai evidentă diferență este între numere și text. Nu puteți pune numerele în ordine alfabetică sau nu puteți scădea un nume din altul.

Deoarece sistemele DDB se bazează pe relații între informații, diferitele tipuri de date trebuie diferențiate unele de altele, astfel încât să se poată face procese și comparații adecvate între ele. În SQL, acest lucru se realizează atribuind fiecărui câmp un tip de date care indică tipul de valoare pe care îl poate conține câmpul. Toate valorile din acest câmp trebuie să fie de același tip. În tabelul Clienți, de exemplu, cname și oraș conțin linii de text de evaluat, iar snum și cnum sunt numere. Din acest motiv, nu puteți introduce o valoare Cea mai mare sau o valoare Nici unul în câmpul de evaluare, care este un tip de date numerice. Această constrângere este bună, deoarece impune o anumită structură datelor dvs. Veți compara adesea unele sau toate valorile dintr-un anumit câmp, așa că este posibil să doriți să efectuați o acțiune numai pe anumite rânduri, mai degrabă decât pe toate. Nu ați putea face acest lucru dacă valorile câmpului au fost de tip mixt de date.

Din păcate, definirea acestor tipuri de date este un domeniu major în care majoritatea programelor de baze de date comerciale și standardul oficial SQL nu sunt întotdeauna de acord. Standardul ANSI SQL recunoaște doar textul și numărul, în timp ce majoritatea programelor comerciale folosesc alte tipuri speciale. Precum DATE și TIME sunt, de fapt, tipuri aproape standard (deși formatul lor exact variază). Unele pachete acceptă și tipuri precum MONEY și BINARY. (MONEY este un sistem special de „monedă” folosit de computere.)

Toate informațiile dintr-un computer sunt transmise în numere binare și apoi convertite în alte sisteme, astfel încât să le putem folosi și înțelege cu ușurință.

ANSI definește mai multe tipuri numerice, diferențele dintre care sunt destul de subtile și uneori confuze. Tipurile de date ANSI permise sunt enumerate în Anexa B. Complexitatea tipurilor numerice ANSI poate fi atribuită, cel puțin parțial, efortului de a face SQL imbricat compatibil cu o serie de alte limbaje. Cele două tipuri de numere ANSI, INTEGER și DECIMAL (care pot fi abreviate ca INT și, respectiv, DEC), vor fi adecvate pentru scopurile noastre, precum și pentru cele mai multe aplicații practice de afaceri. Desigur, tipul INTEGER poate fi reprezentat ca un NUMĂR DECIMAL, care nu conține nicio cifră la dreapta punctului zecimal.

Tipul de text este CHAR (sau CHAR), referindu-se la un șir de text. Un câmp CHAR are o lungime determinată de numărul maxim de caractere care pot fi introduse în câmp. Majoritatea implementărilor au, de asemenea, un tip non-standard numit VARCHAR, care este un șir de text și poate avea orice lungime până la un maxim definit de implementare (de obicei 254 de caractere). Valorile CHARACTER și VARCHAR sunt incluse între ghilimele simple ca „text”. Diferența dintre CHAR și VARCHAR este că CHAR trebuie să rezerve suficientă memorie pentru lungimea maximă a șirului, în timp ce VARCHAR alocă memorie după cum este necesar.

Tipurile de caractere constau din toate caracterele imprimabile, inclusiv numerele. Cu toate acestea, numărul 1 nu este același cu simbolul „1”. Caracterul „1” este doar o bucată de text tipărită, nedefinită de sistem ca valoare numerică 1. De exemplu, 1 + 1 = 2, dar „1” + „1” nu este egal cu „2”. Valorile caracterelor sunt stocate în computer ca valori binare, dar sunt afișate utilizatorului ca text tipărit.

Conversia se face conform formatului determinat de sistemul pe care îl utilizați. Acest format de conversie va fi unul dintre cele două tipuri standard (eventual cu extensii) utilizate în sistemele informatice: codul ASCII (utilizat în toate computerele personale și mici) și codul EBCDIC (Extended Binary Decimal Information Interchange Code) (utilizat în computerele mari). Anumite operații, cum ar fi alfabetizarea valorilor câmpurilor, se vor schimba odată cu formatul.

Trebuie să urmărim piața, nu ANSI, în utilizarea tipului DATE. (Pe un sistem care nu recunoaște tipul DATE, puteți, desigur, să declarați data ca un caracter sau câmp numeric, dar acest lucru va face ca majoritatea operațiunilor să consume mai multă muncă.)

Ar trebui să vă revizuiți documentația pentru pachetul software pe care îl veți utiliza pentru a afla exact ce tipuri de date acceptă.

SQL. Incoerențe.

Puteți înțelege din discuția anterioară că există discrepanțe separate între produse din lumea SQL. SQL a apărut din lumea bazelor de date comerciale ca un instrument și a fost ulterior dezvoltat într-un standard ANSI. Din păcate, ANSI nu stabilește întotdeauna ce este cel mai util, așa că programele încearcă să se conformeze standardului ANSI fără a-l lăsa să le limiteze prea mult. ANSI este un fel de standard minim - puteți face mai mult decât vă permite, dar trebuie să puteți obține aceleași rezultate atunci când efectuați aceeași sarcină.

CE ESTE UN „UTILIZATOR”?

SQL rezidă de obicei pe sisteme informatice care au mai mult de un utilizator și, prin urmare, trebuie să facă diferența între ei (familia dvs. de PC-uri poate avea orice număr de utilizatori, dar de obicei nu are o modalitate de a diferenția un utilizator de altul).

De obicei, într-un astfel de sistem, fiecare utilizator are un fel de cod de verificare a drepturilor care îl identifică (terminologia variază). La începutul unei sesiuni cu un computer, un utilizator se conectează (se înregistrează), spunând computerului cine este utilizatorul identificându-se folosind un anumit ID. Orice număr de persoane care utilizează un ID de acces sunt utilizatori individuali; și, în mod similar, o persoană poate reprezenta un număr mare de utilizatori (la momente diferite) folosind diferite ID-uri de acces SQL. Acțiunile din majoritatea mediilor SQL sunt mapate la un identificator de acces specific care se potrivește exact unui anumit utilizator. Un tabel sau alt obiect este deținut de un utilizator care deține control total asupra acestuia. Utilizatorul poate avea sau nu privilegiul de a efectua o acțiune asupra obiectului. În scopurile noastre, vom fi de acord că orice utilizator are privilegiile necesare pentru a efectua orice acțiune până când vom reveni în mod specific la discuția despre privilegii din Capitolul 22. Valoarea specială USER poate fi folosită ca argument într-o comandă. Indică ID-ul disponibil al utilizatorului care emite comanda.

Convenții și terminologie

Cuvintele cheie sunt cuvinte care au o semnificație specială în SQL. Pot fi comenzi, dar nu text sau nume de obiecte. Vom evidenția cuvintele cheie tastându-le cu MAJUSCULE. Trebuie să aveți grijă să nu confundați cuvintele cheie cu termenii.

SQL are anumiți termeni speciali care sunt utilizați pentru a-l descrie. Printre acestea se numără cuvinte precum „interogare”, „clauză” și „predicat”, care sunt cele mai importante în descrierea și înțelegerea limbajului, dar nu înseamnă nimic independent pentru SQL.

Comenzile sau instrucțiunile sunt instrucțiuni prin care accesați o bază de date SQL.

Comenzile sunt formate din una sau mai multe părți logice separate numite clauze.

Propozițiile încep cu un cuvânt cheie și constau din cuvinte cheie și argumente. De exemplu, clauzele pe care le puteți întâlni sunt „FROM Salespeope” și „WHERE city = „Londra””. Argumentele completează sau schimbă sensul unei propoziții. În exemplele de mai sus, Salespeople este argumentul și FROM este cuvântul cheie al clauzei FROM. În mod similar, „oraș = „Londra”” este un argument pentru clauza WHERE.

Obiectele sunt structuri de baze de date cărora li se dau nume și sunt stocate în memorie. Aceasta include tabele de bază, vizualizări și indecși.

Pentru a vă arăta cum se formează echipele, vom face acest lucru cu exemple. Există, totuși, o metodă mai formală de descriere a comenzilor care utilizează convenții standardizate. Îl vom folosi în capitolele ulterioare pentru a înțelege aceste convenții în cazul în care le întâlniți în alte documente SQL.

Parantezele pătrate () vor indica părțile care nu pot fi utilizate, iar elipsele (...) indică faptul că tot ce le precede poate fi repetat de orice număr de ori. Cuvintele din paranteze unghiulare () sunt termeni speciali care explică ce sunt. Am simplificat foarte mult terminologia SQL standard, fără a o face dificil de înțeles.

Relua

Am acoperit pe scurt elementele de bază în acest capitol. Dar intenția noastră a fost să acoperim rapid elementele de bază ale SQL, astfel încât să puteți acoperi întregul domeniu de aplicare al informațiilor.

Acum știți câteva lucruri despre SQL: care este structura sa, cum este utilizat, cum reprezintă datele și cum sunt definite (și unele inconsecvențe care vin odată cu el), unele convenții și termeni folosiți pentru a le descrie. Toate acestea sunt prea multe informații pentru un capitol; Nu ne așteptăm să vă amintiți toate aceste detalii, dar vă puteți referi la ele mai târziu dacă este necesar.

LIMBAJUL SQL: MANIPULARE DATE

IN ACEASTA PRELEGERE...

· Scopul Structure Query Language (SQL) și rolul său special atunci când lucrați cu baze 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 caracterizate prin următoarele caracteristici:

· folosirea constructului WHERE pentru a selecta rânduri care satisfac diverse condiții;

· sortarea rezultatelor interogării folosind constructul ORDER BY;

· utilizarea funcţiilor de agregare SQL;

· gruparea datelor selectate folosind constructul GROUP BY;

· utilizarea subinterogărilor;

· utilizarea table joins;

· aplicarea operatiilor cu multimi (UNIREA, 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 a devenit foarte răspândit și a devenit de fapt limbajul standard pentru bazele de date relaționale. Standardul de limbaj 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. În prezent, limbajul SQL este suportat de sute de tipuri diferite de SGBD-uri, dezvoltate pentru o mare varietate de platforme de calcul, de la computere personale la mainframe.

Această prelegere folosește definiția ISO a SQL.

Introducere în limbajul SQL

În această parte, ne vom uita la scopul limbajului SQL, ne vom familiariza cu istoria acestuia și vom analiza motivele pentru care a devenit 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 trebuie să ofere utilizatorului 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, cum ar fi inserarea, modificarea și ștergerea datelor din tabele;

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

În plus, limbajul bazei de date trebuie să rezolve toate problemele de mai sus cu un efort minim din partea utilizatorului, iar structura și sintaxa comenzilor sale trebuie să fie destul de simple și ușor de învățat.

Și în sfârșit, limbajul trebuie să fie universal, adică. respectă un standard recunoscut, care va permite utilizarea aceleiași sintaxe și structuri de comandă atunci când se trece 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 funcționa 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 preluarea și actualizarea datelor.

Înainte de apariția standardului SQL3, SQL includea doar comenzi pentru definirea și manipularea datelor; îi lipseau orice comenzi pentru a controla progresul calculelor. Cu alte cuvinte, acest limbaj nu avea IF ... THEN ...ELSE, GO TO, DO ... WHILE și orice alte comenzi menite să controleze progresul procesului de calcul. Astfel de sarcini trebuiau rezolvate programatic, folosind limbaje de programare sau de control al sarcinilor, sau interactiv, ca urmare a acțiunilor efectuate de utilizatorul însuși. Datorită acestei incompletitudini, din punct de vedere al organizării procesului de calcul, limbajul SQL ar putea fi utilizat în două moduri. Prima a implicat o muncă interactivă, constând în introducerea de către utilizator a instrucțiunilor SQL individuale din terminal. Al doilea a fost de a încorpora instrucțiunile SQL în programele de 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ă specifice ce informații ar trebui obținute, nu cum pot fi obținute. Cu alte cuvinte, limbajul SQL nu necesită specificarea metodelor de acces la date.

· La fel ca majoritatea limbilor moderne, SQL acceptă un format gratuit pentru scrierea declarațiilor. Aceasta înseamnă că elementele individuale ale operatorului nu sunt asociate cu poziții fixe de pe ecran pe măsură ce tastați.

· Structura comenzii este specificată 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), personalul de conducere al companiei, programatorii de aplicații și mulți alți utilizatori finali de 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 odată cu publicarea unui articol fundamental al lui E. F. Codd, care în acel moment lucra la laboratorul de cercetare IBM din 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. O versiune revizuită a acestui limbaj, SEQUEL/2, a fost lansată în 1976; ulterior, 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 este recomandat să îl citiți ca „es-qu-el”.

În 1976, IBM a lansat un prototip DBMS bazat pe limbajul SEQUEL/2, numit „System R”. Scopul acestui studiu a fost de a testa fezabilitatea implementării modelului relațional. Printre alte aspecte pozitive, cel mai important rezultat al acestui proiect poate fi considerat dezvoltarea limbajului SQL în sine. Proiectul System R Limbajul SQUARE a fost dezvoltat ca instrument de cercetare pentru implementarea algebrei relaționale prin fraze compuse în limba engleză.

La sfârșitul anilor 1970, compania care a devenit acum Oracle Corporation a lansat Oracle DBMS. Poate că aceasta este prima implementare comercială a unui SGBD relațional construit folosind limbajul SQL.

Puțin mai târziu, a apărut INGRES DBMS, folosind limbajul de interogare QUEL.

Acest limbaj era mai structurat decât SQL, dar semantica sa era mai puțin apropiată de engleza obișnuită. Mai târziu, când SQL a fost adoptat ca limbaj standard pentru bazele de date relaționale, INGRES DBMS a fost complet convertit pentru a-l utiliza. În 1981, IBM a lansat primul său SGBD relațional comercial, numit SQL/DS (pentru mediul DOS/VSE). În 1982, a fost lansată o versiune a acestui sistem pentru mediul VM/CMS, iar în 1983 - pentru mediul MVS, dar deja sub numele DB2.

În 1982, Institutul Național de Standarde din SUA (ANSI) a început să lucreze la Relation Database Language (RDL), ghidat de documentele conceptuale primite de la IBM Corporation. În 1983, Organizația Internațională pentru Standardizare (ISO) s-a implicat în această activitate. 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 fi mai aproape de implementările existente ale limbajului SQL.

Versiunea originală a standardului, care a fost lansată de ISO în 1987, a atras un val de critici. În special, Date, un cercetător binecunoscut în acest domeniu, a subliniat că standardul omite funcții critice, inclusiv controalele de integritate referențială și unii operatori relaționali.

În plus, el a remarcat redundanța excesivă a limbii - aceeași cerere ar putea fi scrisă în mai multe versiuni diferite. Majoritatea criticilor au fost recunoscute ca fiind corecte, iar ajustările necesare au fost făcute standardului înainte de publicarea acestuia. Cu toate acestea, s-a decis că este mai important să se lanseze standardul cât mai repede posibil, astfel încât să poată servi drept bază comună pe care atât limbajul în sine, cât și implementările sale să poată fi dezvoltate în continuare, decât să aștepte până când toate caracteristicile care diferă. au fost definiți și conveniți experți considerați obligatorii pentru un limbaj similar.

În 1989, ISO a publicat un amendament la standard care definea funcțiile de integritate a datelor. În 1992, a fost lansată prima versiune revizuită substanțial a standardului ISO, uneori numită SQL2 sau SQL-92. Deși unele dintre funcții au fost definite în acest standard pentru prima dată, 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 oferă suport suplimentar pentru caracteristicile 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 implementare a unei limbi se numește dialect. Nu există două dialecte care să fie complet identice și nu există în prezent niciun dialect care să respecte pe deplin standardul ISO.

Mai mult, pe măsură ce dezvoltatorii de baze de date adaugă noi funcționalități sistemelor lor, își extind continuu dialectele SQL, determinând dialectele individuale să devină din ce în ce mai diferite unele de altele. Cu toate acestea, nucleul de bază al limbajului SQL rămâne mai mult sau mai puțin standardizat în toate implementările.

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

Funcționalitatea limbajului SQL

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

Definiţia data. Această funcție SQL este o descriere a structurii datelor suportate și a organizării relațiilor relaționale (tabele). Operatorii pentru crearea unei baze de date, crearea tabelelor și accesarea datelor sunt destinate să o implementeze.

Crearea unei baze de date. Pentru a crea o nouă bază de date, utilizați instrucțiunea CREATE DATABASE. Structura instrucțiunilor specifică numele bazei de date care urmează să fie creată.

Crearea de tabele. Tabelul de bază este creat folosind instrucțiunea CREATE TABLE. Această declarație specifică numele câmpurilor, tipurile de date pentru acestea și lungimea (pentru unele tipuri de date). SQL utilizează următoarele tipuri de date:

INTEGER – număr întreg;

CHAR – valoarea caracterului;

VARCHAR – valoarea caracterului, sunt stocate doar caracterele care nu sunt goale;

DECIMAL – număr zecimal;

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

DOUBLE PRECISION – virgulă flotantă de dublă precizie;

DATETIME – data și ora;

BOOL – valoare booleană.

Declarația de creare a tabelului specifică restricții asupra valorilor coloanei și asupra tabelului. Posibilele restricții sunt prezentate în tabel. 4.8

Tabelul 4.8 Limitări ale datelor definite

Pentru un model de date relaționale, specificarea unei chei străine (FOREIGNKEY) este esențială. Când declarați chei străine, trebuie să puneți constrângeri adecvate pe coloană, cum ar fi NOT NULL.

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

Nu puteți utiliza instrucțiunea create table de mai multe ori pe același tabel. Dacă, după crearea sa, se descoperă inexactități în definiția sa, atunci se pot face modificări folosind instrucțiunea ALTER TABLE. Această declarație este concepută pentru a schimba structura unui tabel existent: puteți elimina sau adăuga un câmp la un tabel existent.

Manipularea datelor. SQL permite unui utilizator sau unui program de 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 o procedură pentru adăugarea de rânduri la o bază de date și se realizează folosind instrucțiunea INSERT.

Modificarea datelor implică 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

Eliminarea rândurilor dintr-un tabel folosind instrucțiunea DELETE. Sintaxa operatorului este:

DE LA masă

Clauza WHERE este opțională, dar dacă nu este inclusă, toate intră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 dinainte 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. Monitorizarea rezultatelor tranzacțiilor, procesarea erorilor care apar și coordonarea lucrului paralel cu baza de date a mai multor aplicații sau utilizatori este asigurată de COMMIT (înregistrează finalizarea cu succes a tranzacției curente și începerea uneia noi) și ROLLBACK (necesitatea pentru un rollback - restaurarea automată a stării bazei de date la începutul tranzacției) operatori.

Eșantionarea datelor este una dintre cele mai importante funcții ale bazei de date care corespunde instrucțiunii 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 interogări includ așa-numitele verificări ale existenței. Să presupunem că doriți să obțineți date despre elevii care nu au o notă de șapte puncte. 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 tabele folosind un câmp comun.

Instrucțiunea SELECT trebuie să conțină o constrângere privind potrivirea valorilor unei anumite coloane (câmp). Apoi numai acele rânduri în care se potrivesc valorile coloanei specificate vor fi preluate din tabelele aferente. Numele coloanei este indicat numai împreună cu numele tabelului; altfel afirmaţia va fi ambiguă.

Puteți utiliza și alte tipuri de legături de tabele: operatorul INTER JOIN (inner join) asigură că setul de înregistrări rezultat conține valori corespunzătoare în câmpurile aferente. Îmbinările externe (OUTER JOIN) vă permit să includeți în rezultatul interogării toate rândurile dintr-un tabel și rândurile corespunzătoare dintr-un altul

Control acces. SQL asigură sincronizarea procesării bazei de date de către diverse programe de aplicație, protejând datele de accesul neautorizat.

Accesul la date într-un mediu multi-utilizator este controlat folosind instrucțiunile GRANT și REVOKE. În fiecare instrucțiune este necesar să se specifice utilizatorul, obiectul (tabelul, vizualizarea) în raport cu care sunt setate permisiunile și permisiunile în sine. De exemplu, instrucțiunea GRANT oferă utilizatorului X posibilitatea de a prelua date din tabelul PRODUCT:

Acordați SELECTAREA PE PRODUS LUI X

Declarația REVOKE revocă toate permisiunile acordate anterior.

Încorporarea SQL în programele de aplicație. Aplicațiile reale sunt de obicei scrise în alte limbi care generează cod SQL și îl transmit DBMS ca text ASCII.

Standardul IBM pentru produsele SQL reglementează utilizarea limbajului 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ă într-o construcție SQL.



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

dialecte SQL

SGBD-urile relaționale moderne folosesc dialectele limbajului 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, limbajul 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 SGBD-urile 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 supus unei interpretări ample. Avantajele SQL-89 pot fi considerate standardizarea sintaxei și semanticii operatorilor pentru eșantionare și manipulare a datelor, precum și fixarea mijloacelor 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 a sesiunilor, suport pentru arhitecturi client-server sau instrumente de dezvoltare a aplicațiilor.

Următorul pas în dezvoltarea limbajului este versiunea SQL 3. Această versiune a limbajului este completată de un mecanism de declanșare, definirea unui tip de date arbitrar și extensia obiectului.

În prezent există trei niveluri ale limbii: începător, intermediar și complet. Mulți producători de SGBD folosesc propriile lor implementări SQL, bazate cel puțin pe nivelul inițial al standardului ANSI corespunzător și care conțin unele extensii specifice unui anumit SGBD. În tabel 4.9 oferă 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 limbajul de interogare obiect OQL (Object Query Language). Limbajul OQL s-a bazat pe comanda SELECT a limbajului SQL2 și a adăugat capacitatea de a direcționa o interogare către un obiect sau colecție de obiecte, precum și capacitatea de a apela metode într-o singură interogare.

Compatibilitatea multor dialecte SQL utilizate determină compatibilitatea DBMS. Astfel, SGBD-ul SYBASE SQL Anywhere este cât se poate de compatibil pentru un SGBD din această clasă cu SGBD-ul SYBASE SQL Server. Unul dintre aspectele acestei compatibilități este suportul în SYBASE SQL Anywhere a unui 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 dialectul nativ SQL - Watcom-SQL.

Întrebări de securitate

1. Cum poate fi clasificat un SGBD?

2. Ce modele de baze de date există?

3. Care sunt principalele elemente ale modelelor informaţionale?

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

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

6. Ce vă permite procedura de normalizare a tabelului?

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

8. Ce tip de MS Access DBMS este?

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

10. Pentru ce se folosesc principalii operatori SQL?

Structure Query Language (SQL) a fost creat ca urmare a dezvoltării modelului de date relaționale și este în prezent limbajul standard de facto pentru SGBD-urile relaționale. Limbajul SQL de astăzi este susținut de un număr mare de SGBD de diferite tipuri.

Numele limbajului SQL este de obicei pronunțat „es-qu-el”. Uneori este folosit numele mnemonic „See-Quel”.

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

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

Limbajul 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:

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

Limbajul DML (Data Manipulation Language) conceput pentru preluarea și actualizarea datelor.

SQL este un limbaj non-procedural, ceea ce înseamnă că atunci când îl utilizați, trebuie să specificați ce informații trebuie obținute, nu cum pot fi obținute. 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 - selectarea 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

Operatorul SELECT efectuează acțiuni echivalente cu următoarele operații de algebră relațională: selecție, proiecție și unire.

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ă ale căror date vor fi returnate de interogare. Cuvântul cheie from specifică din ce tabel (sau vizualizare) sunt preluate datele.

Rezultatul unei interogări select este întotdeauna un tabel numit tabel cu rezultate. Mai mult, rezultatele unei interogări executate folosind 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, le puteți combina într-un singur tabel. De asemenea, tabelul obținut în urma unei interogări poate face obiectul unor interogări ulterioare.

Pentru a selecta toate coloanele și toate rândurile unui tabel, pur și simplu emiteți un SELECT * FROM tbl;

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

Solicitați rezultatul

SELECT * FROM Produs;

va fi întregul tabel de produse.

Puteți selecta anumite coloane din tabel folosind o interogare

SELECT col1, col2, … , coln FROM tbl;

Deci, rezultatul cererii

SELECTează tipul, prețul din produs;

va fi o masă

Lista coloanelor din instrucțiunea select este folosită și dacă 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 logică. Dacă o înregistrare îndeplinește această condiție, este inclusă în rezultat. În caz contrar, intrarea este eliminată.

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

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

Rezultatul lui:

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 constantele șirului de caractere: unde name= "autoweights".

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

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

Similar 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, cerere

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 conceput 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 col_name.

Eșantionului i se permite să utilizeze două caractere joker: „_” și „%”. Primul dintre ele î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_” se potrivește unui șir de 4 caractere care începe cu abc, „%z” se potrivește cu orice șir care se termină cu z și, în final, „%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” astfel:

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

cântare de camion

Dacă șirul de căutare conține un caracter wildcard, atunci trebuie să specificați caracterul de escape în clauza ESCAPE. Acest caracter de control trebuie să fie utilizat în modelul înainte de caracterul wildcard, indicând faptul că caracterul wildcard trebuie tratat ca un caracter obișnuit. De exemplu, dacă doriți să găsiți toate valorile dintr-un câmp care conține 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) unei valori NULL în câmpurile unui tabel. Utilizarea operatorilor de comparație obișnuiți în aceste cazuri poate produce rezultate incorecte, deoarece compararea cu rezultatele NULL în 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ă doriți să sortați înregistrările după una dintre coloane, trebuie să utilizați clauza ORDER BY, urmată de numele acelei coloane:

SELECT * FROM tbl ORDER BY col_name;

Această interogare va returna înregistrările în ordinea crescătoare a valorii atributului col_name.

De asemenea, puteți sorta înregistrările 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 acceptat ca valoare implicită.

Dacă rezultatul eșantionului conține sute sau mii de înregistrări, producția și procesarea acestora durează considerabil.

Prin urmare, informațiile sunt adesea împărțite în pagini și prezentate utilizatorului în porțiuni. Paginarea este utilizată folosind cuvântul cheie limită urmat de numărul de intrări de afișat. Următoarea interogare preia primele 10 înregistrări în timp ce sortează simultan înapoi în câmpul col_name1:

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

Pentru a prelua următoarele 10 înregistrări, utilizați cuvântul cheie limit cu două valori: prima specifică poziția din care trebuie tipărit rezultatul, iar a doua specifică 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.

Cele mai bune articole pe această temă