0% found this document useful (0 votes)
42 views6 pages

Baze Date

The document discusses views in SQL. It provides examples of creating views from tables to select, group, and calculate specific fields. Views behave like tables but do not actually store data. The summary discusses how views can be used, updated, and deleted, with some restrictions compared to base tables.

Uploaded by

Radutu Gabriel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views6 pages

Baze Date

The document discusses views in SQL. It provides examples of creating views from tables to select, group, and calculate specific fields. Views behave like tables but do not actually store data. The summary discusses how views can be used, updated, and deleted, with some restrictions compared to base tables.

Uploaded by

Radutu Gabriel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
You are on page 1/ 6

VEDERI

O vedere este un tabel virtual format din coloane si linii care pot fi actualizate si in care pot sa se faca inserari si eliminari
ca intr-un tablel de baza. Este un tablel logic care nu stocheaza date. Vederile permit programatorului SQL sa creeze
reprezentari ale datelor care pot fi diferite de tabele de baza. Ele se comporta ca niste tabele si in majoritatea cazurilor pot
fi utilizate pe post de tabele. Vederile sunt dinamice intodeauna afiseaza informatiile din tabelele curente. Atunci cand
tabelele de baza ale vederii sunt actualizate ,modificarile se reflecta instantaneu in vedere. Dupa ce ati creat vederea,
puteti folosi urmatoarele comenzi SQL pentru a face referire la acestea:
SELECT, INSERT, UPDATE, DELETE.
Crearea unei vederi

CREATE VIEW Date_stud


AS SELECT * FROM student
SELECT *
FROM Date_stud
WHERE Nume like 'Po%'
CREATE VIEW Date_stud_M
AS
SELECT * FROM student
WHERE Sex in ('M', 'm')
SELECT *
FROM Date_stud_M
WHERE Stare_civila='C'
CREATE VIEW Medii(NrLeg, Student, Grupa, Media,Nr-ex)
AS
SELECT S.NrLeg, Nume+' '+Initiala+'.'+Prenume, Grupa, AVG(Nota), count(*)
FROM Student AS S,Catalog AS C
WHERE S.NrLeg=C.NrLeg
GROUP BY S.NrLeg, Nume+' '+Initiala+'.'+Prenume,Grupa

SELECT *
FROM Medii
SELECT *
FROM Medii
WHERE Media>7.5
CREATE VIEW Note_stud AS
SELECT s.NrLeg, Nume+' '+Initiala+'.'+Prenume student , Grupa, Denumire, Nota
FROM student AS s,Catalog AS c, Discipline AS d
WHERE s.NrLeg=c.NrLeg AND c.cod_disciplina=d.Cod_disciplina
SELECT *
FROM Note_stud
SELECT *
FROM Note_stud
WHERE Denumire LIKE 'baze de date%'
SQL plaseaza cateva restrictii la folosirea instructiunii SELECT pentru a formula o
vedere. Urmatoarele doua reguli sunt valabile atunci cand folositi instructiunea amintita:
Nu puteti folosi operatorul UNION
Nu puteti folosi clauza ORDER BY
Eroare - la crearea unei vederi nu puteti folosi in SELECT clauzele ORDER BY si UNION
CREATE VIEW Note_stud_err
AS
SELECT S.NrLeg, Nume+' '+Initiala+'.'+Prenume Student,
Grupa, Denumire, Nota
FROM Student AS S,catalog AS c, Discipline AS d
WHERE S.NrLeg=c.NrLeg AND c.Cod_disciplina=d.Cod_disciplina
ORDER BY S.NrLeg
CREATE VIEW Medii_Bursieri
AS
SELECT s.NrLeg, Nume+' '+Initiala+'.'+Prenume Student, Grupa, AVG (Nota)
Media
FROM Student AS s,Catalog AS C
WHERE s.NrLeg=C.NrLeg
GROUP BY s.NrLeg, Nume+' '+Initiala+'.'+Prenume,Grupa
HAVING AVG(Nota) >7.5

SELECT *
FROM Medii_Bursieri
CREATE VIEW Varste
AS
SELECT NrLeg, Nume, Prenume, Datediff(year,Data_nastere,getdate()) Varsta
FROM Student
SELECT *
FROM Varste
Modificarea datelor folosind vederile
Se folosesc comenzile UPDATE, INSERT si DELETE
CREATE VIEW note_catalog
AS
SELECT *
FROM catalog
SELECT *
FROM note_catalog
Scade 1 punct din toate notele din vederea Note_catalog
UPDATE Note_catalog
SET Nota=Nota-1
DELETE FROM Note
WHERE Nr_Leg='200'
Scade un punct la toate notele studentilor cu NrLeg par
UPDATE Note1
SET Nota=Nota-1
WHERE Nr_Leg%2=0

SELECT *
FROM note1
INSERT INTO Note1 VALUES('120',8)
Eroare pt ca in Note nu pot introduce NULL la Cod_disciplina
CREATE VIEW Note2 AS
SELECT Nr_Leg, Nota, id_dis
FROM Note

SELECT * FROM Note2


INSERT INTO Note2 VALUES('120',8,'1')
SELECT *
FROM Note
Probleme care apar la modificarea datelor folosind vederile
Deoarece ceea ce vedeti intr-o vedere poate fi un set de date dintr-un grup de tabele,
modificarea datelor in tabelele de baza nu este totdeauna la fel de directa. In
continuarea va este prezentata o lista care contine cele mai obisnuite lucruri pe care
trebuie sa le cunoasteti atunci cand lucrati cu o vedere:
Instructiunile DELETE nu sunt permise in vederi ale tabelelor multiple
Instructiunea INSERT nu este permisa decat daca toate coloanele cu atributul NOT
NULL folosite in tabelul de baza sunt incluse in vedere. Aceasta se datoreaza faptului ca
procesorul SQL nu cunoaste ce valori sa insereze intr-o coloana NOT NULL.
Daca inserati sau actualizati inregistrari intr-o vedere a unei uniri, toate inregistrarile care
sunt actualizate trebuie sa apartina aceluiasi tabel fizic
Daca folositi clauza DISTINCT pentru crearea unei vederi, nu mai puteti sa efectuati
actualizari sau inserari de inregistrari in cadrul vederii respective
O coloana virtuala (o coloana care este rezultatul unui calcul sau al unei expresii) nu
poate fii actualizata
Stergerea unei vederi
DROP VIEW note1 SELECT *
FROM note1
acum eroare pt vederea Note1 s-a sters
Crearea unei vederi cu notele mai mari decat 5
CREATE VIEW Note3 AS
SELECT *
FROM note
WHERE Nota>5
SELECT *
FROM note3
Crearea unei vederi cu notele studentilor a caror nume se termina in 'escu'
CREATE VIEW note2

AS
SELECT C.*
FROM student s, Catalog C

WHERE S.NrLeg=C.NrLeg and s.Nume like '%escu'


SELECT *
FROM note2
Crearea unei vederi cu notele >5 ale studentilor cu numele ce se temina in 'escu'
CREATE VIEW note4
AS
SELECT * FROM note2
WHERE Nota in (SELECT Nota FROM note1)
SELECT Nume, Prenume,n.*
FROM Student s, note3 n
Where s.NrLeg=n.Nr_Leg
SELECT *
FROM note4
ORDER BY NrLeg
CREATE VIEW Medii1 AS
SELECT s.NrLeg, Nume+' '+Initiala+' '+Prenume student,Grupa,Nota FROM student s,
Catalog C
WHERE s.NrLeg=C.NrLeg
SELECT * FROM Medii1
ORDER BY NrLeg, student,Grupa
COMPUTE AVG(Nota), Count(NrLeg) BY NrLeg, student,Grupa

You might also like