curs bd-sql pentru fabbv an 2

50
Inter ogri de selecie Inter ogri de selecie SQL SQL Structured Query Language

Upload: culea-bogdan-alexandru

Post on 09-Apr-2018

261 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 1/50

Interogri de selecieInterogri de selecie

SQLSQL

Structured Query Language

Page 2: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 2/50

SGBD Access 2000: SQLSQL

Limbajul SQLSQL (StructuredStructured QueryQuery LanguageLanguage) esteun limbaj declarativ (neprocedural) care permite o comunicarecomplex i rapid a utilizatorului cu bazele de date, în funcie decerinele i restriciile informaionale ale acestuia.

Printr-un limbaj declarativ (neprocedural) utilizatorul descrie

informaiile pe care vrea s le obin în urma interogrii, fr a

 preciza algoritmii necesari pentru obinerea rezultatelor dorite.

SQL nu este un limbaj de programare sau de sistem, ci mai curândface parte din categoria limbajelor de aplicaii (orientate pe mulimi)

 pentru baze de date relaionale.

Faptul c este un limbaj standard a condus la recunoaterea principalelor sale instruciuni de ctre mai multe SGBD-uri (Oracle,Access, Dbase, INFORMIX, DB2, Visual FoxPro.)

Page 3: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 3/50

SGBD Access 2000: SQLSQLPe lâng manipularea i regsirea datelor, SQL efectueaz i operaiicomplexe privind actualizarea i administrarea bazei de date.

În funcie de rolul lor în manipularea datelor i tranzaciilor,instruciunile SQL, pot fi grupate în:

instruciuni de definire a datelordefinire a datelor care permit descrierea structurii bazei de date;

instruciuni de manipulare a datelormanipulare a datelor în sensul adugrii,modificrii i tergerii înregistrrilor; instruciuni de selecie a datelorselecie a datelor care permit consultarea bazei dedate;

instruciuni de procesare a tranzaciilorprocesare a tranzaciilor care privesc unitilelogice de prelucrare i constituie în fapt, operaii multiple demanipulare a datelor; instruciuni de control al cursoruluicontrol al cursorului; instruciuni privind controlul accesului la datecontrolul accesului la date.

Page 4: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 4/50

SGBD Access 2000: SQLSQL

Cuvintele cheie ale ³vocabularului´ SQL (fraza SQL) sunt:

instruciunileinstruciunile, clauzeleclauzele, funciilefunciile i operatoriioperatorii..

InstruciunileInstruciunile: au cel mai important rol, deoarece determinexecutarea unei aciuni (SELECT; CREATE; INSER T; DELETE;UPDATE).

ClauzeleClauzele restricioneaz aria valoric a entitilor ce particip lainterogare (WHERE; ORDER BY; GROUP BY; HAVING).

FunciileFunciile îmbuntesc capacitile SQL de a manipula datele

(Sum; Max; Avg; Count; Iif).

OperatoriiOperatorii efectueaz o comparare a valorilor seleciei (=; >;>=, >; >= And; Or; Not; Between; Like; In; .

Page 5: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 5/50

SGBD Access 2000: SQLSQL

R eguli de sintax ale unei fraze SQL:

Orice fraz SQL se va termina cu semnul ³;´

Se utilizeaz punctul (³..´) ca separator între numele tabelei inumele câmpului, atunci când o interogare are ca surse de date mai

multe tabele (SELECT Materiale..Cod_ISBN); Se utilizeaz parantezele drepte (³[][]´) pentru a încadra nume decâmpuri interspaiate sau purttoare de caractere neaceptate de SQL(SELECTMateriale.[Denumire Material])

Se utilizeaz virgula (³,,´) pentru a delimita elementele (parametri)unei liste (SELECT Cod_Mat, Den_Mat, etc.)

Elementele de tip ir de caractere se vor marca între

ghilimele(³text´), iar valorile de tip dat/timp se vor marca între #.

Caracterele de înlocuire generice sunt ³?´ sau ³*´

Page 6: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 6/50

SGBD Access 2000: SQLSQL SELECTSELECTLimbajul de manipulare a datelor: Interogri (Interogri ( simple simple) de selecie) de selecie

  SELECT  [domeniu: ALL/DISTINCT/DISTINCTROW]  listselecie câmpuri 

FROM nume tabel(e)

 [WHERE criteriu de selecie] 

 [ORDER BY list câmpuri criterii de ordonare {ASC/DESC}];

DomeniulDomeniul determin modalitile de manipulare a înregistrrilor dinBD asupra creia opereaz selecia. Domeniul poate fi:

ALLALL (implicit) include toate înregistrrile care îndeplinesc

condiiile impuse; DISTINCTDISTINCT elimin înregistrrile care au valori duplicate încâmpurile selectate (se va afia doar o apariie a datei multiple)

DISTINCTR OWDISTINCTR OW elimin înregistrrile duplicate în ansamblul lor 

(nu numai pe acelea care au câmpuri duplicate)

Page 7: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 7/50

SGBD Access 2000: SQLSQL SELECTSELECT

 SELECT [domeniu: ALL/DISTINCT/DISTINCTROW] list selecie câmpuri 

FROM nume tabel(e)

[WHERE cr iter iu d e  selec ie][WHERE cr iter iu d e  selec ie] [ORDER BY list câmpuri criterii de ordonare {ASC/DESC}]; [ORDER BY list câmpuri criterii de ordonare {ASC/DESC}];

Clauza FR OM nume tabelFR OM nume tabel precizeaz tabela sau tabelele (sauinterogri deja create) din care fac parte câmpurile ce fac obiectul proieciei BD (,)

List selecie câmpuriList selecie câmpuri reprezint proiecia BD, cuprinzând toatecâmpurile care vor aprea în tabela cu rezultatele interogrii (,)

Clauza WHER EWHER E precizeaz criteriul de selecie sub forma unei

expresii. Clauza este opional i nu opereaz cu funcii totalizatoareClauza ORDER BYORDER BY precizeaz criteriul de ordonare a înregistrrilor selectate. Fiecare câmp precizat în Clauza ORDER BY constituie ocheie de sortare (sensul sortrii se precizeaz prin ASC (implicit) sau

DESC)

Page 8: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 8/50

SGBD Access 2000: SQLSQL SELECTSELECT : Exemple: Exemple

TabelaA

a1 a2 a3 a4 a5 a6

S electar ea câmpur ilor a1 i a2 d in A

SELECT

DIST

INCT

ROW a1,a2FROM A

S electar ea (fr d ublur i) a lui a1 i a5 

 pent r u car e a5> 1000

SELECT

DIST

INCT

a1,a5FROM A

WHERE a5>1000;

S electar ea (fr d ublur i a) lui a5 > 1000 i a3= ir 

SELECT

DIST

INCT

 a5FROM A

WHERE a5>1000 AND a3=´text´;

S electar ea lui a5  pt car e a3 ar e o 

rdcin pr ecizat 

SELECTDISTINCT a5

FROM A

WHERE a3 LIKE ´*text´;

Page 9: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 9/50

SGBD Access 2000: SQLSQL SELECTSELECT : Exemple: Exemple

TabelaA

a1 a2 a3 a4 a5 a6

S electar ea (fr d ublur i a) lui a5 <> ( 100,1000)SELECT DISTINCT a5

FROM A

WHERE a5

(NOT) BETWEEN 100 AND 1000

S electar ea lui a5 i a r ezultatului unui 

 pr od us d int r e î nr egist rr ile tabelei A

SELECT DISTINCT a1, a2*a5

AS Valoare

FROM A

Selectarea câmpurilor a2, a4 i a5 din A pt.care a2 s ia valorile 1500, 13000 i 14000,cu ordonare cresctoare a lui a1 idescresctoare a lui a5

SELECT a2,a4,a5

FROM A

WHERE a2 IN(1500, 13000, 14000)

ORDER BY a2 ASC, a5 DESC;

Page 10: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 10/50

SGBD Access 2000: SQLSQL SELECTSELECT : Exemple: ExempleTabela A

a1 a2 a3 a4 a5 a6

SELECT DISTINCTROW Max(a5)AS [a5_Maxim], Min(a5) AS[a5_Minim], Avg(a5) AS [a5_Medie]FROM A

SELECT

 C

OUNT

(*) AS [Numr de tupluri]FROM A

SELECT a1, a5, a6, IIF(a5>=a6;a5-a6;a6-a5) AS [R ezultat evaluare]FROM A

WHERE a2 IS NOT NULL;

S electar ea celei mai mari  / mai mici  / i 

medii valor i a lui a5 d in tabela A

 Numrarea î nr egist rr ilor d in tabela A

S electar ea r ezultatului evalurii 

unei condiii  ,  pent r u car e a2 este d i f er it d e  zer o

SELECT funcie_agregatfuncie_agregat1 AS [Alias], ...2,...FROM nume tabel(e)WHERE criteriu de selecie

Obs. În lipsa opiunii GRUP BY, la utilizareafunciilor agregat, rezultatul va conine o singur linie

Count (<>Null);Sum ;Min ;Max

Avg;Iif 

Page 11: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 11/50

SGBD Access 2000: SQLSQL SELECTSELECTLMD:LMD: Interogri (complexe) de selecie iInterogri (complexe) de selecie i gruparegrupare

 S  ELECT [d omeniu]  [ list   selec ie  funcie agregat(nume câmp) AS alias]  FROM nume tabel ( e)

WHERE cr iter iu d e  selec ie

 [ GROUP BY câmp(uri) de grupare] 

 [  HAVING criteriul câmpului de grupare] [ORDER BY list  câmpur i cr iter ii d e ord onar e {AS C/DE S C} ];

Funciile de grup (agregat) permit construirea unor interogri SQL prin care utilizatorul poate s efectueze diversediverse calcule pentrucalcule pentru

 grupuri de înregistrri  grupuri de înregistrri care au câmpuri de aceeai valoarecare au câmpuri de aceeai valoare.

List selecieList selecie se refer la una sau mai multe funcii agregatefuncii agregate care auca argumente nume de câmpuri ale tabelei(lor) bazei de date. Acestecâmpuri trebuie s fie în mod obligatoriu numerice.

AS ALIASAS ALIAS asociaz un pseudonimpseudonim aferent rezultatuluirezultatului unui calcul

simplu sau unei funcii agregat.

Page 12: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 12/50

SGBD Access 2000: SQLSQL SELECTSELECTLMD:LMD: Interogri (complexe) de selecie iInterogri (complexe) de selecie i gruparegrupare

 S  ELECT [d omeniu]  [funcie agregat(nume câmp) AS alias] [  , list  selec ie] FROM nume tabel ( e)

 [ GROUP BY câmp(uri) de grupare] 

 [  HAVING criteriul câmpului de grupare] [ORDER BY list  câmpur i cr iter ii d e ord onar e {AS C/DE S C} ];

ClauzaClauza GR OUP BYGR OUP BY precizeaz câmpul sau câmpurile pe baza crorase va efectua gruparea înregistrrilor. Astfel, se pot executa funciileagregate descrise în lista de selecie pentru fiecare dintre grupurile deînregistrri ( cu linia de Total în QBE)

ClauzaClauza GR OUP BYGR OUP BY formeaz grupuri de tupluri  grupuri de tupluri ale unei relaii, pe baza valorilor comune luate de un atribut.

Rezultatul unei fraze SELECTSELECT ce conine clauza GR OUP BYGR OUP BY seobine prin regruparea tuturor liniilor din tabelele enumerate înFR OMFR OM, extrgându-se câte o singur apariie pentru fiecare valoaredistinct a coloanei sau a grupului de coloane

Page 13: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 13/50

SGBD Access 2000: SQLSQL SELECTSELECTLMD:LMD: Interogri (complexe) de selecie iInterogri (complexe) de selecie i gruparegrupare

TabelaA (Coninut Factur)

a1 a2 a3 a4

100

100

100

305 25 125000

208 10 200000

85 30 100000

101

101

208 8 200000

74 10 300000

103

103

90 5 50000

74 25 300000

Tabela R

a1a1 a5=SUM(a3*a4)a5=SUM(a3*a4)

100 812500

101 460000

103 775000

SELECT a1, SUM(a3*a4) AS a5FROM A

GR OUP BY a1;

1.Se ordoneaz liniile tabelei A dup a1;

2. Se constituie un grup pentru fiecarevaloare distinct aferent atributului a1;3. Se aplic funcia agregat SUMSUM asupragrupurilor;4. Se obine rezultatul, al crui numr delinii coincide cu valorile distincte ale lui a1

Page 14: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 14/50

SGBD Access 2000: SQLSQL SELECTSELECTLMD:LMD: Interogri (complexe) de selecie iInterogri (complexe) de selecie i gruparegrupare

HAVINGHAVING se refer la restricia aplicat câmpului de grupare.Clauza WHERE acioneaz înainte de gruparea înregistrrilor, întimp ce HAVING activeaz restricia dup gruparea acestora.

Deci, prin asocierea clauzei HAVINGHAVING la GR OUP BYGR OUP BY este posibilselectarea anumitor grupuri de tupluri ce îndeplinesc un criteriunumai la nivel de grup.

 S  ELECT [d omeniu]  [funcie agregat(nume câmp) AS alias] [  , list   selec ie]

 FROM nume tabel ( e)

 [ GROUP BY câmp(uri) de grupare] 

 [  HAVING criteriul câmpului de grupare] [ORDER BY list  câmpur i cr iter ii d e ord onar e {AS C/DE S C} ];

Page 15: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 15/50

SGBD Access 2000: SQLSQL SELECTSELECT

TabelaA (Coninut Factur)

a1 a2 a3 a4

100

100

100

305 25 125000

208 10 200000

85 30 100000

101

101

208 8 200000

74 10 300000

103

103

90 5 50000

74 25 300000

Tabela R

a1a1 a5=SUM(a3*a4)a5=SUM(a3*a4)

100 812500

103 775000

SELECT a1, SUM(a3*a4) AS a5FROM A

GROUP BY a1HAVING SUM(a3*a4) >500000;

460000

SELECT a1, SUM(a3*a4) AS a5FROM A

WHER E a3>5

GROUP BY a1

HAVING SUM(a3*a4) >750000;

Tabela R1

a1a1 a5=SUM(a3*a4)a5=SUM(a3*a4)

100 812500

Page 16: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 16/50

SGBD Access 2000: SQLSQL SELECTSELECT

Tabela B

b1 b2 b3 b4 b5 a1

SELECT b1, b2, b4, b5, b3*b4 AS [produs b3 i b4]FROM B

WHERE b2=´ctiteriu text´

GROUP BY b4HAVING Sum(b3*b4)>300000;

SELECT b1, b2, Avg(b3) AS [medie b3], Count(*) AS [Total]

FROM BGROUP BY b3,HAVING Avg(b3)>250000 AND

Count (*)>5

Page 17: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 17/50

SGBD Access 2000: SQLSQL SELECTSELECT: JOIN: JOIN

TabelaA

a1 a2 a3 a4 a5 a6

Tabela B

b1  b2 b3 b4 b5 a1

Tabela C

c1 c2 c3 c4 C5 a1

 SELECT [domeniu] list selecie câmpuri din tabele diferiteFROM nume tabele

 [WHERE criteriu de compunere [i de selecie]  [ORDER BY list câmpuri criterii de ordonare {ASC/DESC}];

LMD:LMD: Interogri de asociere (jonciune / compunere) internInterogri de asociere (jonciune / compunere) intern

Compunerile echivalente (EchiCompunerile)Compunerile echivalente (EchiCompunerile) --> utilizeaz clauza WHERE (pt> utilizeaz clauza WHERE (ptselecia înregistrrilor) asociat cu o egalitate a valorilor în câmpurile de legtur.selecia înregistrrilor) asociat cu o egalitate a valorilor în câmpurile de legtur.

 A compus cu B i  A compus cu cu C 

SELECT A.a1, A.a2, B.b1, C.c1, C.c3

FROM A, B, C

WHERE A.a1=B.a1 AND A.a1=C.a1

ORDER BY C.c3;

SELECT A.a1, B.b2* B.b3AS Total

FROM A, B

WHERE A.a1=B.a1 ANDA.a5>=10000;

T1, T2,.....

T1.a1,T2.a1,

.........

Page 18: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 18/50

Exemple:

SELECTSELECT FacturiFacturi.[ Numar Factura], FacturiFacturi.[ Data F actur ii],FacturiFacturi.[C od F iscal ],[Continut FacturaContinut Factura].[C od I S  BN ], [ContinutContinut

FacturaFactura].C antitate, [Continut FacturaContinut Factura].[ P r et f ], [C antitate]*[ P r et f ] AS

ValoareValoareFR OMFR OM FacturiFacturi,[Continut FacturaContinut Factura]WHER EWHER E FacturiFacturi.[ Numar Factura] = [Continut FacturaContinut Factura].[ Numar 

Factura];

 Compunerea a 2 tabele (WHERE)

Page 19: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 19/50

Exemple:

 Compunerea a 3 tabele (WHERE)

SELECTSELECTFacturiFacturi.[ Numar Factura], FacturiFacturi.[ Data F actur ii],[Continut FacturaContinut Factura].C antitate, [Continut FacturaContinut Factura].[ P r et f ],[C antitate]*[ P r et f ] AS ValoareValoare,ClientiClienti.[Cod Fiscal ], ClientiClienti.[ Denumir e C lient ],

FR OMFR OM FacturiFacturi, [Continut FacturaContinut Factura],ClientiClientiWHER EWHER E

FacturiFacturi.[ Numar Factura]==[Continut FacturaContinut Factura].[ Numar Factura]ANDAND

ClientiClienti.[

Cod Fiscal ]

== FacturiFacturi.[

Cod Fiscal ];

Page 20: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 20/50

SGBD Access 2000: SQLSQL SELECTSELECT: JOIN: JOIN

O compunere intern (INNER INNER ) sau echivalent(echicompunere) este aceea în care liniile unui tabel

sunt combinate cu liniile altui tabel, rezultând unnumr total de linii egal cu produsul numrului delinii din fiecare tabel (cazul 1 din Join Properties).

LEFT OUTER JOINLEFT OUTER JOIN (11n) include toate înregistrrile din tabela AA

(cardinalitate ³11´) i numai acele înregistrri din tabela BB

(cardinalitate ³nn´) pentru care valorile atributelor cheie (a1a1) suntegale (cazul 2 din Join Properties).

R IGHT OUTER JOINR IGHT OUTER JOIN (11

nn) include toate înregistrrile din tabela³BB´ (cardinalitate ³nn´) i numai acele înregistrri din tabela ³AA´(cardinalitate ³11´) pentru care valorile atributelor cheie (a1a1) suntegale (cazul 3 din Join Properties).

TabelaA

a1 a2 a3 a4 a5 a6

Tabela B

b1  b2 b3 b4 b5 a1

Page 21: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 21/50

SGBD Access 2000: SQLSQL SELECTSELECT : JOIN: JOIN

 SELECT [domeniu] list selecie câmpuri din tabele diferiteFROM nume tabel_1

{INNER /  LEFT OUTER /  RIGHT OUTER } JOIN nume tabel_2

ON criteriu asociere [WHERE criteriu de selecie

 [ORDER BY list câmpuri criterii de ordonare {ASC/DESC}];

SELECT A.a5, B.b3, (A.a5*B.b3) AS [Produs]FROM A

INNER JOININNER JOIN B ONON A.a1=B.a1;

SELECT A.a1, A.a2, A.a5, B.b1, C.c1

FROM A

INNER JOININNER JOIN B B

ONON (A.a1=B. a1 ) AND (B.b1=C.b1);

 A compus cu

rezultatul compunerii 

dintre B i C 

TabelaA

a1 a2 a3 a4 a5 a6

Tabela B

b1  b2 b3 b4 b5 a1

Tabela C

c1 c2 c3 c4 c5 b1

(INNER JOIN C C ON  B.b1=C .b1)

Page 22: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 22/50

Exemple:

SELECTSELECT FacturiFacturi.[ Numar Factura], FacturiFacturi.[ Data F actur ii],FacturiFacturi.[C od F iscal ], [Continut FacturaContinut Factura].[C od I S  BN ], [ContinutContinut

FacturaFactura].C antitate, [Continut FacturaContinut Factura].[ P r et f ], [C antitate]*[ P r et f ] ASV aloar e

FR OMFR OM FacturiFacturi INNER JOININNER JOIN [Continut FacturaContinut Factura]ONON FacturiFacturi.[ Numar Factura] = [Continut FacturaContinut Factura].[ Numar Factura];

 Compunerea a 2 tabele (INNER)

Page 23: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 23/50

Exemple:

SELECTSELECT FacturiFacturi.[ Numar Factura], FacturiFacturi.[ Data F actur ii],[Continut FacturaContinut Factura].C antitate, [Continut FacturaContinut Factura].[ P r et f ],[C antitate]*[ P r et f ] AS V aloar e,ClientiClienti.[Cod Fiscal ], ClientiClienti.[ Denumir e C lient ]FR OMFR OM ClientiClienti INNER JOININNER JOIN FacturiFacturi

ONON ClientiClienti.[Cod Fiscal ] = FacturiFacturi.[Cod Fiscal ];

 Compunerea a 3 tabele (INNER)

(INNER JOIN(INNER JOIN [Continut FacturaContinut Factura]ONON

FacturiFacturi.[ Numar Factura] = [Continut FacturaContinut Factura].[ Numar Factura]))

Page 24: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 24/50

Exemple:

SELECT Facturi.[ N umar F actur a],[Continut Factura].C antitate, [Continut Factura].[ P r et f ], [C antitate]*[ P r et f ] AS V aloar e,

IIf ([IIf ([V aloar e]<5000000,0,[]<5000000,0,[V aloar e]*0.15)AS]*0.15)AS Red ucer e

FROM Facturi

INNER JOIN [Continut Factura]ON

Facturi.[ N umar F actur a] = [Continut Factura].[ N umar F actur a];

 DISCOUNT ÎN LINIE DE FACTUR

Page 25: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 25/50

Exemple:

SELECT Facturi.[Numar Factura],[Continut Factura].[Cod ISBN],Month([Data Facturii]) AS Luna,Year([Data Facturii]) AS Anul,[Cantitate]*[Pret f] AS Valoare

FROM Facturi INNER JOIN [Continut Factura] ON Facturi.[Numar Factura]= [Continut Factura].[Numar Factura]WHERE Month([Data Facturii])=5 AND Year([Data Facturii])=2001;

 FACTUR ILE PE LUNA Mai 2001FACTUR ILE PE LUNA Mai 2001

Page 26: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 26/50

SQLSQL SubInterogriSubInterogri SELECTSELECT în în SELECTSELECT în ..... în .....TabelaA

a1 a2 a3 a4 a5 a6

O subinterogare sau o interogare imbricat presupune ca setul derezultate obinut de la o interogare s constituie argument pentru oalta (interogare în interogare).

 SELECT [domeniu] list selecie câmpuri 

FROM nume tabel

 [WHERE câmp > / < / >= / <= / <> / = /  IN 

(  SELECT câmp

FROM nume tabel [ WHERE criteriu de selecie ]);

SELECT DISTINCTROW a1a1,a3,a5FROM AA

WHERE a5 > (SELECT a5 FROM AA WHERE a3=³text´);

Subinterogri construite pe o singur tabel

Page 27: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 27/50

SELECTSELECT a1FR OMFR OM AA

WHER EWHER E a2 IN (SELECT(SELECT a2 FR OMFR OM AAWHER EWHER E a1=1120);

Execuia interogrii se va derula în doi timpi:

Tabela AA

a1 a2 a3 a4 a5 A6

1118 05.11.2003 aaa bbb 30 50

1119 06.11.2003 ddd eee 45 74

1120 06.11.2003 rrr ttt 36 58

1121 06.11.2003

Care sunt elementele a1 (facturile)emise în aceeai zi cu elementul a1(factura) 1120?

executarea subcererii (SELECT(SELECT a2 FR OMFR OMAAWHER EWHER E a1=1120) sematerializeaz într-o singur tabel intermediar cu o singur linie.

a2

06.11.2003

executarea

cererii principale,adic selecia luia1din tabela A, pentru care existcondiia

a1

1119

11201121

Page 28: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 28/50

Exemplu:

SELECT SS.[Cod Fiscal], Count(*) AS NR NR 

FROM(SELECT * FROM FacturiWHERE [Data Facturii]>#5/1/2001#) AS SS

GROUP BY [C

od fiscal];

  NUMRUL DE FACTURI EMISE CLIENILOR DUP 01/05/2001

SELECT [Cod Fiscal], Count(*) AS NR NR 

FROM(SELECT * FROM Facturi

WHERE [Data Facturii]>#5/1/2001#)GROUP BY [cod fiscal];

SS

Page 29: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 29/50

SQLSQL SubInterogriSubInterogri SELECTSELECT în în SELECTSELECT în ..... în .....TabelaA

a1 a2 a3 a4 a5 a6

Tabela B

b1  b2 b3 b4 b5 a1

 SELECT [domeniu] list selecie câmpuri 

FROM nume tabel_1

 [WHERE tabel_1 .câmp legtur=(SELECT câmp legtur

FROM nume tabel_2

 [WHERE criteriu de selecie pentru subinterogare ])

SELECT a1a1,a2,a5

FROM AA

WHERE AA.a1a1=(SELECT a1a1 FROM BB WHERE b4>25000);

Subinterogri construite pe mai multe tabeleLegtura dintre tabele

se realizeaz prinsubinterogare (fr ocompunere explicit)

Legtura dintre tabelese realizeaz printr-ocompunere explicit

(JOIN)

Selectarea unor valori din A, pentruo valoare restricionat din B

Page 30: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 30/50

SQLSQL SubInterogriSubInterogri SELECTSELECT în în SELECTSELECT în ..... în .....

 SELECT [domeniu] list selecie câmpuri 

FROM nume tabel_1 ,nume tabel_2

 [WHERE tabel_1 .câmp legtur=tabel_2 .câmp de legtur AND

tabel_1 .câmp legtur=(SELECT câmp de legturFROM nume tabel_2

 [WHERE criteriu de subinterogare ])

SELECT a1a1,a2,a5FROM A,A,BB

WHERE AA.a1a1=BB.a1a1

AND

AA.a1a1=(SELECT

 a1a1 FROM BB WHERE b4>25000);

Subinterogri pentru care a fost construit o compunere

TabelaA

a1 a2 a3 a4 a5 a6

Tabela B

b1  b2 b3 b4 b5 a1

Page 31: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 31/50

SQLSQL SubInterogriSubInterogri ´́cascadatecascadateµ :µ :SELECTSELECT  în în SELECTSELECT  în în SELECTSELECT  în în SELECTSELECT

TabelaAA (Judee)(Judee)

a1a1 a2 a3 a4 a5 a6

Tabela B (Orae)B (Orae)

b1b1  b2 b3 b4 b5 a1

Tabela C (SocietiCom)C (SocietiCom)

c1c1 c2 c3 c4 c5 b1

TabelaD (Facturi)D (Facturi)

d1d1 d2 d3 d4 d5 c1A (Judee)

Aaa

BbbEee

Fff 

Care sunt judeele în care

au fost emise facturi în luna

octombrie 2003 ?

((SELECTSELECT b1 (Cod Postal)b1 (Cod Postal)

FROM CC (SocietiCom)(SocietiCom)

WHERE c1c1 (Cod Fiscal)(Cod Fiscal) ININ

((SELECTSELECT a1 (DenumireJudet)a1 (DenumireJudet)

FROM BB (Orae)(Orae)

WHERE b1(Cod Postal)b1(Cod Postal) ININ

SELECTSELECT a1 (Denumire Jude)a1 (Denumire Jude)FROM AA (Judee)(Judee)

WHERE a1 (DenumireJudet)a1 (DenumireJudet) ININ

(SELECTSELECT c1 (Cod Fiscal)c1 (Cod Fiscal)

FROM D (Facturi)D (Facturi)

WHERE d2d2 (DataFactur)

BETWEEN #01/10/03#

AND #31/10/2003#)))) ))

Page 32: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 32/50

SQLSQL SubInterogriSubInterogri SELECTSELECT în în SELECTSELECT în ..... în .....

Restricionarea subinterogrilor 

Domeniul de obinere a rezultatelor unei subinterogri poate fiinfluenat prin precizarea unuia din cuvintele cheie: ALLALL, ANYANY irespectiv EXISTEXIST . Fiecare predicat (ANY, ALL, EXISTS) poate sfie utilizat i în forma cu negaie ± NOTNOT

Prin ALLALL, ANYANY i EXISTEXIST se utilizeaz un predicat de comparaiecare se aplic rezultatului unei subinterogri

Dac în cele mai multe cazuri se compara un atribut (sau rezultatul

unei expresii) cu o constant, operatorii ALLALL, ANYANY i EXISTEXIST permitcompararea valorilor atributului/expresiei cu un set de tupluri cetocmai a fost extras printr-o subinterogare

Page 33: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 33/50

SQLSQL SubInterogriSubInterogri SELECTSELECT în în SELECTSELECT în ..... în .....TabelaA

a1 a2 a3 a4 a5 a6

SELECT a2 FROM AA

WHERE a4=1AND a5< ALLALL

(SELECT a5 FROM AA

WHERE a4=2);

Restricionarea subinterogrilor prinoperatorul ALLALL

Prin ALLALL se preiau toate rezultatele subinterogrii i, dac acesteaîndeplinesc condiia cerut, se returneaz valoarea logic True

EXEMPLU: se afieaz a2 (numele produselor) pentru care a4=1(de calitatea întâi) i a5 (preul) este mai mic decât preul a5 altuturor a2 (produselor) pentru care A4=2 (de calitatea a 2-a)

 Numele produselor de calitatea I

 pentru care preul este mai mic decât

 preurile produselor de calitatea a II-a

Page 34: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 34/50

SQLSQL SubInterogriSubInterogri SELECTSELECT în în SELECTSELECT în ..... în .....Tabela B

b1  b2 b3 b4 b5 a1

SELECT b1,b2,b3,b4FROM BWHERE b3= ANYANY

(SELECT b3 FROM BWHERE b5=´ABC´ AND b4=2000);

Restricionarea subinterogrilor  prin operatorul ANYANY

ANY/SOMEANY/SOME: are în vedere compararea valorii de ieire asubinterogrii cu fiecare înregistrare din interogarea extern. Dac pentru fiecare înregistrare din interogare exist un rezultat alsubinterogrii, se va returna valoarea logic True. Cuvântul cheieSOME are acelai rol i caracteristici ca ANY

EXEMPLU: se returneaz lista unor elemente (b1, b2, b3, b4) careaparin domeniului precizat de b3 pentru restriciile b5=³ABC´ i b4=2000

Page 35: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 35/50

SQLSQL SubInterogriSubInterogri SELECTSELECT în în SELECTSELECT în ..... în .....Tabela B

b1  b2 b3 b4 b5 a1

SELECT b2,b4FROM BB

WHERE EXISTS(SELECT * FROM BB

WHERE b4 < 2003);

Restricionarea subinterogrilor  prin operatorul EXISTSEXISTS

EXISTSEXISTS: folosete subinterogarea ca pe o condiie, analizând setulde rezultate al acesteia i returnând valoarea F alse dac nu existnici o ieire. Se poate astfel verifica existena anumitor înregistrri icontrola ansamblul rspunsurilor date de interogare.

EXEMPLU: S se verifice dac în cadrul tabelei B exist înregistrri pentru care b4 < 2003

Page 36: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 36/50

SQLSQL SubInterogriSubInterogri SELECTSELECT în în SELECTSELECT în ..... în .....Tabela B

b1  b2 b3 b4 b5 a1

Restricionarea subinterogrilor agregate prin clauza HAVING

În exemplele clasice, predicatele incluse în clauza HAVING, comparau o expresie cu oconstant. În cazul de fa, se vor include în clauza HAVING chiar subinterogri.

 SELECT [domeniu] list selecie câmpuri i/sau funcii agregate

FROM nume tabel

GROUP BY  câmp de grupare

 HAVING criteriu câmp de grupare > / < / >= / <= / <> / = / 

(SELECT ... FROM...GROUP BY);

SELECT Count(*) AS [Numr facturi], b2

FROM BBGROUP BY b1HAVING Count(*) >=

(SELECT Count(*)FROM BB

GROUP BY b2;

Se calculeaz numrul

de elemente b1, cecorespundelementului b2

Se calculeaznumrul de facturice corespundfiecrei zile

Selecteaz numrul deelemente distincte de tip

 b2 (data facturii)

Se numr elementele detip b1 (numr factur),

 pentru fiecare dat (b2)

Page 37: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 37/50

Exemplu:

SELECTAVG( NUMARPRODUSE ) AS MEDIE

FROM(SELECT [Numar Factura], COUNT(*) AS NUMARPRODUSEFROM [Continut Factura]GROUP BY [Numar Factura]);

 FACTURILE ALCROR NR. DE PRODUSE >MEDIA

X

SELECT [Numar Factura], COUNT(*) AS NUMARPRODUSE 

FROM [Continut Factura]GROUP BY [Numr Factura])

HAVING COUNT(*)>   NUMRUL MEDIU DE PRODUSE DE PE O FACTURX

Page 38: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 38/50

SELECT AAUTOR IUTOR I.C NP, AAUTOR IUTOR I.[Nume Prenume], Count(*) AS NR 

FROM AUTOR IAUTOR I

INNER JOIN [AUTOR IAUTOR I--CAR TICAR TI] ON AAUTOR IUTOR I.C NP=[AUTOR IAUTOR I--

CAR TICAR TI].C NPGROUP BY GROUP BY  A AUTORI UTORI  .CNP  .CNP 

HAVING ((Count(*)=(SELECT MAX(NR ) AS MAXIM FR OMHAVING ((Count(*)=(SELECT MAX(NR ) AS MAXIM FR OM

(SELECT CNP, COUNT(*) AS NR  

FR OM [Autori-Carti]

GR OUP BY CNP))));

 AUTORUL CARE A SCRIS CELE MAIMULTE CRI

I. Câte cri a

scris fiecare

autor

II. Numrul maxim de cri scrise

III. Selectarea elementelor de afiat: numele

autorului, CNP i nr. de cri

Page 39: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 39/50

SGBD Access 2000: SQL: UNION

Dac se dorete s se vizualizeze rezultatele mai multor interogriSELECT în acelai timp, prin combinarea ieirilor lor, poate fiutilizat facilitatea UNION a limbajului de interogare SQL.

SELECT lista_campuri FROMSELECT lista_campuri FROM tabela1tabela1UNIONUNION

SELECT list_campuri FROMSELECT list_campuri FROM tabela2tabela2[GROUP BY camp_de_grupare][GROUP BY camp_de_grupare][HAVING criteriul_de_agregare][HAVING criteriul_de_agregare]

[[UNIONUNION SELECT list_campuri FROMSELECT list_campuri FROM tabela3tabela3[GROUP BY camp_de_grupare ][GROUP BY camp_de_grupare ]

[HAVING criteriul_de_grupare]][HAVING criteriul_de_grupare]][[UNIONUNION...]...][ORDER BY camp_criteriu_de_sortare];[ORDER BY camp_criteriu_de_sortare];

Tabelele reunite trebuie s aib aceeai structur.

Page 40: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 40/50

SELECT [Cod Fiscal],[Denumire Client],Localitate,Telefon

FROM ClientiClientiUNIONUNION

SELECT [Cod Fiscal],[Denumire Client],Localitate,TelefonFROM [Clienti AradClienti Arad]ORDER BY Localitate,[Denumire Client];

SGBD Access 2000: SQL: UNION

Page 41: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 41/50

 TRANSFOR MTRANSFOR M funcie agregat AS alias

Instruciune de selecie cu grupare pe linie

PIVOT câmp antet coloan ;

SGBD Access 2000: SQL: CROSSTAB

CR OSSTAB QueryCR OSSTAB Query per mite ca  pe l âng  selectar ea d atelor i e f ectuar ea 

cal culelor î n linie  sau  pr in f unc ii ag r egat,  s  g r upeze î nr egist rr ile  pe 

linie ( antete d e rând ur i) i  pe coloan ( titlur i d e coloan )

Funcia agregat opereaz asupra înregistrrilor, prin definireainstruciunii de selecie;

Instruciunea de selecie servete pentru a specifica antetele de rând alerezultatelor interogrii;

Câmpul antet coloan constituie câmpul sau expresia ce se utilizeazîn definirea antetelor de coloane, pentru setul de rezultate al interogrii.

Page 42: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 42/50

TRANSFOR MTRANSFOR M Sum([Cantitate]*[Pret f]) AS ValoareSELECT Carti.[ Denumir e C ar te]FROM Facturi

INNER JOIN (Carti INNER JOIN [Continut Factura]ON Carti.[Cod ISBN] = [Continut Factura].[Cod ISBN])ON Facturi.[Numar Factura] = [Continut Factura].[Numar Factura]WHERE ((([Continut Factura].Cantitate)>50))

GR OUP BY Carti.[Denumire Carte]GR OUP BY Carti.[Denumire Carte]

PIVOT Month([Data Facturii]);

SQL: CROSSTAB

 TRANSFOR MTRANSFOR M funcie agregat AS alias

Instruciune de selecie cu grupare pe linie

PIVOT câmp antet coloan ;

S se calculezesuma valoric avânzrilor de

carte pe luni

Page 43: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 43/50

SGBD Access 2000: SQL: PARAMETERS

SELECTSELECT Facturi.[Numar Factura], Carti.[Cod ISBN], [Continut

Factura].Cantitate, [Continut Factura].[Pret f], [Cantitate]*[Pret f] ASValoare, [Tastati Procent]*[Valoare]/100AS R educere[Tastati Procent]*[Valoare]/100AS R educereFR OMFR OM FacturiINNER JOININNER JOIN (Carti INNER JOININNER JOIN [Continut Factura] ONON Carti.[CodISBN] == [Continut Factura].[Cod ISBN]) ONON Facturi.[Numar Factura]== [Continut Factura].[Numar Factura]WHER EWHER E (((Facturi.[Numar Factura])==[Tastati Nr_Fact])

ANDAND ((Carti.[Cod ISBN])==[Tastati Cod_ISBN]));

Parameters

 Nume_parametru1 tip de date (dimensiune), Nume_parametru2 tip de date (dimensiune),.......;

Parameters

Reducere Percent,

 Numar de factura LongInteger 

SGBD A 2000 SQL C t b l l

Page 44: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 44/50

 CR EATE TABLECR EATE TABLE nume_tabel nume_tabel 

( nume( nume--atribut1 tip_dat(mrime) [NOT NULL]atribut1 tip_dat(mrime) [NOT NULL]

[,nume[,nume--atribut2 tip_dat(mrime) [NOT NULL]..]atribut2 tip_dat(mrime) [NOT NULL]..][[CONSTRAINT numeCONSTRAINT nume--atribut CHECK (numeatribut CHECK (nume--atribut <condiie>«)atribut <condiie>«)]][CONSTRAINT nume_index] {PRIMARY KEY|UNIQUE|NOT [CONSTRAINT nume_index] {PRIMARY KEY|UNIQUE|NOT  NULL }] NULL }]););

CR EATE TABLECR EATE TABLE Carti 

([C od I S  BN ] Text(15) CONSTRAINT [Cod ISBN] Primary Key,[ Denumir e C ar te] Text(50), NOT NULL[ Data A par i  iei] Date NOT NULL,[S tocul  tipar it ] Number, CONSTRAINT [Stocul tiparit] CHECK 

([Stocul tiparit] BETWEEN 1000AND 3000),

[ P r et  baza] Currency NOT NULL);

SGBD Access 2000: SQL: Crearea tabelelor 

SGBD A 2000 SQL M difi t t ii

Page 45: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 45/50

 ALTER TABLEALTER TABLE nume_tabel nume_tabel 

ADD numenume--atribut tip_dat(mrime) [NOT NULL]atribut tip_dat(mrime) [NOT NULL][CONSTRAINT nume[CONSTRAINT nume--atribut CHECK (numeatribut CHECK (nume--atribut <condiie>«)];atribut <condiie>«)];

ALTER ALTER TABLETABLE Carti 

ADD [Nume coordonator lucrare] Text(25) NOT NULL;

SGBD Access 2000: SQL: Modificarea structurii

SGBD Access 2000: SQL: tergerea unei tabele DR OP TABLEDR OP TABLE nume_tabel nume_tabel  ;;

DR OPDR OP TABLETABLE [C lienti Buzau];

SGBD A 2000 SQL M i l d t l

Page 46: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 46/50

SGBD Access 2000: SQL: Manipularea datelor:Interogri cu aciune de CREARE de tabele

 SELECT [domeniu] (câmp1, câmp2,....)INTOINTO nume tabel  nou

FR OM nume tabel   sur  s

[WHER EWHER E criteriu de adugare a înregistrrilor în tabela nou];

SELECTSELECT [Cod Fiscal], [Denumire Client], Adresa, LocalitateINTOINTO [C lienti d in Bucur esti]FR OMFR OM ClientiWHER EWHER E (Localitate="Bucuresti");

SGBD A 2000 SQL M i l d t l

Page 47: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 47/50

SGBD Access 2000: SQL: Manipularea datelor Interogri cu aciune de ADUGARE de tupluri

 INSER T INTOINSER T INTO nume_tabel (câmp1, câmp2,....)VALUESVALUES (valoar e_1, valoar e_2,..... );

INSER T INTOINSER T INTO [Clienti Arad] ( [Cod Fiscal], [Denumire Client],Adresa, Localitate )VALUESVALUES ("r7 32469","S o f t  I n f o S  A","S t r. N arciselor nr.5"," Ar ad ");

SGBD A 2000 SQL M i l d t l

Page 48: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 48/50

SGBD Access 2000: SQL: Manipularea datelor Interogri cu aciune de ADUGARE de tupluri

 INSER T INTOINSER T INTO nume_tabel_destinaie (câmp1, câmp2,....)SELECT [domeniu] (câmp1, câmp2,....)FR OM nume tabel   sur  s

[WHER EWHER E criteriu de adugare a înregistrrilor în tabela destinaie];

INSER T INTOINSER T INTO [Clienti din Bucuresti] ( [Cod Fiscal], [DenumireClient], Adresa, Localitate )SELECTSELECT [Cod Fiscal],[Denumire Client], Adresa,LocalitateFR OMFR OM [Clienti Arad]WHER EWHER E [Clienti Arad].[Denumire Client]) Like ("*SRL");

SGBD A 2000 SQL M i l d t l

Page 49: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 49/50

SGBD Access 2000: SQL: Manipularea datelor:Interogri cu aciune de TERGERE de tupluri

 DELETE *DELETE *

FR OMFR OM nume_tabel[WHER EWHER E criteriu de tergere a înregistrrilor];

DELETE *DELETE *

FR OMFR OM [Clienti Arad]WHER E Telefon IS NULL;

SGBD Access 2000 SQL Manip larea datelor

Page 50: Curs BD-SQL pentru FABBV an 2

8/7/2019 Curs BD-SQL pentru FABBV an 2

http://slidepdf.com/reader/full/curs-bd-sql-pentru-fabbv-an-2 50/50

SGBD Access 2000: SQL: Manipularea datelor:Interogri cu aciune de MODIFICARE a valorilor 

 UPDATEUPDATE nume_tabelSETSET nume_câmp=valoare_1

[,nume_câmp=valoare_2].....[WHER EWHER E criteriu de actualizare a valorilor tuplurilor];

UPDATEUPDATE CartiSETSET [Pret baza] = [Pret baza]*1.15WHER E (([Denumire Carte])="Baze de date")AND ((Year([Data Aparitiei]))=2005);