Sunteți pe pagina 1din 7

Regăsirea datelor

Cea mai simplă formă a instrucţiunii SELECT este, pentru care datele oferite în urma selecţiei
nu vor fi ordonate:

SELECT
nume_câmpuri
FROM tabel
• nume_câmpuri reprezintă câmpurile care vor fi regăsite. Dacă în loc de numele câmpurilor
se pune * atunci se va face căutare după toate câpurile.
• tabel reprezintă numele tabelului în care se face căutarea.

Sortarea datelor regăsite

Pentru sortarea datelor regăsite în urma filtrării se va folosi ORDER BY:

SELECT nume_câmpuri
FROM tabel
ORDER BY nume_câmpuri DESC/ASC
Această clauza va fi stabilită la sfârşitul instrucţiunii SELECT. Dacă se doreşte sortarea după
mai multe câmpuri, atunci acestea vor fi aranjate în funcţie de ordinea care a fost precizată.
Ordinea de aranjare a rezultatelor se va face în funcţie de cuvântul cheie DESC sau ASC.

SELECT cod_produs, denumire_produs, pret_produs


FROM produs
ORDER BY denumire_produs DESC, pret_produs ASC
Efectul acestei instrucţiuni va fi: selectarea coloanelor cod_produs, denumire_produs,
pret_produs din tabela produs, aranjând datele în ordine descendentă în funcţie de
denumire_produs şi în ordine ascendentă după pret_produs.

SELECT cod_produs, denumire_produs,


pret_produs
FROM produs
ORDER BY denumire_produs, pret_produs ASC
Va aranja ambele câmpuri în ordine ascendentă.

Filtrarea datelor
Filtrarea datelor se face cu ajutorul clauzei WHERE, care se plasează în cadrul instrucţiunii
SELECT.
SELECT nume_câmpuri
FROM tabel
WHERE camp operator
valoare
Clauza WHERE, care specifică criteriile de căutare, se plasează imediat după clauza FROM.
Operator poate fi unul dintre operatorii de verificare: egal, diferit, mai mare, mai mic sau egal,
între (BETWEEN ...AND...).

Combinarea clauzelor WHERE

În cazul în care se doreşte filtrarea după mai multe câmpuri, se va folosi clauza WHERE în două
moduri: folosind operatorii AND sau OR.

SELECT nume_câmpuri
FROM tabel
WHERE camp operator valoare AND/OR camp1 operator
valoare1
Operatorii AND sau OR pot fi folosiţi în combinaţie, dar este importantă odinea de evaluare a
acestora. Operatorul AND este evaluat înaintea operatorului OR, chiar dacă poziţia acestuia ar fi
la sfârşit. Pentru a respecta ordinea şi de a grupa operatorii în mod explicit se vor folosi
parantezele.

SELECT cod_produs, denumire_produs, pret_produs


FROM produs
WHERE denumire_produs=”produs1” OR
denumire_produs=”produs2”
AND pret_produs>=5
Efectul filtrării va fi afişarea produselor cu numele produs1 care au un preţ minim de 5 şi toate
produsele care au denumirea produs2, indiferent de preţul acestora.

SELECT cod_produs, denumire_produs, pret_produs


FROM produs
WHERE (denumire_produs=”produs1” OR
denumire_produs=”produs2”)
AND pret_produs>=5
Efectul filtrării va fi afişarea produselor cu denumirile produs1 sau produs2 care au un preţ
minim de 5.

Operatorul NOT al clauzei WHERE

Neagă orice condiţie pe care o precede.

Operatorul IN al clauzei WHERE

Este folosit pentru a specifica un domeniu de condiţii, care poate fi satisfăcută oricare.
Operatorul preia o listă cu elemente delimitate prin virgulă, de valori valabile şi sunt incluse între
paranteze.

SELECT nume_câmpuri
FROM tabel
WHERE nume_camp IN
(’valori’)
Operatorul IN este echivalent cu operatorul OR.

Filtrarea prin intermediul caracterelor de înlocuire

Operatorul LIKE – permite folosirea de caractere de înlocuire în clauze de căutare. Acesta


indică SGBD-ului să compare modelul de căutare următor folosind caractere de înlocuire.
1. Caracterul % - găseşte orice caracter, indiferent de câte ori apare.

SELECT nume_câmpuri
FROM tabel
WHERE nume_camp LIKE „%sircaractere%”
Va regăsi toate valorile care conţin şircaractere. Dacă caracterul % ar fi pus doar la început, s-ar
fi regăsit valorile care se termină în şircaractere.

2. Caracterul _ - are aceeaşi acţiune ca %, dar înlocuieşte un singur caracter

SELECT nume_câmpuri
FROM tabel
WHERE nume_camp LIKE
„_şircaractere_”
Va regăsi toate valorile care au un caracter înainte şi după de şircaractere.

3. Caracterul [] – este folosit pentru specificarea unui set de caractere, dintre care unul
trebuie să corespundă unui caracter în poziţia specificată.
SELECT nume_câmpuri
FROM tabel
WHERE nume_camp LIKE
„[caracter]”
Va regăsi toate valorile care au caracterele specificate prin caracter în poziţia precizată. Dacă în
loc de „[caracter]” ar fi „[^caracter]”, atunci se vor afişa valorile care nu conţin caracterul
respectiv în poziţia precizată. Acest caracter poate fi folosit în combinaţie cu celelalte caractere.

Gruparea datelor

Grupurile se realizează cu ajutorul clauzei GROUP BY în cadrul instrucţiunii SELECT.

SELECT
nume_câmpuri
FROM tabel
GROUP BY camp
Clauza WHERE, care specifică criteriile de căutare, se plasează imediat după clauza FROM.

Introducerea datelor în cadrul bazei de date

Se poate utiliza în mai multe moduri:


• Pentru a insera un singur rând complet;
• Pentru a insera un singur rând parţial;
• Pentru a insera rezultatele unei interogări.

1. Inserarea de rânduri complete

INSERT INTO nume_tabel


VALUES
(valori_de_introdus)
Valorile trebuiesc introduse în ordinea în care sunt definite coloanele, în caz contrar valoarea
întoarsă este NULL.

2. Inserarea de rânduri parţiale

Pentru a elimina situaţia în care nu se ştie cu exactitate ordinea în care să se introducă datele, se
va folosi următoarea sintaxă.
INSERT INTO nume_tabel
(campuri)
VALUES (valori_de_introdus)
În cazul în care un câmp nu este completat cu o valoare, în mod automat i se va insera valoarea
NULL. Dacă câmpul omis nu acceptă valoarea NULL atunci SGBD-ul va genera un mesaj de
eroare şi rândul nu va fi inserat.

3. Inserarea datelor regăsite

Este folosită pentru a introduce într-un tabel rezultatul unei instrucţiuni SELECT.
INSERT INTO nume_tabel
(campuri)
SELECT campuri_tabel_importat
FROM nume_tabel1
• nume_tabel reprezintă numele tabelului în care se vor introduce datele
• campuri reprezintă numele campurilor în care se introduc datele
• campuri_tabel_importat reprezintă structura tabelului din care se importă datele
• nume_tabel reprezintă numele tabelului din care se importă datele.
INSERT INTO Clienti (cod_client, denumire_client,
tip_client)
SELECT cod_client, denumire_client, tip_client
FROM ClientiNoi
Această instrucţiune elimină enumerarea valorilor care urmează să fie introduse şi va introduce
toate datele care se află în tabelul nume_tabel1.
Campuri_tabel_importat nu este obligatoriu să aibă acelaşi numele cu câmpurile tabelei
nume_tabel, deoarece SGBD-ul urmăreşte poziţia coloanei, astfel că prima coloană a
instrucţiunii SELECT va fi folosită pentru a insera prima coloană a tabelului nume_tabel.
Instrucţiunea SELECT poate conţine şi clauza WHERE pentru a selecta anumite date care vor fi
inserate.

4. Copierea datelor dintr-un tabel în altul

Nu foloseşte instrucţiunea INSERT. Pentru a copia conţinutul unui tabel în cadrul unui alt tabel
nou se va folosi instrucţiunea SELECT INTO.

SELECT
nume_cîmpuri
INTO tabel_nou
FROM tabel
Se va crea un tabel nou numit tabel_nou care va copia întregul conţinut al tabelului original în
acesta. Dacă în loc de nume_câmpuri se va trece * atunci se vor copia toate coloanele tabelului
tabel.

Pentru MySQL şi Oracle forma acestei instrucţiuni este:

CREATE TABLE tabel_nou AS


SELECT nume_cîmpuri

FROM tabel

Deosebirea dintre SELECT INTO şi INSERT SELECT este următoarea: SELECT INTO face
export de date în cadrul unui nou tabel şi INSERT SELECT realizează importul datelor.

Actualizarea datelor din tabele

Se va folosi instrucţiunea UPDATE şi poate fi folosită în două moduri:


• Pentru actualizarea anumitor înregistrări din cadrul unui tabel
• Pentru actualizarea tuturor rândurilor dintr-un tabel.

UPDATE nume_tabel
SET coloana1=valoare1,
coloana2=valoare2,...
WHERE coloana= valoare
• nume_tabel este numele tabelului care urmează să fie actualizat
• coloanai=valoarei reprezintă coloanele care vor fi modificate cu noile valori
• coloana=valoare reprezintă condiţia de filtrare şi determină ce rânduri vor fi actualizate
Dacă clauza WHERE ar lipsi, atunci se vor actualiza toate înregistrările tabelei.

Ştergerea datelor din tabele

Se va folosi instrucţiunea DELETE şi poate fi folosită în două moduri:


• Pentru ştergerea anumitor înregistrări din cadrul unui tabel
• Pentru ştergerea tuturor rândurilor dintr-un tabel.

DELETE FROM
nume_tabel
WHERE coloana= valoare
• nume_tabel este numele tabelului din care urmează să fie şterse înregistrări
• coloana=valoare reprezintă condiţia de filtrare şi determină ce rânduri vor fi şterse
Dacă clauza WHERE ar lipsi, atunci se vor şterge toate înregistrările tabelei.

Lucrul cu sub-interogări

În cazul unei sub-interogări se pleacă de la clauza SELECT interioară spre cea exterioară.

SELECT nume_câmpuri
FROM tabel1
WHERE camp IN (SELECT nume_câmp1
FROM tabel2
WHERE camp1 operator
valoare)

Unirea tabelelor

Uniunea reprezintă un mecanism folosit pentru asocierea tabelelor din cadrul unei instrucţiuni
SELECT. În urma unei uniuni se va returna un singur set de date de ieşire şi asociază
instantaneu rândurile corecte din fiecare tabel.
În crearea unei uniuni trebuie să se specifice toate tabelele care urmează să fie incluse, dar
şi legăturile dintre ele.

SELECT nume_câmpuri_dorite_din
tabele
FROM tabel1, tabel2
WHERE tabel1.camp1=tabel2.camp1
Clauza WHERE realizează unirea dintre cele două tabele, iar operatorul este =. În acest caz,
procesul de unire se numeşte echi-uniune (uniune internă). Dacă lipseşte clauza WHERE,
atunci se va realiza un produs cartezian între tabele în funcţie de cîmpurile
nume_câmpuri_dorite_din tabele.
O altă formă a uniunii interioare este:

SELECT nume_câmpuri_dorite_din
tabele
FROM tabel1 INNER JOIN tabel2
ON tabel1.camp1=tabel2.camp1

S-ar putea să vă placă și