curs 3 bd

10
Limbajul de manipulare a datelor După definirea bazelor de date şi tabelelor, următorul pas este utilizarea lor prin popularea cu înregistrări şi efectuarea interogărilor asupra datelor stocate. 3.1 Crearea înregistrărilor: INSERT Comanda care realizează acest lucru este INSERT, care permite introducerea a două sau mai multe înregistrări într-o tabelă. Comanda are mai multe forme, sub următoarele aspecte: se pot introduce una sau mai multe înregistrări cu aceeaşi instrucţiune INSERT; se poate specifica setul complet de valori pentru o înregistrare sau valorile doar pentru anumite câmpuri; se pot introduce înregistrări fără a specifica nicio valoare pentru coloane, toate câmpurile având ulterior valoarea default; se pot introduce înregistrări ce constituie rezultat al unei interogări SELECT. 3.1.1 Introducerea unei înregistrări prin specificarea tuturor valorilor INSERT INTO <nume tabelă> VALUES (val1, val2, val3, … ); Comanda INSERT este urmată de cuvântul cheie INTO, un nume de tabelă şi clauza VALUES, specificând valorile care urmează să fie introduce în câmpurile tabelei. Trebuie specificate valorile pentru toate coloanele tabelei şi în ordinea în care apar ele în tabelă. Dezavantaje: numărul de valori specificate trebuie să fie mereu egal cu numărul de câmpuri din tabelă; dacă se şterge sau se adaugă o coloană, instrucţiunea INSERT trebuie modificată; dacă se schimbă ordinea câmpurilor din tabelă, ordinea valorilor din instrucţiunea INSERT trebuie modificată. Exemplu: 3.1.2 Introducerea unei înregistrări doar pentru o parte a coloanelor INSERT INTO <nume tabelă> (câmp1, câmp2, câmp3) VALUES (val1, val2, val3);

Upload: corina-pe

Post on 26-Sep-2015

220 views

Category:

Documents


2 download

DESCRIPTION

curs 3

TRANSCRIPT

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