curs baze de date
-
Author
anca-preda -
Category
Documents
-
view
26 -
download
1
Embed Size (px)
description
Transcript of curs baze de date
-
SGBD Access 2013: SQLLimbajul SQL (Structured Query Language) este un limbaj declarativ (neprocedural) prin care 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 .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.)
-
SGBD Access 2013: SQLPe lng manipularea i regsirea datelor, SQL efectueaz i operaii complexe 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 datelor care permit descrierea structurii bazei de date; instruciuni de manipulare a datelor n sensul adugrii, modificrii i tergerii nregistrrilor; instruciuni de selecie a datelor care permit consultarea bazei de date; instruciuni de procesare a tranzaciilor care privesc unitile logice de prelucrare i constituie n fapt, operaii multiple de manipulare a datelor; instruciuni de control al cursorului; instruciuni privind controlul accesului la date.
-
SGBD Access 2013: SQLCuvintele cheie ale vocabularului SQL (fraza SQL) sunt:instruciunile, clauzele, funciile i operatorii. Instruciunile: au cel mai important rol, deoarece determin executarea unei aciuni (SELECT; CREATE; INSERT; DELETE; UPDATE). Clauzele restricioneaz aria valoric a entitilor ce particip la interogare (WHERE; ORDER BY; GROUP BY; HAVING). Funciile mbuntesc capacitile SQL de a manipula datele (Sum; Max; Avg; Count; Iif). Operatorii efectueaz o comparare a valorilor seleciei (=; >; >=, >; >= And; Or; Not; Between; Like; In; .
-
SGBD Access 2013: SQLReguli de sintax ale unei fraze SQL: Orice fraz SQL se va termina cu semnul ; Se utilizeaz punctul (.) ca separator ntre numele tabelei i numele cmpului, atunci cnd o interogare are ca surse de date mai multe tabele (SELECT Materiale.Cod_Material); Se utilizeaz parantezele drepte ([]) pentru a ncadra nume de cmpuri interspaiate sau purttoare de caractere neaceptate de SQL (SELECT Materiale.[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 *
-
SGBD Access 2013: SQL SELECTLimbajul de manipulare a datelor: Interogri (simple) de selecieSELECT [TOP n] [ALL/DISTINCT/DISTINCTROW] list selecie cmpuriFROM nume tabel(e)[WHERE criteriu de selecie][ORDER BY list cmpuri criterii de ordonare {ASC/DESC}];Domeniul determin modalitile de manipulare a nregistrrilor din BD asupra creia opereaz selecia. Domeniul poate fi: ALL (implicit) include toate nregistrrile care ndeplinesc condiiile impuse; DISTINCT elimin nregistrrile care au valori duplicate n cmpurile selectate (se va afia doar o apariie a datei multiple)DISTINCTROW elimin nregistrrile duplicate n ansamblul lor (nu numai pe acelea care au cmpuri duplicate)
-
SGBD Access 2013: SQL SELECTSELECT [ALL/DISTINCT/DISTINCTROW] list selecie cmpuriFROM nume tabel(e)[WHERE criteriu de selecie][ORDER BY list cmpuri criterii de ordonare {ASC/DESC}];Clauza FROM nume tabel precizeaz tabela sau tabelele (sau interogri deja create) din care fac parte cmpurile ce fac obiectul proieciei BD (,)List selecie cmpuri reprezint proiecia BD, cuprinznd toate cmpurile care vor aprea n tabela cu rezultatele interogrii (,)Clauza WHERE precizeaz criteriul de selecie sub forma unei expresii. Clauza este opional i nu opereaz cu funcii totalizatoareClauza ORDER BY precizeaz criteriul de ordonare a nregistrrilor selectate. Fiecare cmp precizat n Clauza ORDER BY constituie o cheie de sortare (sensul sortrii se precizeaz prin ASC (implicit) sau DESC)
-
SGBD Access 2013: SQL SELECT : ExempleSelectarea cmpurilor a1 i a2 din ASELECT DISTINCTROW a1,a2 FROM A;Selectarea (fr dubluri) a lui a1 i a5 pentru care a5> 1000 SELECT DISTINCT a1,a5FROM AWHERE a5>1000;Selectarea (fr dubluri a) lui a5 > 1000 i a3=irSELECT DISTINCT a5FROM AWHERE a5>1000 AND a3=text;Selectarea lui a5 pt care a3 are o rdcin precizatSELECT DISTINCT a5FROM AWHERE a3 LIKE *text;
Tabela Aa1a2a3a4a5a6
-
SGBD Access 2013: SQL SELECT : ExempleSelectarea (fr dubluri a) lui a5 (100,1000)SELECT DISTINCT a5FROM AWHERE a5 NOT BETWEEN 100 AND 1000;Selectarea lui a5 i a rezultatului unui produs dintre nregistrrile tabelei ASELECT DISTINCT a1, a2*a5 AS PRODUSFROM A;SELECT a2,a4,a5 FROM A WHERE a2 IN (1500, 13000, 14000)ORDER BY a2 ASC, a5 DESC;
Tabela Aa1a2a3a4a5a6
-
SGBD Access 2013: SQL SELECT : ExempleSELECT DISTINCTROW Max(a5) AS [a5_Maxim], Min(a5) AS [a5_Minim], Avg(a5) AS [a5_Medie]FROM A;SELECT COUNT(*) AS [Numr de tupluri]FROM A;SELECT a1, a5, a6, IIF(a5>=a6;a5-a6;a6-a5) AS [Rezultat evaluare]FROM AWHERE a2 IS NOT NULL;SELECT funcie_agregat1 AS [Alias], ...2,...FROM nume tabel(e)WHERE criteriu de selecieObs. n lipsa opiunii GROUP BY, la utilizarea funciilor agregat, rezultatul va conine o singur linie
Tabela Aa1a2a3a4a5a6
-
SGBD Access 2013: SQL SELECT Interogri (complexe) de selecie i grupareSELECT [domeniu] [list selecie],[funcie agregat(nume cmp) AS alias]FROM nume tabel(e)[WHERE criteriu de selecie][GROUP BY cmp(uri) de grupare][HAVING criteriul de grupare][ORDER BY list cmpuri criterii de ordonare {ASC/DESC}];Funciile de grup (agregat) permit construirea unor interogri SQL prin care utilizatorul poate s efectueze diverse calcule pentru grupuri de nregistrri care au cmpuri de aceeai valoare. List selecie se refer la una sau mai multe funcii agregate care au ca argumente nume de cmpuri ale tabelei(lor) bazei de date. AS ALIAS asociaz un pseudonim aferent rezultatului unui calcul simplu sau unei funcii agregat.
-
SGBD Access 2013: SQL SELECT Interogri (complexe) de selecie i grupareClauza GROUP BY precizeaz cmpul sau cmpurile pe baza crora se va efectua gruparea nregistrrilor. ( cu linia de Total n QBE)Clauza GROUP BY formeaz grupuri de tupluri ale unei relaii, pe baza valorilor comune luate de un atribut.Rezultatul unei fraze SELECT ce conine clauza GROUP BY se obine prin regruparea tuturor liniilor din tabelele enumerate n FROM, extrgndu-se cte o singur apariie pentru fiecare valoare distinct a coloanei sau a grupului de coloaneHAVING se refer la restricia aplicat cmpului de grupare. Clauza WHERE acioneaz nainte de gruparea nregistrrilor, n timp ce HAVING activeaz restricia dup gruparea acestora.
-
SGBD Access 2013: SQL SELECTInterogri (complexe) de selecie i grupareSELECT nrfactura, SUM(cant*pret) AS valoareFROM [continut factura]GROUP BY nrfactura;1.Se ordoneaz liniile tabelei dup nrfactura;2. Se constituie un grup pentru fiecare valoare distinct aferent atributului nrfactura;3. Se aplic funcia agregat SUM asupra grupurilor;4. Se obine rezultatul, al crui numr de linii coincide cu valorile distincte ale atributului nrfactura
Tabela A (Coninut Factur)nrfacturaCodpcantpret100
100
10030525125000208102000008530100000101
10120882000007410300000103
103905500007425300000
-
SGBD Access 2013: SQL SELECT: JOINSELECT [domeniu] list selecie cmpuri din tabele diferiteFROM nume tabele[WHERE criteriu de compunere [i de selecie][ORDER BY list cmpuri criterii de ordonare {ASC/DESC}];LMD: Interogri de asociere (jonciune / compunere) internCompunerile echivalente (EchiCompunerile) -> utilizeaz clauza WHERE (pt selecia nregistrrilor) asociat cu o egalitate a valorilor n cmpurile de legtur. A compus cu B i A compus cu cu CSELECT A.a1, A.a2, B.b1, C.c1, C.c3FROM A, B, CWHERE A.a1=B.a1 AND A.a1=C.a1ORDER BY C.c3;SELECT A.a1, B.b2* B.b3 AS TotalFROM A, BWHERE A.a1=B.a1 AND A.a5>=10000;
Tabela Aa1a2a3a4a5a6
Tabela Bb1b2b3b4b5a1
Tabela Cc1c2c3c4C5a1
-
Exemple:SELECT Facturi.[Numar Factura], Facturi.[Data Facturii], Facturi.[Cod Fiscal],[Continut Factura].[Cod ISBN], [Continut Factura].Cantitate, [Continut Factura].[Pret f], [Cantitate]*[Pret f] AS ValoareFROM Facturi,[Continut Factura]WHERE Facturi.[Numar Factura] = [Continut Factura].[Numar Factura];Compunerea a 2 tabele (WHERE)
-
Exemple:Compunerea a 3 tabele (WHERE)SELECT Facturi.[Numar Factura], Facturi.[Data Facturii], [Continut Factura].Cantitate, [Continut Factura].[Pret f],[Cantitate]*[Pret f] AS Valoare, Clienti.[Cod Fiscal], Clienti.[Denumire Client],FROM Facturi, [Continut Factura],ClientiWHERE Facturi.[Numar Factura]=[Continut Factura].[Numar Factura] AND Clienti.[Cod Fiscal] = Facturi.[Cod Fiscal];
-
SGBD Access 2013: SQL SELECT: JOINO compunere intern (INNER) sau echivalent (echicompunere) este aceea n care liniile unui tabel sunt combinate cu liniile altui tabel, rezultnd un numr total de linii egal cu produsul numrului de linii din fiecare tabel (cazul 1 din Join Properties).LEFT OUTER JOIN (1n) include toate nregistrrile din tabela A (cardinalitate 1) i numai acele nregistrri din tabela B (cardinalitate n) pentru care valorile atributelor cheie (a1) sunt egale (cazul 2 din Join Properties).RIGHT OUTER JOIN (1n) include toate nregistrrile din tabela B (cardinalitate n) i numai acele nregistrri din tabela A (cardinalitate 1) pentru care valorile atributelor cheie (a1) sunt egale (cazul 3 din Join Properties).
Tabela Aa1a2a3a4a5a6
Tabela Bb1b2b3b4b5a1
-
SGBD Access 2013: SQL SELECT : JOINSELECT [domeniu] list selecie cmpuri din tabele diferiteFROM nume tabel_1{INNER/LEFT OUTER/RIGHT OUTER } JOIN nume tabel_2ON criteriu asociere[WHERE criteriu de selecie][ORDER BY list cmpuri criterii de ordonare {ASC/DESC}];SELECT A.a5, B.b3, (A.a5*B.b3) AS [Produs]FROM AINNER JOIN B ON A.a1=B.a1;
Tabela Aa1a2a3a4a5a6
Tabela Bb1b2b3b4b5a1
Tabela Cc1c2c3c4c5b1
-
Exemple: SELECT Facturi.[Numar Factura], Facturi.[Data Facturii], Facturi.[Cod Fiscal], [Continut Factura].[Cod ISBN], [Continut Factura].Cantitate, [Continut Factura].[Pret f], [Cantitate]*[Pret f] AS ValoareFROM Facturi INNER JOIN [Continut Factura] ON Facturi.[Numar Factura] = [Continut Factura].[Numar Factura];Compunerea a 2 tabele (INNER)
- Exemple: SELECT Facturi.[Numar Factura], [Continut Factura].Cantitate, [Continut Factura].[Pret f], [Cantitate]*[Pret f] AS Valoare, IIf([Valoare]