Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Sql


Index » educatie » » informatica » Sql
» INSTRUCTIUNEA SELECT PENTRU UN SINGUR TABEL


INSTRUCTIUNEA SELECT PENTRU UN SINGUR TABEL


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='Iasi' AND ID_COMANDA=1000;

SELECT NUME,PRENUME

FROM clienti

WHERE ORAS='Bucuresti' OR ORAS ='Iasi';

SELECT NUME, PRENUME

FROM clienti

WHERE (TARA='FRANTA' AND ORAS='PARIS' OR TARA='ROMANIA'

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

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;





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate