Sunteți pe pagina 1din 21

SQL

Structured Query Language

V. SGBD Access : SQL: UNION


Dac se dorete vizualizarea rezultatelor mai multor interogri SELECT n acelai timp, prin combinarea ieirilor lor, se utilizeaz facilitatea UNION a limbajului de interogare SQL. SELECT lista_campuri FROM tabel_1 [GROUP BY camp_de_grupare] [HAVING criteriul_de_agregare] UNION SELECT list_campuri FROM tabel_2 [GROUP BY camp_de_grupare] [HAVING criteriul_de_agregare] [UNION SELECT list_campuri FROM tabel_3 [GROUP BY camp_de_grupare ] [HAVING criteriul_de_grupare]] [UNION...] [ORDER BY camp_criteriu_de_sortare]; Tabelele reunite trebuie s aib aceeai structur.

SGBD Access : SQL: UNION


SELECT [Cod Fiscal],[Denumire Client],Localitate,Telefon FROM Clienti UNION SELECT [Cod Fiscal],[Denumire Client],Localitate,Telefon FROM [Clienti Arad] ORDER BY Localitate,[Denumire Client];

VI. SGBD Access : SQL: CROSSTAB


Transform permite ca pe lng selectarea datelor i efectuarea calculelor n linie sau prin funcii agregat, s grupeze nregistrrile pe linie (antete de rnduri) i pe coloan (titluri de coloan)

TRANSFORM funcie agregat AS alias Instruciune de selecie cu grupare pe linie PIVOT cmp antet coloan ;
Funcia agregat opereaz asupra nregistrrilor, prin definirea calculului aplicat elementelor de grup;
Instruciunea de selecie servete pentru a specifica antetele de rnd ale rezultatelor interogrii; Cmpul antet coloan constituie cmpul sau expresia ce se utilizeaz n definirea antetelor de coloane, pentru setul de rezultate al interogrii.

Exemplul 1: TRANSFORM Total cantitate facturata pe fiecare factura din fiecare carte livrata

TRANSFORM Sum([Continut Factura].Cantitate) AS SumaCantitate SELECT [Continut Factura].NrFact FROM [Continut Factura] GROUP BY [Continut Factura].NrFact PIVOT [Continut Factura].Codisbn;

Exemplul 2
TRANSFORM Sum([Cantitate]*[Pretf]) AS Valoare SELECT Carti.TITLU FROM Facturi INNER JOIN (Carti INNER JOIN [Continut Factura] ON Carti.[CodISBN] = [Continut Factura].[CodISBN]) ON Facturi.[NRFACT] = [Continut Factura].[NRFACT] WHERE ((([Continut Factura].Cantitate)>5)) GROUP BY Carti.[TITLU] PIVOT Month([DataFACT]); S se calculeze suma valoric a vnzrilor de carte pe luni

SQL: CROSSTAB
TRANSFORM funcie agregat AS alias Instruciune de selecie cu grupare pe linie PIVOT cmp antet coloan ;

TRANSFORM Sum([Cantitate]*[Pret f]) AS Valoare SELECT Carti.[Denumire Carte] 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)) GROUP BY Carti.[Denumire Carte] PIVOT Month([Data Facturii]); S se calculeze suma valoric a vnzrilor de carte pe luni

VII. SGBD Access : SQL: PARAMETERS SELECT facturi.nrfact, facturi.datafact, facturi.codfiscal, [continut factura].codisbn, [continut factura].cantitate, [continut factura].pretf, [continut factura].cantitate*[continut factura].pretf AS Valoare, [Tastati Procent]*[Valoare]/100 AS Reducere FROM facturi INNER JOIN [continut factura] ON facturi.nrfact=[continut factura].nrfact WHERE [continut factura].NRFACT=[TASTATI Nr_Fact];

VII. SGBD Access : SQL: PARAMETERS


SELECT Facturi.[Numar Factura], Carti.[Cod ISBN], [Continut Factura].Cantitate, [Continut Factura].[Pret f], [Cantitate]*[Pretf] AS Valoare, [Tastati Procent]*[Valoare]/100 AS Reducere 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 ((Facturi.[Numar Factura]=[Tastati Nr_Fact]) AND (Carti.[Cod ISBN])=[Tastati Cod_ISBN])); Parameters Nume_parametru1 tip de date (dimensiune), Nume_parametru2 tip de date (dimensiune),.......; Parameters Reducere Percent, Numar_factura LongInteger

VIII . SGBD Access : SQL: Manipularea datelor: 1. Interogri cu aciune de CREARE de tabele - (Maketable)

SELECT [domeniu] (cmp1, cmp2,....) INTO nume tabel nou FROM nume tabel surs [WHERE criteriu de adugare a nregistrrilor n tabel nou];

SELECT [Cod Fiscal], [Denumire Client], Adresa, Localitate INTO [Clienti din Bucuresti] FROM Clienti WHERE (Localitate="Bucuresti");

EXEMPLUL 2

SELECT FACTURI.[NR-FACTURA], FACTURI.[COD-CL], FACTURI.[CODMARFA], FACTURI.CANTITATE, FACTURI.PRET, FACTURI.DATA INTO [FACTURI-NOI] FROM FACTURI;

SGBD Access : SQL: Manipularea datelor 2. Interogri cu aciune de ADUGARE de tupluri INSERT INTO nume_tabel (cmp1, cmp2,....) VALUES (valoare_1, valoare_2,.....); INSERT INTO [Clienti Arad] ( [Cod Fiscal], [Denumire Client], Strada, Localitate ) VALUES ("r732469","SoftInfo SA","Str. Narciselor nr.5","Arad");

SGBD Access : SQL: APPEND Interogri cu aciune de ADUGARE de tupluri INSERT INTO nume_tabel_destinaie (cmp1, cmp2,....) SELECT [domeniu] cmp1, cmp2,.... FROM nume tabel surs [WHERE criteriu de adugare a nregistrrilor n tabela destinaie]; INSERT INTO [Clienti din Bucuresti] ( [Cod Fiscal], [Denumire Client], Adresa, Localitate ) SELECT [Cod Fiscal],[Denumire Client], Adresa,Localitate FROM [Clienti Arad] WHERE [Clienti Arad].[Denumire Client] Like ("*SRL");

EXEMPLU 2

APPEND INSERT INTO FACTURI ( [NR-FACTURA], [COD-CL], [COD-MARFA], CANTITATE, PRET, DATA ) SELECT [FACTURI-NOI].[NR-FACTURA], [FACTURINOI].[COD-CL], [FACTURI-NOI].[COD-MARFA], [FACTURI-NOI].CANTITATE, [FACTURI-NOI].PRET, [FACTURI-NOI].DATA FROM [FACTURI-NOI] WHERE ([facturi-noi].[COD-MARFA]=2) AND ([FACTURI-NOI].DATA:>#3/3/2012#);

EXEMPLUL 3

INSERT INTO Personal ( marca, nume, functia, salariu, [data-ang], codlm ) SELECT Personal1.marca1, Personal1.nume1, Personal1.functia1, Personal1.salariu1, Personal1.[dataang1], Personal1.codlm1 FROM Personal1;

SGBD Access : SQL: Manipularea datelor: 3. Interogri cu aciune de TERGERE de tupluri DELETE * FROM nume_tabel [WHERE criteriu de tergere a nregistrrilor]; DELETE * FROM [Clienti Arad] WHERE Telefon IS NULL;

DELETE DELETE FACTURI.[NR-FACTURA] FROM FACTURI WHERE (FACTURI.[NR-FACTURA]=212);

SGBD Access : SQL: Manipularea datelor: 4. Interogri cu aciune de MODIFICARE a valorilor UPDATE nume_tabel SET nume_cmp1=valoare_1[,nume_cmp2=valoare_2]..... [WHERE criteriu de actualizare a valorilor tuplurilor];

UPDATE Carti SET [Pret baza] = [Pret baza]*1.15 WHERE (([Denumire Carte])="Baze de date") AND ((Year([Data Aparitiei]))=2009);

UPDATE [facturi-noi] SET PRET = pret*0.25,CANTITATE=CANTITATE/2 WHERE ([cod-cl]>1);

STERGERERE TABELE SI BAZE DE DATE

tergerea tabelelor dintr-o baz de date DROP TABLE nume_tabel; Exemplu: tergerea tabelei Student: DROP TABLE Student ; tergerea unei baze de date DROP DATABASE <nume baza de date>; DROP DATABASE BAZACLIENTI;

S-ar putea să vă placă și