In limbajul SQL, implementarea operatorilor relationali se realizeaza in principal prin utilizarea blocului de cerere SELECT.
Pe langa fraza SELECT se mai utilizeaza pentru implementarea operatorilor algebrei relationale si alte comenzi SQL cum ar fi, de exemplu INSERT.
In cele ce urmeaza vom prezenta succint modul de implementare a operatorilor algebrei relationale.
REUNIUNEA a doua tabele R si S (RUS) prezentand aceeasi structura, unde R este formata din n tupluri si S este formata din m tupluri, are ca rezultat o a treia tabela, T avand aceeasi structura cu a tabelelor sursa si continand m+n tupluri.
Conform definitiei tabela T obtinuta in urma realizarii operatorului reuniune va cuprinde atat tuplurile lui R cat si tuplurile lui S.
Fie cele doua tabele Clienti si ClientiNoi (tabela ClientiNoi cuprinde noii clienti creati in cursul zilei curente) definite cu aceeasi structura. Operatorul reuniune se realizeaza in Access prin doua cereri de actiune: o cerere de tip make-table prin care se creeaza noua tabela (numita T in cadrul definitiei reuniunii) TotiClientii, pe baza tabelei Clienti, si o cerere de actiune de tip append-query pe baza tabelei ClientiNoi.
Comenzile SQL corespunzatoare celor doua cereri de actiune sunt:
SELECT CLIENTI.* INTO TOTICLIENTII FROM CLIENTI;
INSERT INTO TOTICLIENTII
SELECT CLIENTINOI.* FROM CLIENTINOI;
O a doua solutie ar consta in utilizarea operatorului union care va returna toate tuplurile din cele doua tabele sursa, Clienti si ClientiNoi, si apoi generarea tabelei TotiClientii care sa stocheze toate tuplurile returnate de operatorul union. Frazele SELECT corespunzatoare sunt:
SELECT * FROM CLIENTI
UNION
SELECT * FROM CLIENTINOI;
SELECT UNION.* INTO TOTICLIENTII FROM [UNION];
INTERSECTIA a doua tabele R si S (RS) prezentand aceeasi structura, genereaza o a treia tabela, T (cu aceeasi structura), continand tuplurile identice apartinand atat lui R cat si lui S.
Pentru exemplificare vom utiliza tabelele Clienti si ClientiDebitori care prezinta aceeasi structura. Implementarea operatorului intersectie se face printr-o fraza SELECT in care se realizeaza un inner join intre cele doua tabele sursa, Clienti si ClientiDebitori:
SELECT Client.*
FROM Clienti INNER JOIN ClientiDebitori ON Clienti.CodClient =ClientiDebitori.CodClient;
Pentru crearea tabelei T se poate executa apoi o cerere de actiune de tip make table avand drept sursa de date cererea construita prin fraza select prezentata mai sus (cerere salvata cu numele Query1):
SELECT Queryl .* INTO T FROM Query1;
DIFERENTA dintre doua tabele R si S avand aceeasi structura (R-S), este reprezentata de tabela T cuprinzand multimea tuplurilor apartinand lui R dar neapartinand lui S.
Implementarea operatorului diferenta se realizeaza construind o cerere de cautare a tuplurilor din tabela Clienti fara corespondent in tabela ClientiDebitori. Fraza SQL corespunzatoare este:
SELECT DISTINCTROW [CLIENTI].[CodClient], [CLIENTI].[NumeClient], [CLIENTI].[Localitate],[CLIENTI].[Adresa],[CLIENTI],[Telefon]
FROM CLIENTI LEFT JOIN ClientiDebitori ON [CLIENTI].[CodClient] = [ClientiDebitori].[CodClient]
WHERE [ClientiDebitori].[CodClient] Is Null;
Pentru crearea tabelei T se poate construi apoi o cerere de actiune de tip make table avand ca sursa de date cererea prezentata mai sus.
PRODUSUL CARTEZIAN a doua tabele R si S (RxS) este reprezentat de tabela T stocand multimea perechilor obtinute prin concatenarea inregistrarilor apartinand lui R cu cele apartinand lui S.
Pentru exemplificare vom folosi tabela Clienti si tabela Produse. Vom construi o cerere de selectie avand drept sursa de date cele doua tabele (nelegate intre ele) si vom cobori in grila de proiectare in randul FIELD atributele NumeClient din tabela Client si Denumire din tabela Produse.
Fraza SELECT corespunzatoare acestei cereri de selectie este:
SELECT CLIENTI.NUMECLIENT, PRODUSE.DENUMIRE FROM CLIENTI, PRODUSE;
Tabela T se poate crea apoi printr-o cerere de actiune de tip make table.
SELECTIA aplicata asupra unei tabele R stocand n tupluri genereaza o noua tabela R1, prezentand aceeasi structura, dar stocand m tupluri (m<=n).
Acest operator se implementeaza prin construirea unei cereri de selectie continand pe randul criteria din grila de proiectare criteriul de selectie dorit. Sa presupunem ca dorim sa extragem din tabela Clienti toate informatiile privind clientii bucuresteni. Fraza select corespunzatoare acestei cereri de selectie este:
SELECT CLIENTI.*
FROM CLIENTI
WHERE CLIENTI.Localitate='Bucuresti';
PROIECTIA aplicata asupra unei tabele R prezentand gradul n va genera o noua tabela Rl prezentand gradul m (m<=n) si stocand acelasi numar de tupluri ca si R. Si de aceasta data implementarea operatorului se va realiza prin construirea unei cereri de selectie dar in randul fields al grilei de proiectare se vor cobori doar o parte din atributele apartinand structurii tabelei sursa de date.
Exemplu: Daca dorim sa cunoastem numele si adresa clientilor, se va construi o cerere de selectie pe tabela Clienti prezentand urmatorul continut:
SELECT CLIENTI.NumeClient, CLIENTI.Adresa FROM CLIENTI;
Consideram necesar sa subliniem faptul ca frazele select permit utilizarea mai multor tabele drept sursa de date (in definitia operatorilor algebrei relationale sursa de date este reprezentata de o singura tabela) si combinarea operatorilor de selectie si proiectie. Proiectia se realizeaza prin precizarea listei atributelor pentru care se intorc valori, iar selectia prin utilizarea clauzei WHERE care specifica criteriul de selectie.
COMPUNEREA (JOIN) se aplica asupra a doua tabele R si S care prezinta in structura lor un atribut comun (numit atribut de jonctiune) si genereaza o noua tabela T cu o structura complexa formata implicit din multimea atributelor tabelelor sursa. Operatorul de compunere se implementeaza prin fraza SELECT atunci cand sursa de date este reprezentata de mai multe tabele. Cel mai utilizat operator de compunere este inner join care presupune ca valorile atributelor de compunere din cele doua tabele sursa sa prezinte realizari comune (egale).
SELECT CLIENTI.NumeClient, COMENZI.NrComanda, COMENZI.DataComanda FROM CLIENTI INNER JOIN COMENZI ON CLIENTl.CodClient=COMENZI. CodClient;
In exemplul prezentat mai sus cererea de selectie returneaza numele clientilor (din tabela Clienti), numarul si data comenzilor din tabela Comenzi, operatorul de compunere fiind un inner join. Pe langa inner join frazele SELECT pot cuprinde si operatori de compunere de tip: left join, right join, self join, theta non-equal.
Lucrarea de verificare Nr. 5.
Raspundeti la urmatoarele intrebari. Acestea trebuie sa fie scurte (cateva randuri) si clare. Fiecare intrebare valoreaza 20 puncte.
1. Care sunt instructiunile de manipulare a datelor in SQL?
2. Cum se creeaza si se intretin tabelele cu instructiuni SQL?
3.Prezentati succint modul de implementare a operatorilor algebrei relationale folosind limbajul SQL
4.Exemplificati operatiile aplicate asupra view-urilor .
Exemplificati modalitatea de modificare a structurii unei tabele
Precizati scopurile pentru care pot fi folosite View -urile.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |