Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
LABORATORUL
INSTRUCTIUNEA SELECT PENTRU UN SINGUR TABEL
Interogarea unei baze de date reprezinta un proces de selectie care strange informatii extrase din baza de date specificate de lista de coloane si de liniile care indeplinesc criteriile dorite .Dintre toate instructiunile SQL cea mai mult folosita este instructiunea SELECT ea permite sa accesam date dintr-o BD. In acest paragraf vom da instructiunea SELECT pentru un singur tabel cu lista clauzelor optionale cu modul de utilizare ale acestora intr-o instructiune SELECT si in final cunoasterea functiilor agregat. Un lucru important de tinut minte este ca o instructiune SELECT intotdeauna returneaza rezultatele sale sub forma unui tabel.
Sintaxa completa pentru instructiunea SELECT este urmatoarea:
SELECT [ALL | [DISTINCT | Top n] lista_select
[INTO lista de variabile]
FROM {nume_tablel | nume_vedere] [,nume_tablel | nume_vedere] .
[WHERE clauza]
[GROUP BY lista_coloane]
[HAVING clauza]
[ORDER BY nume_coloana [ASC | DESC][,]]
[COMPUTE clauzal]
[FOR BROWSE];
Clauzele sunt tratate in ordinea in care trebuie sa apara daca sunt utilizate. Numai clauzele SELECT si FROM sunt obligatorii. Instructiunea SELECT este utilizata pentru a accesa (examina) o linie, mai multe sau toate liniile dintr-un tabel. Daca clauza WHERE lipseste, vor fi accesate toate liniile tabelului. Prevenirea afisarii de linii duplicat se face prin includerea cuvantului cheie DISTINCT plasat dupa cuvantul SELECT . Lista_select specifica ce coloane vor fi accesate. Utilizarea * in lista de coloane arata ca vor fi specificate toate coloanele tabelului in ordinea definirii lor. Cuvantul cheie FROM este urmat de numele tabelului ce contine datele pe care le dorim. In exemplul de mai jos sunt afisate toate liniile si coloanele tabelului clienti
SELECT *
FROM clienti
Daca dorim numai anumite coloane le includem in lista SELECT. Pot fi utilizate orice numar de coloane in orice ordine si pot fi deasemenea utilizate in expresii de calcul.
SELELCT NUME, PRENUME
FROM clienti;
SELECT ID_CLIENT
FROM comenzi;
SELECT DISTINCT ID_CLIENT
FROM comenzi
A doua instructiune va avea ca rezultat: A treia instructiune va avea ca rezultat:
ID_CLIENT ID_CLIENT
101 101
103 103
103 105
103 106
105
105
106
Ambele instructiuni acceseaza coloana ID_CLIENT pentru toate liniile din tabelul de comenzi. In tabelul1 clientii care au mai multe comenzi apar de mai multe ori. Cand se utilizeaza mai multe instructiuni SELECT acestea se separa prin punct si virgula.
SELECT *
FROM companie;
SELECT NUME, PRENUME, ORGANIZATIE
FROM clienti;
SELECT ID_CLIENT,TELEFON
FROM clienti;
Clauza WHERE este utilizata la specificarea unui criteriu de cautare pentru selectarea unei submultimi de linii dintr-un tabel. In continuare se da o descriere a clauzei WHERE de specificare a unui criteriu de cautare.
SELECT lista_select
FROM nume_tabel
[WHERE conditie]
Clauza WHERE poate sa contina o conditie de comparare ce contine unul din comparatorii: <, <=, =, >, >=, !=, <>.
Exemple
SELECT NR_LEG, NUME, PRENUME
FROM salariati
WHERE NR_ATELIER=5;
SELECT NR_LEG, NUME,PRENUME
FROM salariati
WHERE NR_ATELIER !=5;
Prima intrebare determina muncitorii din atelierul cu numarul 5, iar a doua determina toti muncitorii care nu sunt in atelierul cu numarul 5. In cazul cand un atribut poate lua valuarea NULL, atunci conditia de commparare poate contine cuvantul cheie IS NULL sau IS NOT NULL ca operator relational. Utlizarea cuvantului IS NULL permite gasirea tuturor liniilor dintr-un tabel care iau valoarea NULL specificata intr-o coloana.
SELELCT NUME,PRENUME, TELEFON
FROM clienti
WHERE TELEFON IS NULL;
In clauza WHERE mai pot fi folosite urmatoarele cuvinte rezervate: AND si OR pentru a combina doua sau mai multe conditii de comparare. Conditiile de comparare de valori folosesc urmatoarele cuvinte rezervate:
[NOT] BETWEEN
[NOT] IN
[NOT] LIKE
IS [NOT] NULL
Exemple:
SELECT NUME,PRENUME
FROM clienti
WHERE
ORAS='
SELECT NUME,PRENUME
FROM clienti
WHERE
ORAS='Bucuresti' OR ORAS ='
SELECT NUME, PRENUME
FROM clienti
WHERE
(TARA='FRANTA' AND ORAS='
SELECT *
FROM articole;
Cuvintele BETWEEN si AND pot fi utilizate pentru gasirea liniilor cu valori specificate intr-un sir sau pentru excluderea unui sir de valori:
SELECT COD_PROD, PRET_UNITAR
FROM articol
WHERE PRET_UNITAR BETWEEN 20 AND 80.
Acesta intrebare determina toate produsele cu pretul unitar intre 20 si 80.
SELECT COD_PROD, COD_FAB, PRET_UNITAR
FROM articol
WHERE PRET_UNITAR NOT BETWEEN 20 AND 80
Inserarea lui NOT inaintea lui BETWEEN gaseste toate liniile exceptand pe cele cu pretul unitar intre 20 si 80.
Cuvantul rezervat IN este utilizat pentru gasirea liniilor care au valoarea unui atribut cuprins intr-o multime data.
SELECT NR_CLIENT, NUME, PRENUME
FROM clienti
WHERE NR_CLIENTI IN
SELECT *
FROM clienti
WHERE state NOT IN ('CD','GB','USA','RO'
Operatorii pentru cautare de caracter sunt: LIKE
LIKE | |
Evalueaza zero sau mai multe caractere |
|
Evalueaza un singur caracter |
|
Specifica urmatorul caracter ca literal |
|
Specifica valori valide pentru mai multe caractere |
Exemplul urmator determina toate componentele care se termina cu 'sport':
SELECT ID_CLIENT, COMPANIA
FROM clienti
WHERE compania LIKE '%sport'
In exemplul urmator se cauta un singur caracter:
SELECT ID_CLIENT, COMPANIE
FROM clienti
WHERE COMPANIE LIKE '[L]%'
Cauta clientii ce lucreaza la companii care incep cu litera L urmata de orice caractere.
Daca se omite % , se cauta companiile formate numai din doua caractere.
SELECT *
FROM clienti
WHERE NUME LIKE '[K-R]%';
Aceasta intrebare determina clientii a caror nume incepe cu una din literele de la K la R.
Daca nu avem liniuta in exemplul de mai sus, se determina numele care incep cu KR.
SELECT *
FROM clienti
WHERE COMPANIA LIKE [sS]*
Aceasta intrebare determina clientii a caror companii au in numele lor o litera s sau S.
Cuvantul LIKE are o utilizare similara. In exemplele de mai sus liniile au fost returnate in ordinea memorarii lor.
Daca se utilizeaza clauza ORDER BY putem sorta rezultatele interogarii dupa valorile obtinute in una sau mai multe coloane. Daca se specifica DESC, sortarea este in ordine descrescatoare, in caz contrar (ASC), sortarea este in ordine crescatoare.
SELECT COD_ARTICOL, COD_FAB, PRET, DENUMIRE
FROM articol
ORDER BY DENUMIRE, PRET DESC
O expresie aritmetica poate fi utilizata intr-o lista select pentru a realiza calcule cu date dintr-o coloana si a afisa rezultatele. In exemplul de mai jos, coloana este o coloana derivata din coloana de pret unitar.
SELECT COD_ARTICOL, COD_FAB, PRET*1.05
FROM articol
ORDER BY PRET DESC
Expresiile aritmetice se formeaza cu ajutorul operatorilor aritmetici +,-,/,*. Daca intr-o coloana este memorata valoarea NULL, rezultatul expresiei va fi tot NULL.
Se poate utiliza o eticheta de afisare pentru a inlocui numele implicit al unei coloane sau al unei expresii. Eticheta de afisare trebuie sa inceapa cu o litera, iar multitudinea de rezultate poate fi soortata dupa valorile acestei coloane.
De exemplu
SELECT COD_ART, COD_FAB, PRET, PRET*1.15, PRET_NOU
ORDER BY 5
In loc PRET_NOU se poate specifica numarul ei din lista.
Functii agregat
Pe langa nume de coloane si operatori, o expresie poate include una sau mai multe functii
COUNT(*) numara liniile ce satisfac conditiile din instructiunea select
SUM(coloana expresie) sumeaza valorile dintr-o coloana sau o expresie numerica
AVG (coloana expresie) gaseste media aritmetica a valorilor dintr-o coloana sau a unei
expresii numerice
MAX[MIN](coloana expresie) gaseste valoarea maxima [minima] pentru o coloana sau o
expresie.
Unele functii pot fi utilizate cu anumite cuvinte rezervate ca DISTINCT.
COUNT (DISTINCT nume_coloana) numara valorile distincte dintr-o coloana;
SUM (DISTINCT nume_coloana) sumeaza valorile distincte dintr-o coloana numerica.
SELECT COUNT(*), SUM (PRET*CANT), MAX(PRET)
FROM articole
Clauzele GROUP BY si HAVING sunt utilizate pentru a adauga noi functiuni select.
SELECT lista_select
FROM nume_tabel
[WHERE conditie]
[GROUP BY lista de coloane
[HAVING conditie
[ORDER BY nume_de_coloana]
Cand se utilizeaza aceste clauze, ele trebuie sa apara in instructiunea SELECT in ordinea de mai sus.
Clauza GROUP BY produce o singura linie din rezultatele fiecarui grup de linii care au aceiasi valoare intr-o coloana data. Ea sorteaza datele dintr-un grup si comprima toate liniile cu aceeiasi valoare intr-o singura linie. Numarul de grupuri depinde de numarul de valori distincte din coloana.
SELECT ID_CLIENT, COUNT(*)
FROM comenzi
GROUP BY ID_CLIENT
Aceasta returneaza cate o linie pentru fiecare client si cate comenzi are acesta. Clauza GROUP BY este utilizata cu functii agregat pentru a da o informatie rezumat pentru grup. De testat.
SELECT ORAS, STAT, COUNT(*)
FROM clienti
GROUP BY 1,2
ORDER BY 1,2
Clauza HAVING poate fi utilizata in conjunctie cu clauza GROUP BY pentru a o aplica in conditii de calificare dupa ce ele au fost formate. Ea da un filtru pentru rezultatele grupate in acelasi mod ca si clauza WHERE.
Instructiunea urmatoare da o lista cu suma totala pe fiecare comanda care contine mai mult de 2 articole.
SELECT ID_COMANDA, SUM(PRET) TOTAL
FROM articole
GROUP BY ID_COMANDA
HAVING COUNT(*)>2;
Copyright © 2024 - Toate drepturile rezervate