Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Elemente de baza ale SQL

sql



+ Font mai mare | - Font mai mic



Elemente de baza ale SQL

Vom prezenta foarte pe scurt principalele elemente ce intra in componenta unei comenzi SQL.

Nume

Toate obiectele dintr-o baza de date, tabele, coloane, vizualizari, indexi, sinonime, etc,  au un nume.



Numele poate fi orice sir de maxim de litere, cifre si caracterele speciale: caracterul de subliniere (underscore ), diez ( ), si dolar ( ), primul caracter fiind obligatoriu o litera. Evident numele unui obiect din baza de date trebuie sa fie unic.

Cuvinte rezervate

Ca in orice limbaj, si in SQL exista o lista de cuvinte rezervate. Acestea sunt cuvinte pe care nu le puteti folosi cu alt scop, ca de exemplu pentru denumirea tabelelor voastre.

Constante

O constanta sau literal este o valoare fixa ce nu poate fi modificata. Exista:

- constante numerice, de exemplu etc. Se observa ca daca un numar real are partea intreaga egala cu zero, ea nu mai trebuie precizata.

- constante alfanumerice (sau sir de caractere). Constantele sir de caractere sunt scrise intre apostrofuri si sunt case-sensitive. Exemple: 'abc' 'Numele'

Variabile

Variabilele sunt date care pot avea in timp valori diferite. O variabila are intotdeauna un nume pentru a putea fi referita.

SQL suporta doua tipuri de variabile:

variabilele asociate numelor coloanelor din tabele

variabile sistem.

Expresii

O expresie este formata din variabile, constante, operatori si functii. Functiile vor face obiectul a doua dintre urmatoarele capitole ale manualului. In continuare ne vom ocupa de operatorii ce pot fi folositi in expresii.

Operatori aritmetici

Operatorii aritmetici permisi in SQL sunt cei patru operatori din matematica: adunare , scadere , inmultire , impartire . Ordinea de efectuare a operatiilor aritmetice este cea din matematica (mai intai inmultirea si impartirea si apoi adunarea si scaderea).

Operatori alfanumerici

Exista un singur operator alfanumeric si anume operatorul de concatenare a doua siruri (doua bare verticale fara spatii intre ele).

De exemplu expresia 'abc'||'xyz' are valoarea 'abcxyz'

Operatori de comparatie

Pe langa operatorii obisnuiti de comparatie: < > <= >= <> sau (pentru diferit), , SQL mai implementeaza urmatorii operatori speciali:

LIKE - despre care vom discuta putin mai tarziu in acest capitol

BETWEEN - testeaza daca o valoare se gaseste intr-un interval definit de doua valori. Astfel expresia

x BETWEEN a AND b

este echivalenta cu expresia

(x>=a) AND (x<=b)

IN - testeaza daca o valoare apartine unei multimi de valori specificate. De exemplu expresia:

x IN (a,b,c)

este echivalenta cu

(x=a) OR (x=b) OR (x=c)

IS NULL si IS NOT NULL - se folosesc pentru a testa daca o expresie are valoarea NULL sau nu. Comparatia cu NULL nu se poate face folosind operatorii obisnuiti si respectiv <>

Operatori logici

In ordinea prioritatii lor, acestia sunt:

NOT - negatia logica

AND - si logic, expresia a AND b este adevarata daca si numai daca ambii operanzi a si b au valoarea adevarat.

OR - sau logic, expresia a OR b este adevarata daca si numai daca cel putin unul dintre operanzii a si b au valoarea adevarat.

1.3. Interogarea tabelelor. Comanda SELECT

Comanda SELECT este utilizata pentru a extrage date din baza de date. Setul de date returnate prin intermediul unei comenzi SELECT este compusa, ca si tabelele bazei de date, din linii si coloane, si vor putea fi simplu afisate, sau vom putea popula o tabela cu datele returnate de catre comanda SELECT, asa cum vom vedea intr-un capitol urmator.

Cu ajutorul comenzii SELECT putem realiza urmatoarele tipuri de operatii:

selectia - consta in filtrarea liniilor ce vor fi afisate. Vom folosi clauza WHERE pentru a defini criteriul sau criteriile pe care trebuie sa le indeplineasca o linie pentru a fi returnata de catre comanda SELECT

proiectia - consta in alegerea doar a anumitor coloane pentru a fi afisate.

join - consta in preluarea datelor din doua sau mai multe tabele, 'legate' conform unor reguli precizate.

Figura II.1.11. Operatiile realizate cu ajutorul comenzii SELECT

Cea mai simpla forma a comenzii SELECT are sintaxa:

SELECT Lista_expresii

FROM tabela

In clauza SELECT se va preciza o lista de coloane sau expresii ce se vor afisa, separate prin cate un spatiu. In clauza FROM precizam tabela din care se vor extrage coloanele ce vor fi afisate sau pe baza carora vom realiza diverse calcule.

Vom exemplifica modul de folosire al comenzii SELECT pe tabela Persoane, avand urmatoarea structura si continut:

Tabelul II.1.1.

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Ionescu

Gheorghe

Brasov

Georgescu

Maria

Iasi

Marinescu

Angela

Sibiu

Antonescu

Elena

Sibiu

Bischin

Paraschiva

Brasov

Olaru

Angela

Ploiesti

Vasilescu

Vasile

Cluj-Napoca

Popescu

Ioan

Bucuresti

Pentru a afisa toate datele (toate coloanele si toate liniile) din tabela persoane vom scrie simplu:

SELECT * FROM persoane

Observati ca in locul listei de coloane am scris un singur asterisc, ceea ce inseamna ca dorim sa afisam toate coloanele tabelei.

Daca insa dorim sa afisam doar informatiile din cateva coloane ale tabelei, de exemplu dorim sa afisam numele, prenumele si localitatea fiecarei persoane vom preciza numele coloanelor in clauza SELECT

SELECT nume, prenume, localitate FROM persoane

rezultatul fiind cel din tabelul II.1.2.Tabelul II.1.2

NUME

PRENUME

LOCALITATE

Ionescu

Gheorghe

Brasov

Georgescu

Maria

Iasi

Marinescu

Angela

Sibiu

Antonescu

Elena

Sibiu

Bischin

Paraschiva

Brasov

Olaru

Angela

Ploiesti

Vasilescu

Vasile

Cluj-Napoca

Popescu

Ioan

Bucuresti

Dupa cum am precizat, putem realiza si calcule cu coloanele unei tabele. De exemplu pentru a afisa pentru fiecare persoana, salariul marit cu 10% folosim urmatoarea comanda:

SELECT nume, prenume, salariu, salariu * 1.10

FROM persoane

si obtinem:Tabelul II.1.3.

NUME

PRENUME

SALARIU

SALARIU*1.10

Ionescu

Gheorghe

Georgescu

Maria

Marinescu

Angela

Antonescu

Elena

Bischin

Paraschiva

Olaru

Angela

Vasilescu

Vasile

Popescu

Ioan

Aliasul unei coloane

Daca priviti tabelul II.1.3. puteti observa ca in capul de tabel afisat sunt trecute numele coloanelor cu majuscule sau expresia care a generat acea coloana, tot cu majuscule. Daca dorim ca in capul de tabel sa apara alt text, sau sa nu se foloseasca doar majuscule va trebui sa folosim un ALIAS pentru coloana respectiva. Aliasul este introdus in clauza SELECT, imediat dupa numele coloanei respective astfel:

SELECT nume, prenume, salariu AS SalariuVechi,

salariu * 1.10 AS SalariuNou FROM persoane

In aceasta comanda am stabilit doua aliase SalariuVechi si respectiv SalariuNou. Trebuie subliniat ca nu este obligatorie folosirea cuvantului AS pentru a defini un alias, insa este de preferat sa il utilizam pentru o mai mare claritate. Comanda anterioara va afisa:Tabelul II.1.4.

NUME

PRENUME

SALARIUVECHI

SALARIUNOU

Ionescu

Gheorghe

Georgescu

Maria

Marinescu

Angela

Popescu

Ioan

Puteti observa ca desi in comanda SELECT am scris aliasele folosind atat litere mici cat si litere mari, la afisare acestea sunt scrise tot cu majuscule. Pentru a evita acest lucru, trebuie sa introducem aliasul intre ghilimele:

SELECT nume, prenume, salariu AS 'SalariuVechi',

salariu * 1.10 AS 'SalariuNou' FROM persoane

rezultatul obtinut de aceasta data fiind cel din tabelul II.1.5.

De asemenea daca dorim ca aliasul sa contina mai multe cuvinte de exemplu Salariul Nou respectiv Salariul Vechi, va trebui sa folosim si de aceasta data ghilimele, in caz contrar generandu-se o eroare. De exemplu comanda urmatoare va afisa tabelul II.1.6:

SELECT nume||' '||prenume 'Numele si prenumele',

salariu AS 'Salariu Vechi',

salariu * 1.10 AS 'Salariu Nou' FROM persoane

Tabelul II.1.5.

NUME

PRENUME

SalariuVechi

SalariuNou

Ionescu

Gheorghe

Georgescu

Maria

Marinescu

Angela

Popescu

Ioan

Tabelul II.1.6.

Numele si prenumele

Salariu Vechi

Salariu Nou

Ionescu Gheorghe

Georgescu Maria

Marinescu Angela

Popescu Ioan

In cadrul clauzei SELECT, se pot folosi orice fel expresii in care se folosesc nume de coloane, constante, operatori, functii etc. De exemplu, comanda urmatoare va afisa tabelul II.1.7.

SELECT nume||' '||prenume||' are salariul egal cu '||

salariu AS 'Informatii persoane' FROM persoane

Tabelul II.1.7.

Informatii persoane

Ionescu Gheorghe are salariul egal cu 300

Georgescu Maria are salariul egal cu 890

Marinescu Angela are salariul egal cu 2100

Eliminarea liniilor duplicate

Sa analizam rezultatul rularii urmatoarei comenzi:

SELECT localitate, firma

FROM persoane

In tabelul II.1.8 se poate observa ca in localitatea Brasov exista doua persoane care lucreaza la aceeasi firma avand codul 22.

LOCALITATE

FIRMA

Brasov

Iasi

Sibiu

Sibiu

Brasov

Ploiesti

Cluj-Napoca

Bucuresti

Tabelul II.1.8.

Daca dorim sa vedem la ce firme lucreaza persoanele din fiecare localitate, insa o firma sa fie afisata o singura data pentru o localitate anume, deci combinatia valorilor localitate si firma sa fie unica, vom folosi clauza DISTINCT in cadrul clauzei SELECT astfel:

SELECT DISTINCT localitate, firma FROM persoane

LOCALITATE

FIRMA

Brasov

Bucuresti

Cluj-Napoca

Iasi

Ploiesti

Sibiu

Sibiu

combinatia (Brasov, 22) fiind afisata acum o singura data (tabelul II.1.9.).

Tabelul II.1.9.

LOCALITATE

Brasov

Bucuresti

Cluj-Napoca

Iasi

Ploiesti

Sibiu

Dar daca dorim sa afisam doar localitatile ce apar in tabela Persoane, fiecare localitate sa fie afisata o singura data? Vom scrie:

SELECT DISTINCT localitate FROM persoane

rezultatul fiind acum:

Tabelul II.1.10.

Filtrarea liniilor. Clauza WHERE

Imaginati-va ca tabela persoane contine date despre mii de persoane si ca la un moment dat va intereseaza doar informatiile despre persoanele dintr-o anumita localitate. Pentru a putea selecta doar acele linii care ne intereseaza, trebuie sa adaugam clauza WHERE la comanda SELECT. In aceasta clauza vom preciza conditiile pe care trebuie sa le indeplineasca o linie pentru a fi afisata. Asadar clauza WHERE permite realizarea operatiei de selectie (fig II.1.11).

De exemplu pentru a afisa toate persoanele care provin din Bucuresti sau Brasov vom scrie:

SELECT * FROM persoane

WHERE localitate='Brasov' OR localitate='Bucuresti'

care va afisa:

Tabelul II.1.11.

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Ionescu

Gheorghe

Brasov

Bischin

Paraschiva

Brasov

Popescu

Ioan

Bucuresti

E acum timpul sa vedem cum se foloseste operatorul LIKE. Acesta este utilizat pentru a verifica daca un sir de caractere respecta un anumit 'model'. Daca valoarea se potriveste modelului, operatorul va returna valoarea true (adevarat) in caz contrar va returna valoarea False (fals).

In model se pot utiliza urmatoarele caractere speciale:

caracterul de subliniere (underscore ) tine locul unui singur caracter, oricare ar fi acesta.

caracterul procent ( ) tine locul la zero sau mai multe caractere, oricare ar fi acestea.

De exemplu, daca dorim sa afisam toate persoanele al caror prenume contine litera a pe orice pozitie, vom scrie:

SELECT * FROM persoane

WHERE lower(prenume) LIKE '%a%'

Modelul '%a%' precizeaza ca in fata caracterului a, in prenume, se pot gasi oricate caractere, inclusiv zero caractere, iar dupa caracterul a se gasesc de asemenea oricate caractere, inclusiv zero. Am folosit functia LOWER pentru a transforma toate caracterele in litere mici, altfel numele care incep cu litera A, intrucat acesta e scris cu majuscule, nu ar fi fost afisat.

Rezultatul rularii acestei comenzi arata astfel:

Tabelul II.1.12.

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Georgescu

Maria

Iasi

Marinescu

Angela

Sibiu

Antonescu

Elena

Sibiu

Bischin

Paraschiva

Brasov

Olaru

Angela

Ploiesti

Vasilescu

Vasile

Cluj-Napoca

Popescu

Ioan

Bucuresti

Daca insa dorim sa afisam persoanele al caror prenume contine litera a pe a doua pozitie vom folosi caracterul underscore in model:

SELECT * FROM persoane

WHERE prenume LIKE '_a%'

Tabelul II.1.13.

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Georgescu

Maria

Iasi

Bischin

Paraschiva

Brasov

Vasilescu

Vasile

Cluj-Napoca

In cazul in care trebuie sa verificam daca un sir contine unul dintre caracterele speciale underscore ( ), backslash ( ), procent ( ) vom scrie in model caracterul respectiv precedat de orice caracter special (de exemplu sau &), iar dupa model vom preciza cu ajutorul clauzei ESCAPE care este caracterul special care introduce secventa corespunzatoare caracterelor

Pentru a afisa persoanele din tabela employees al caror job_id contine caracterul underscore (_) pe a treia pozitie de la sfarsit folosim comanda:

SELECT first_name, job_id FROM employees

WHERE job_id LIKE '%&_ _ _' ESCAPE '&'

sau

SELECT first_name, job_id FROM employees

WHERE job_id LIKE '%_ _ _' ESCAPE ''

iar daca dorim sa afisam persoanele al caror job_id contine un caracter underscore oriunde in sir vom utiliza comanda:

SELECT first_name, job_id FROM employees

WHERE job_id LIKE '%&_%' ESCAPE '&'

sau

SELECT first_name, job_id FROM employees

WHERE job_id LIKE '%_%' ESCAPE ''

Rezultatele afisate sunt cele din tabelul II.1.14, respectiv II.1.15.

Tabelul II.1.14.

FIRST_NAME

JOB_ID

Neena

AD_VP

Lex

AD_VP

Tabelul II.1.15.

FIRST_NAME

JOB_ID

Steven

AD_PRES

Neena

AD_VP

Lex

AD_VP

Alexander

IT_PROG

Bruce

IT_PROG



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1642
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved