curs 3 bd
DESCRIPTION
curs 3TRANSCRIPT
Limbajul de manipulare a datelorDup definirea bazelor de date i tabelelor, urmtorul pas este utilizarea lor prin popularea cu nregistrri i efectuarea interogrilor asupra datelor stocate.3.1 Crearea nregistrrilor: INSERTComanda care realizeaz acest lucru este INSERT, care permite introducerea a dou sau mai multe nregistrri ntr-o tabel. Comanda are mai multe forme, sub urmtoarele aspecte: se pot introduce una sau mai multe nregistrri cu aceeai instruciune INSERT; se poate specifica setul complet de valori pentru o nregistrare sau valorile doar pentru anumite cmpuri; se pot introduce nregistrri fr a specifica nicio valoare pentru coloane, toate cmpurile avnd ulterior valoarea default; se pot introduce nregistrri ce constituie rezultat al unei interogri SELECT.3.1.1 Introducerea unei nregistrri prin specificarea tuturor valorilorINSERT INTO VALUES (val1, val2, val3, );Comanda INSERT este urmat de cuvntul cheie INTO, un nume de tabel i clauza VALUES, specificnd valorile care urmeaz s fie introduce n cmpurile tabelei. Trebuie specificate valorile pentru toate coloanele tabelei i n ordinea n care apar ele n tabel.Dezavantaje: numrul de valori specificate trebuie s fie mereu egal cu numrul de cmpuri din tabel; dac se terge sau se adaug o coloan, instruciunea INSERT trebuie modificat; dac se schimb ordinea cmpurilor din tabel, ordinea valorilor din instruciunea INSERT trebuie modificat.Exemplu:
3.1.2 Introducerea unei nregistrri doar pentru o parte a coloanelorINSERT INTO (cmp1, cmp2, cmp3) VALUES (val1, val2, val3);Dac nu dorim s dm valorile pentru toate cmpurile tabelei, se folosete aceast form a instruciunii INSERT. Aceste situaii pot aprea n cazul cmpurilor AUTO_INCREMENT, pentru care nu trebuie s dm noi valori explicite, sau pentru cmpurile calculate ulterior.Pentru aceast form este necesar precizarea listei de coloane crora le corespund aceste valori. Coloanele precizate nu trebuie s fie n ordinea din tabel sau consecutive. Pentru toate coloanele care nu apar n list se va pune valoarea default.Numrul de coloane trebuie s fie acelai cu numrul de valori, valoarea de pe poziie i corespunde cmpului de pe poziie i din lista cu cmpuri. Are avantajul c se poate modifica structura coloanelor tabelei fr s se modifice instruciunea INSERT.Exemplu:
Mai exist o variant a comenzii INSERT care permite specificarea valorilor pentru o parte a coloanelor sau pentru toate:INSERT INTO SET cmp1=val1, cmp2=val2, cmp3=val3, ... ;Exemplu:
3.1.3 Introducerea unei nregistrri numai cu valori defaultMySQL permite introducerea unei nregistrri fr a specifica nicio valoare. Astfel, noua nregistrare va fi compus numai din valori default ale tuturor coloanelor. Sintaxa este urmtoarea:INSERT INTO VALUES ();Exemplu:
3.1.4 Introducerea mai multor nregistrri cu o singur instruciuneToate formele instruciunii INSERT descrise mai sus pot fi folosite pentru a introduce mai multe nregistrri o dat. Dac unul din seturile de valori genereaz o eroare (tip de date incompatibil etc.) valorile de pn atunci rmn introduse, dar cele urmtoare nu vor mai fi adugate.Exemplu:
3.2 Extragerea de informaii din tabele: SELECTInstruciunea SELECT este folosit pentru a obine date de la server. Rezultatul ntors de server ca urmare a execuiei acestei instruciuni este un ansamblu de rnduri i coloane, la fel ca n cazul unei tabele. Chiar dac rezultatul seamn cu o tabel, el nu are unele caracteristici proprii tabelelor (nu este memorat permanent pe server) i, chiar dac provine dintr-o singur tabel, rezultatul poate conine doar o parte a datelor sau combinaii ale datelor din tabela respectiv.Sintaxa general a instruciunii SELECT este urmtoarea:SELECT ... [FROM ][WHERE ][ORDER BY ][LIMIT ];Obs. Clauzele care apar ntre [ ] sunt opionale. Instruciunea SELECT accept i alte clauze care vor fi detaliate n cursurile urmtoare.3.2.1 Tipul valorilor coloanelor returnate de SELECT se pot returna valori care nu se regsesc n tabele de pe server. Aici numele de coloane sunt exact expresiile scrise de noi n SELECT, nu apare clauza FROM, iar valorile rezult din evaluarea expresiilor.Exemplu:
se pot returna coloane din tabele, specificnd numele lor n instruciune i neaprat clauza FROM urmat de numele tabelei care ne intereseaz. Interogarea ntoarce toate nregistrrile, dar numai cu valorile corespunztoare coloanelor specificate n comand.Exemplu:
Dac se dorete returnarea tuturor coloanelor din tabel, se folosete caracterul *.Exemplu:
combinaii de constante i nume de tabele. Se pot crea expresii complexe folosind funcii predefinite MySQL. Operatorii i funciile predefinite care sunt folosite la crearea expresiilor vor fi discutate n cursurile viitoare.Exemplu:
3.2.2 Numele pentru coloanele returnate de SELECTColoanele returnate de o instruciune SELECT au ca nume chiar expresiile folosite n cadrul instruciunii. Acest lucru nu este mereu preferat, de aceea se definesc nume explicite pentru coloane, denumite alias-uri. Ele se creeaz folosind cuvtul cheie AS urmat de numele dorit, imediat dup o expresie ce stabilete valoarile unei coloane.Exemplu:
Alias-urile sunt utile cnd: numele implicit este prea lung; extragem date din mai multe tabele i exist coloane cu acelai nume n tabele diferite.3.2.3 Clauza WHEREPrin adugarea clauzei WHERE la instruciunea SELECT se poate alege ce nregistrri s fie extrase dintr-o tabel. nregistrrile nu au nume dup care s fie identificate unic, ele sunt filtrate dup datele pe care le conin. De aceea, clauza WHERE specific rndurile ce trebuie extrase cu ajutorul unei condiii i apoi ntoarce nregistrrile ce ndeplinesc condiia. Sintaxa unei instruciuni SELECT ce conine i clauza WHERE este:SELECT ... FROM WHERE ;Condiiile sunt formate din expresii folosind constante, operatori, funcii i nume de coloane. Rezultatul unei expresii poate fi adevrat sau fals i sunt ntoarse doar nregistrrile pentru care expresia este adevrat. Cea mai simpl expresie WHERE are o condiie, iar cele mai complexe au mai multe condiii combinate folosind operatorii logici AND i OR (AND are prioritate mai mare dect OR). Dac dorim s controlm prioritile, utilizm parantezele.Exemplu 2:
3.2.4 Clauza LIMITPermite limitarea numrului de nregistrri ntoarse de instruciunea SELECT i are dou forme: dup LIMIT se specific un singur parametru: nr maxim de nregistrri returnate; dup LIMIT se specific doi parametrii: nr de nregistrri ignorate i nr maxim de nregistrri returnate.Exemplu:
Clauza LIMIT x returneaz primele x nregistrri cerute, dar ele depind de ordinea n care sunt extrase. Clauza ORDER BY permite ordonarea nregistrrilor conform unui criteriu, afiarea nregistrrilor putnd fi diferite dac criteriile de sortare sunt diferite.3.2.5 Clauza ORDER BYPermite stabilirea ordinii n care sunt ntoarse nregistrrile i poate avea unul sau mai multe criterii de sortare. Pentru fiecare criteriu ordonarea poate fi cresctoare (se specific cu cuvntul-cheie ASC), descresctoare (se specific cu cuvntul-cheie DESC) sau aleatoare (se specific RAND() ).Dac nu se specific nimic, implicit se face ordonare cresctoare.Exemplu:
3.3 Modificarea nregistrrilor: UPDATEInstruciunea UPDATE permite modificarea valorilor nregistrrilor deja adugate n tabele.UPDATE SET cmp1=val1, cmp2=val2, ... [ WHERE condiie ];Exemplu:
Cu o singur instruciune pot fi realizate modificri pe una sau mai multe coloane.Clauza WHERE este opional. Ea se folosete pentru a specifica o condiie; dac se respect acea condiie, se va realizarea modificarea nregistrrilor; n sens contrar, ele vor rmne neschimbate.Dac WHERE lipsete, se vor modifica toate nregistrrile din tabel.Expresiile ce dau valoare coloanelor sunt aceleai ca n cazul lui SELECT: pot conine constante, funcii predefinite, nume de coloane, operatori.Instruciunea UPDATE poate fi combinat cu clauzele ORDER BY i LIMIT.Returneaz numrul de nregistrri ce fac subiectul modificrii i numrul de nregistrri modificate efectiv. Este posibil ca cele dou s fie diferite.3.4 tergerea nregistrrilor: DELETEPermite tergerea controlat a nregistrrilor ce ndeplinesc anumite criterii. Sintaxa este:DELETE FROM [WHERE ] [ORDER BY ] [LIMIT ];Exemplu:
Obs: Clauzele WHERE, ORDER BY i LIMIT sunt opionale. Dac nu se specific niciuna dintre ele, se vor terge toate nregistrrile din tabel.Instruciunea DELETE returneaz numrul de rnduri terse.CuprinsInchidere