SQL

3x puncte

categorie: Informatica

nota: 8.54

nivel: Facultate

Istoria SQL incepe in laboratoarele IBM din San Jose, unde limbajul a fost dezvoltat in ultimii ani ai deceniului 8.Initialele provin de la Structured Query Language.

SQL este diferit de limbajele procedurale si 3GL.

SQL este un limbaj neprocedural. SQL este ceea ce face posibil un sistem de gestiune a bazelor de date relationale SGBDR (Relational Database Management [...]
DOWNLOAD REFERAT

Preview referat: SQL

Istoria SQL incepe in laboratoarele IBM din San Jose, unde limbajul a fost dezvoltat in ultimii ani ai deceniului 8.Initialele provin de la Structured Query Language.

SQL este diferit de limbajele procedurale si 3GL.

SQL este un limbaj neprocedural. SQL este ceea ce face posibil un sistem de gestiune a bazelor de date relationale SGBDR (Relational Database Management System - RDBMS).Ceea ce diferentiaza un SGBD de un SGBDR este faptul ca ultimul asigura un limbaj de baze de date orientat pe multimi.Pentru majoritatea sistemelor de administrare a bazelor de date relationale, acest limbaj este SQL.



Structured Query Language (SQL - limbajul structurat de interogare) este limbajul styandart de facto folosit pentru manipularea si regasirea datelor din aceste baze de date relationale.Prin SQL, un programator sau un administrator de baze de date poate face urmatoarele lucruri:

sa modifice structura unei baze de date ;
sa schimbe valorile de configurare pentru securitatea sistemului;
sa adauge drepturi utilizatorilor asupra bazelor de date sau tabelelor;
sa interogheze o baza de date asupra unor informatii;
sa actualizeze continutul unei baze de date.
SQL a fost dezvoltat pentru a servi bazele de date relationale. Fara o intelegere minima a teoriei bazelor de date relationale, nu veti putea folosi efectiv SQL.



OBS: Voi folosi pe tot parcursul exemplelor diagrama conceptuala referitoare la activitatea unei agentii imobiliare (vezi anexa).







2.0 Blocurile componente ale operatiei de regasire a datelor: select si from






Vom observa ca pe masura ce experienta noastra in SQL creste vom folosi cuvintele SELECT si FROM mai des decat oricare alte cuvinte din vocabularul SQL.

Incepem cu comanda SELECT:

Tabelul AGENTI:

SINTAXA: SELECT

Intrare: SQL> select * from agenti;

Iesire:

cod_agent nume prenume sex data_nasterii adresa telefon comision

1 Bundy AL m 12/12/56 USA,IL,100 555-1111 25

2 MEZA AL f 10/01/65 UK,200 30

3 MERRICK BUD m 01/04/76 CO,300 555-6666 25

4 MAST JD m 03/11/77 LA,381 555-6767 25

Acest exemplu arata baza de date model .Semnul (*) transmite bazei de date comanda de a va returna toate coloanele asociate cu tabelul dat descris in clauza FROM.Ele sunt returnate intr-o ordine hotarata de baza de date.



2.1 Selectarea coloanelor individuale







Sa presupunem ca suntem interesati numai de o pereche de coloane.Introducem de la tastatura comanda:

Intrare: SQL> SELECT telefon,nume from agenti;

Iesire : telefon nume

Bundy
MEZA

MERRICK
MAST
Acum avem afisate coloanele care ne intereseaza. Observati folosirea literelor mari si mici in interogare. Acestea nu au nici un efect asupra rezultatului.



2.2 Interogari distincte



Daca privim cu atentie tabelul AGENTI vom observa ca unele date se repeta.

Cum procedam daca dorim sa vedem cate prenume diferite exista in coloana?

Sa incercam astfel:

Intrare: SQL> select DISTINCT prenume from agenti;

Iesire: prenume

AL

BUD

JD

Observam ca numai apare prenumele AL de doua ori. Deoarece am specificat

DISTINCT , este afisate numai o aparitie a prenumelui AL.



2.3 Expresii







Definitia unei expresii este simpla: aceasta returneaza o valoare.De asemenea, este un termen foarte larg, deoarece poate trata tipuri diferite, cum ar fi sir, numeric sau logic.

De fapt, aproape orice urmeaza o clauza ( de exemplu, SELECT sau FROM ) este o expresie, deci am folosit deja expresii.

In instructiunea : select (prenume + ' ' + nume) from agenti;

fraza (prenume + ' ' + nume) este o expresie care returneaza numele complet din baza de date AGENTI.O completare utila pentru aceasta ar putea fi

WHERE nume = 'MAST'

care este mai interesanta.Contine conditia nume='MAST',care este un exemplu de expresie logica(nume='MAST' va fi falsa sau adevarata in functie de conditia =).





2.4 Conditii







Daca doriti vreodata sa gasiti un anumit element sau un grup de element in baza dumneavostra de date, aveti nevoie de una sau mai multe conditii (de asemenea clauza WHERE).In exemplul anterior , conditia este

nume = 'MAST'

Daca problema dumneavoastra a fost sa gasiti toate persoanele din AGENTI care au numele mai mare decat 'Bundy' ati putea introduce conditia

nume >'Bundy'

Conditiile fac posibile interogarile selective.In cea mai obisnuita forma a lor, ele se compun dintr-o variabila, o constanta si un operator de comparare. In primul exemplu,

variabila este nume, constanta este 'MAST' si operatorul de comparare =. In al doilea exemplu , variabila este nume, constanat este 'MAST' si operatorul de comparare este >. Mai avem nevoie de numai doua lucruri inainte de a incepe sa cream interogari conditionale: intelegerea operatorilor si de clauza WHERE.









3.0 Clauza where






Sintaxa clauzei WHERE este

WHERE

Impreuna cu SELECT si FROM , WHERE este cea mai folosita clauza in SQL.Aceasta clauza va face interogarile mai selective, intr-un mod simplu. Fara clauza WHERE, cel mai util lucru pe care il puteti face cu o interogare este sa afisati baza de date.

Daca dorim o anume persoana , ati putea introduce comanda

Intrare: SQL> SELECT *

FROM agenti

WHERE nume ='Bundy';

care ar genera o singura inregistrare:

Iesire:

cod_agent nume prenume sex data_nasterii adresa telefon comision

1 Bundy AL m 12/12/56 USA,IL,100 555-1111 25

Acest lucru pare interesant, sau cel putin, mai util.









4.0 Operatori










Operatorii sunt ceea ce dumneavoastra folositi in interiorul conditiei unei expresii pentru a specifica exact ceea ce doriti din baza de date. Operatorii se impart in sase grupe distincte : aritmetici, de comparare, caracter, logici, pentru multimi si alti operatori.



4.1 Operatori aritmetici







Operatorii aritmetici sunt plus(+), minus(-), impartire(/), inmultire(*) si modulo(%).

Primii patru sunt descrisi chiar prin numele lor. Ultimul, modulo, returneaza restul intreg al unei impartiri.De exmplu :

5 % 2 = 1

6 % 2 = 0

Operatorul modulo nu accepta tipuri de date care contin zecimale, ca de exemplu, tipul rreal sau number.

Daca plasati cativa operatori aritmetici intr-o expresie fara paranteze, ei sunt tratati in ordinea urmatoare: inmultire, impartire, module, adunare si apoi scadere.

In continuare avem un exemplu pentru operatorul plus(+).



4.1.1 Plus(+)

Semnul plus poate fi folosit in doua moduri diferite.

Mai intai afisam baza de date CURSVALUTAR.

Intrare: SQL> select *

from CURSVALUTAR;

Iesire:

tip_valuta data vanzare cumparare

USA $ 01/01/98 9540 10540

DM 01/01/98 5400 5550

ECU 01/01/98 12000 13000

Acum sa introducem comanda:

Intrare: SQL> select tip_valuta, data,vanzare, vanzare + 0.50

from cursvalutar ;

Iesire:

tip_valuta data vanzare vanzare + 0.10

USA $ 01/01/98 9540 10494

DM 01/01/98 5400 5940

ECU 01/01/98 12000 13200

Ce este ultima coloana? Nu face parte din tabelul original.Ce este cu acest titlu, deloc atragator, vanzare + 0.50?

SQL va permite crearea unor coloane virtuale sau derivate prin combinarea sau modificarea coloanelor existente.

Haideti sa modificam vanzare + 0.50 .

Introduceti comanda:

Intrare: SQL> SELECT tip_valuta, data, vanzare, (vanzare + 0.10) crestere _pret FROM cursvalutar;

Iesire:

tip_valuta data vanzare crestere_pret

USA $ 01/01/98 9540 10494

DM 01/01/98 5400 5940

ECU 01/01/98 12000 13200

Ati mai invatat ceva si anume alias - uri, iar daca va intrebati la ce va folosesc, cand vi se cere sa scrieti un generator de rapoarte amintiti-va de ceea ce ati invatat acum.



4.1.2 Impartire(/)

Semnul impartire are un singur mod clar de folosire.Utilizand tabela cursvalutar vom imparti campul vanzare la 2.

Intrare: SQL> select tip_valuta, data, (vanzare/2) test

from cursvalutar;

Iesire:

tip_valuta data vanzare test

USA $ 01/01/98 9540 4770

DM 01/01/98 5400 2700

ECU 01/01/98 12000 6000



4.2 Operatori de comparatie







Dupa cum semnifica si numele lor , operatorii de comparatie compara expresiile si returneaza una din urmatoarele trei valori: TRUE ( Adevarat ), FALSE (Fals) sau UnKnown (Necunoscut).In termenii folositi pentru baze de date, NULL semnifica absenta datelor dintr-un camp. Nu inseamna ca o coloana contine o valoare zero sau spatiu. un zero sau spatiu sunt valori. NULL inseamna ca in campul respectiv nu se gaseste nimic. Daca faceti o comparatie de genul Field = 9 si Field este NULL, comparatia va returna UnKnown.

Observati tabelul AGENTI are o valoare NULL in campul telefon al persoanei MEZA.

Daca vreodata incercati sa gasiti o eroare logica de programare care pare sa nu aiba rezolvare, asigurati-va ca nu incercati sa comparati o valoare NULL si reveniti la valoarea prestabilita de FALSE.

Tabelul arata astfel:

Intrare: SQL> select *

from agenti;

Iesire:

cod_agent nume prenume sex data_nasterii adresa telefon comision

1 Bundy AL m 12/12/56 USA,IL,100 555-1111 25

2 MEZA AL f 10/01/65 UK,200 30

3 MERRICK BUD m 01/01/75 CO,300 555-6666 25

Haideti sa incercam sa gasim valoarea NULL:

Intrare: SQL> select *

from agenti

where telefon = null

Iesire: no rows selected.

Nu ati gasit nimic deoarece comparatia telefon = null returneaza valoarea false datorita faptului ca rezultatul este necunoscut. Acesta este un bun loc de folosire a unei valori

is null , modificand instructiunea where in WHERE telefon is null. In acest caz veti primi ca raspuns al comenzii toate liniile in care exista o valoare NULL.

Intrare: SQL> select *

from agenti

where telefon is null;

Iesire: cod_agent nume prenume sex data_nasterii adresa telefon comision

1 MEZA AL f 10/01/65 UK,200 30



4.3 Operatori caracter



4.3.1 Operatorul LIKE

Cum procedati daca vreti sa selectati parti ale unei baze de date care se potrivesc unui model dar nu foarte exact?

Ati putea folosi operatorul LIKE

Priviti urmatorul exemplu:

Intrare: SQL> select *

from agenti

where nume like 'M%';

Iesire:

cod_agent nume prenume sex data_nasterii adresa telefon comision

2 MEZA AL f 10/01/65 UK,200 30

3 MERRICK BUD m 01/04/76 CO,300 555-6666 25

4 MAST JD m 03/11/77 LA,381 555-6767 25

Veti primi ca raspuns toate inregistrarile care in care numele incepe cu M.



4.3.2 Underscore(Subliniere)( _ )

Semnul underscore este un caracter de inlocuire pentru un singur caracter.



4.3.3 Concatenarea ( || )

Simbolul || concateneaza doua siruri.

Urmatorul exemplu arata acest lucru:

Intrare: SQL> select nume || prenume nume_intreg

from agenti;

Iesire:

nume_intreg

Bundy AL

MEZA AL

MERRICK BUD

MAST JD












4.4 Operatori logici







4.4.1 AND ( SI )

And inseamna ca ambele expresii intre care se gaseste operatorul trebuie sa fie adevarate pentru ca operatorul sa returneze valoarea TRUE. Daca oricare dintre ele este falsa, AND cva returna valoarea FALSE.



4.4.2 OR(SAU)

Daca vreuna din comparatii este TRUE, OR returneaza valoarea TRUE.



4.4.3 NOT (nu)

Not inseamna chiar ceea ce sugereaza numele.In cazul in care conditia aplicata este evaluta la valuarea true, operatorul NOT o schimba in false. In cazul in care conditia care urmeaza operatorului NOT are valoarea false, ea devine true.



Recomandare: Nu combinati operatorii not si or daca nu sunteti siguri de ceea ce reprezinta.
« mai multe referate din Informatica

CAUTA REFERAT

TRIMITE REFERAT CERE REFERAT
Referatele si lucrarile oferite de E-referate.ro au scop educativ si orientativ pentru cercetare academica.
Confidentialitatea ta este importanta pentru noi

E-referate.ro utilizeaza fisiere de tip cookie pentru a personaliza si imbunatati experienta ta pe Website-ul nostru. Te informam ca ne-am actualizat termenii si conditiile de utilizare pentru a integra cele mai recente modificari privind protectia persoanelor fizice in ceea ce priveste prelucrarea datelor cu caracter personal. Inainte de a continua navigarea pe Website-ul nostru te rugam sa aloci timpul necesar pentru a citi si intelege continutul Politicii de Cookie. Prin continuarea navigarii pe Website-ul nostru confirmi acceptarea utilizarii fisierelor de tip cookie conform Politicii de Cookie. Nu uita totusi ca poti modifica in orice moment setarile acestor fisiere cookie urmarind instructiunile din Politica de Cookie.


Politica de Cookie
Am inteles