Documente Academic
Documente Profesional
Documente Cultură
1_Test Demo BD
4. Care dintre urmatoarele instructiuni este folosita pentru stergerea unei baze
de date?
Selectați răspunsul corect:
a) TRUNCATE DATABASE Nume_Baza_de_Date
b) DELETE DATABASE Nume_Baza_de_Date
c) ERASE DATABASE Nume_Baza_de_Date
d) Niciuna dintre variante nu este corecta.
2_Test Demo Tipuri de date
b) NrPlata - int
DataPlata - date
SumaPlatita - money
Observatii - nvarchar(100)
c) NrPlata - int
DataPlata - int
SumaPlatita - date
Observatii – int
d) NrPlata - int
DataPlata - money
SumaPlatita - date
Observatii - nvarchar(100)
3_Test Demo Tabele
Sintaxa
ALTER TABLE Contract
ADD CONSTRAINT FK_Contract
FOREIGN KEY (IdClient)
REFERENCES Client(IdClient)
ON UPDATE NO ACTION
ON DELETE CASCADE
Are ca efect:
Selectați răspunsul corect:
a) Definirea cheii externe in tabelul Contract pentru care se aplică
restricţia de integritate referenţială
b) Definirea cheii externe in tabelul Contract pentru care se realizeaza
actualizarea in cascada
c) Definirea cheii externe in tabelul Client pentru care se aplică restricţia de
integritate referenţială
d) Definirea cheii externe in tabelul Contract pentru care nu se aplică restricţia
de integritate referenţială
In cazul tabelelor
Contract(NrContract,DataContract,DataFinalizare,Valoare, TipContract,
CodClient)
Client (CodClient, DenumireClient)
adaugarea restrictiei de integritate referentiala pentru campul CodClient se
realizeaza astfel:
Selectați răspunsul corect:
a) ALTER TABLE Contract
ADD FOREIGN KEY (Codclient)
REFERENCES client(Codclient)
b) CREATE TABLE Contract
ADD CONSTRAINT FK_CodClient FOREIGN KEY (Codclient)
REFERENCES client(Codclient)
a) Prima
b) Ultima
c) Anterior clauzei SELECT
d) Depinde de structura si complexitatea sintaxei
afiseaza:
Selectați răspunsul corect:
a.)Nr1 Nr2
3 3
b.)Nr1 Nr2
3 2
c.)Nr1 Nr2
2 3
d.)Nr1 Nr2
2 2
Expresia ROUND (15.78,0,1) va afisa
Selectați răspunsul corect:
a) Eroare
b) 16
c) 15
d) 15,78
are ca efect
Selectați răspunsul corect:
a) realizarea unui declansator (trigger) ce nu permite adaugarea in tabela
Colaborator a inregistrarilor pentru care valoarea atributului Cod are
un numar de caractere egal cu 3
b) realizarea unui declansator (trigger) ce nu permite adaugarea in tabela
Colaborator a inregistrarilor pentru care valoarea atributului Cod are mai
mult de 3 caractere
c) afisarea unui mesaj de eroare
d) realizarea unui declansator (trigger) ce nu permite adaugarea in tabela
Colaborator a inregistrarilor pentru care valoarea atributului Cod are mai
putin de 3 caractere
Executia sintaxei urmatoare
are ca efect
Selectați răspunsul corect:
a) realizarea unui declansator (trigger) ce nu permite miscorarea salariilor in
cadrul tabelei Colaborator.
b) afisarea unui mesaj de eroare
c) realizarea unui declansator (trigger) ce nu permite modificarea salariilor in
cadrul tabelei Colaborator.
d) realizarea unui declansator (trigger) ce nu permite majorarea salariilor
in cadrul tabelei Colaborator.
are ca rezultat:
Selectați răspunsul corect:
a) Realizarea unui obiect de tip View SumaTotalaTipPlata
b) Afisarea valorilor totale pe tipuri de plata ordonate in functie de valoarea
totala
c) Afisarea valorilor totale pe tipuri de plata
d) Eroare
Crearea unui view pentru selectarea tuturor inregistrarilor din tabelul Plati se face
folosind urmatoarea instructiune:
Selectați răspunsul corect:
CREATE VIEW InregistrariPlati
AS
SELECT *
FROM Plati
CREATE VIEW InregistrariPlati
AS
BEGIN
SELECT *
FROM Plati
END
CREATE VIEW InregistrariPlati
(
SELECT *
FROM Plati
)
CREATE VIEW InregistrariPlati
SELECT *
FROM Plati
Urmatoarea sintaxa
CREATE TYPE CNP
FROM char(13) NOT NULL
are ca efect
Selectați răspunsul corect:
a) Definirea tipului de data personalizat CNP
b) Redefinirea tipului CHAR(13)
c) Definirea tabelului CNP
d) Niciuna din variantele precedente nu este corecta
Pentru declararea unei variabile de tip tabel ce contine doua coloane TipPlata si
SumaTotala se va folosi urmatoarea sintaxa:
Selectați răspunsul corect:
a) Declare @VariabilaTabel TABLE
(TipPlata nvarchar(50),
SumaTotala money)
b) Create @VariabilaTabel TABLE
(TipPlata nvarchar(50),
SumaTotala money)
c) Create @VariabilaTabel TABLE
(TipPlata nvarchar(50),
SumaTotala money)
d) Declare Table @Variabila TABLE
(TipPlata nvarchar(50),
SumaTotala money)
Pentru declararea unei variabile de tip tabel ce contine doua coloane
NumarComanda si ValoareComanda se va folosi urmatoarea sintaxa:
Selectați răspunsul corect:
a) Declare @VariabilaTabel TABLE
(NumarComanda bigint,
ValoareComanda money)
b) Create @VariabilaTabel TABLE
(NumarComanda bigint,
ValoareComanda date)
c) Declare Table @Variabila TABLE
(NumarComanda bigint,
ValoareComanda money)
d) Create @VariabilaTabel TABLE
(NumarComanda date,
ValoareComanda money)
Pentru declararea unei variabile @An si atribuirea valorii 2018 se va folosi
urmatoarea sintaxa:
a) DECLARE @An date
SET @An=2018
b) DIM @An int
@An=2018
c) DECLARE @An int
SET @An=2018
d) Declare @An int
@An=2018
va afisa:
Selectați răspunsul corect:
a.)Valoarea variabilei este 1
b.)NrPlata DataPlata SumaPlatita
1 1-1-2013 500
Se considera tabelul
Plati (IdPlata, DataOraPlata, TipPlata, SumaPlatita)
Incasari (IdIncasare, DataOraIncasare,TipIncasare, SumaIncasata)
Completați casetele următoare (cu un singur cuvânt) pentru a realiza o procedura
stocată care afișează lista plăților ulterioare unei date introduse ca parametru.
Se considera tabelul
Plati(IdPlata,DataOraPlata,TipPlata,SumaPlatita)
Completați casetele următoare (cu un singur cuvânt) pentru a realiza o procedura
stocată care returnează (parametru ieșire) numărul plaților ulterioare unei date
introduse ca parametru.
SELECT dbo.SporVechime(20)
Se consideră tabelele
Completați codul TSQL următor pentru a realiza o funcție tabelara pentru a afișa
numărul total de bonuri de casă realizate de fiecare vânzător pentru care valoarea
totală a vânzărilor depășește 100.
CREATE FUNCTION FunctieTabelara ()
RETURNS @t TABLE (MarcaVanzator int, NumarBonuriCasa int)
AS
BEGIN
INSERT INTO @t
SELECT MarcaVanzator, COUNT (BonuriCasa.NrBonCasa) as NR
FROM ProduseVandute INNER JOIN BonuriCasa
ON ProduseVandute.NrBoncasa=BonuriCasa.NrBonCasa
GROUP BY MarcaVanzator
HAVING SUM(Cantitate*pretvanzare) >100
RETURN
END
DECLARARE
DESCHIDERE
ACCESARE Inregistrari
INCHIDERE
ELIBERARE MEMORIE
d) Va afișa o eroare
e)
Idplata DataPlata SumaPlatita
3 4/4/2018 100
Se consideră tabelul
Colaborator (Cod, Nume, IdDepartament, DataNasterii)
Departament (IdDepartament, Denumire)
Completați următorul cod SQL pentru a se realiza un declanșator care să nu
permită ștergerea colaboratorilor care lucrează în departamentul Contabilitate.
Se considera tabelele
Contract (Numar, Data, Valoare, TipContract, CodClient)
Client (CodClient , Denumire, Oras)
Completați fraza SQL următoare pentru a se modifica orașul din Bucuresti în
București, cu transfer a înregistrărilor modificate în tabelul arhiva_client.
UPDATE Client
SET Oras='București'
OUTPUT DELETED.* INTO arhiva_client
WHERE Oras='Bucuresti'
Se consideră tabelele
Completați codul TSQL următor pentru a realiza o funcție tabelara pentru a afișa
produsele aferente unui nr de bon de casa ce se va introduce de la tastatura.
CREATE FUNCTION (@NrBonCasa int)
RETURNS TABLE
AS
RETURN
(Select *
FROM ProduseVandute
WHERE NrBonCasa=@NrBonCasa
)
Se dau tabelele:
Facultate (IdFacultate, Denumire, CodUniversitate).
Universitate(CodUniversitate, Denumire, )
INSERT INTO
SELECT AVG(Pret), CodProdus
FROM ContinutComanda
GROUP BY CodProdus
INSERT INTO
cu
INSERT INTO #tabel
FROM ContinutComanda
cu
FROM #tabel
GROUP BY CodProdus
cu
ORDER BY CodProdus
Se dorește realizarea unui tabel pentru evidența analizelor medicale ce va conține
următoarele câmpuri: CodAnaliza, DenumireAnaliza, Descriere,
DataAdaugareInSistem, ValoareMinima, ValoareMaxima
Care dintre următoarele variante privind tipurile de date o considerați corectă ?
a.CodAnaliza - int
DenumireAnaliza - nvarchar(100)
Descriere - nvarchar(100)
DataAdaugareInSistem - money
ValoareMinima - int
ValoareMaxima - int
b.CodAnaliza - int
DenumireAnaliza - nvarchar(100)
Descriere - nvarchar(200)
DataAdaugareInSistem - date
ValoareMinima - money
ValoareMaxima - money
c.CodAnaliza - int
DenumireAnaliza - date
Descriere - nvarchar(1)
DataAdaugareInSistem - date
ValoareMinima - int
ValoareMaxima - int
d.CodAnaliza - int
DenumireAnaliza - date
Descriere - nvarchar(1)
DataAdaugareInSistem - date
ValoareMinima - money
ValoareMaxima – money
Execuția secvenței de cod SQL va gera o bucla infinita care va dubla de mai multe
ori sumele plătite.
Execuția secvenței de cod SQL va genera dublarea, doar o singura data, a sumelor
plaților
b.
Nr1 Nr2 Nr3
----------- ----------- -----------
344
c.
Nr1 Nr2 Nr3
----------- ----------- -----------
433
d.
Nr1 Nr2 Nr3
----------- ----------- -----------
443
a.NrSerieFactura-char(10)
DataFactura - date
SumaFactura- date
CodClient – money
b.NrSerieFactura- varchar(50)
DataFactura - date
SumaFactura- money
CodClient – int
c.NrSerieFactura-int
DataFactura - money
SumaFactura- int
CodClient - date
d.NrSerieFactura-int
DataFactura - date
SumaFactura- money
CodClient - varchar(10)
e.NrSerieFactura-date
DataFactura - date
SumaFactura- nvarchar(10)
CodClient – int
Care va fi rezultatul execuției codului TSQL următor
e.DELETE Client
WHERE Localitate='Bucuresti'
Se considera tabelul
Contract(Nr, DataInceput, DataSfarsit, Valoare)
Completați casetele următoare (cu un singur cuvânt) pentru a realiza o procedura
stocată care afișează lista contractelor cu valoarea mai mare decât o valoare
introdusă ca parametru.
CREATE PROC ListaContracte @Valoare Money
AS
SELECT * FROM Contract
WHERE Valoare>=@Valoare
Completați codul SQL următor (cu un singur cuvânt) pentru declararea unei
variabile @TAbonament de tip tabel și ștergerea înregistrărilor din această
variabilă de tip tabel pentru care data expirare este anterioară datei de 1 ian 2008.
Se consideră tabelele
Abonament (IdAbonament, DataInceput, NrLuni, CodClient, IdPlata)
Client (CodClient, Nume, Localitate)
SedinteEfectuate (IdSedintaEfectuata, DataSedintaEfectuata, IdAbonament)
Plata (IdPlata, DataPlata, SumaPlatita, CodClient)
Completați codul SQL următor (cu un singur cuvânt pentru fiecare caseta) pentru a
se realiza o funcție tabelară care să calculeze totalul sumelor plătite pentru fiecare
client.
Se consideră tabelele
DECLARE @T money
EXEC ValoareTotala @T OUTPUT, 234
SELECT @T
c.Se dorește realizarea unei proceduri stocate care printr-un parametru de ieșire, să
returneze valoarea totala a comenzilor clientului al cărui cod se va introduce ca
parametru de intrare.
d.Se dorește realizarea unei proceduri stocate care printr-un parametru de ieșire, să
returneze valoarea totala a comenzilor clientului al cărui cod se va introduce ca
parametru de intrare.
DECLARE @T money
EXEC ValoareTotala @T OUTPUT, 234
SELECT @T
e.Realizarea unei proceduri stocate care să afișeze valoarea totală se va realiza
astfel
Se considera tabele
Departament(CodDepartament, DenumireDepartament, MarcaAngajatSef)
Angajat (MarcaAngajat, NumeAngajat, CodDepartament, SalariuIncadrare,
DataAngajare)
Comisie(CodComisie, DenumireComisie, MarcaAngajat)
Se considera tabelul
Note(INota, NumeStudent, Nota, DataNota, Disciplina)
Care afirmație, referitoare la următorul cod SQL, este corectă?
va avea ca efect adăugarea unei înregistrări în fiecare tabel din baza de date.
b.
Execuția următorului script:
va avea ca efect adăugarea unei înregistrări în fiecare tabel din baza de date.
c.
Execuția secvenței:
d.
Execuția următoarei fraze SQL
--adaugare coloana
ALTER TABLE Comanda
ADD DataLivrare DATE
--stergere coloana
ALTER TABLE Comanda
DROP Column DataLivrare
--stergere tabel
DROP TABLE Examen
--tabel temporar
CREATE TABLE #Persoana (Cod CHAR(20) PRIMARY KEY,
Nume NVARCHAR(100),
Prenume NVARCHAR(100),
DataAngajarii DATE)
--adaugare index
CREATE INDEX index_codIntern
ON PRODUSE (Codintern)
SELECT top 3 *
FROM Produse
---produse care contin in denumire grupul "te"
SELECT *
FROM Produse
WHERE denumire like '%te%'
SELECT *
FROM Produse
WHERE denumire like '%[.]%'
--gresit
denumire like ='%te%'
denumire like 'te'
denumire = '%te%'
--data curenta
SELECT GetDate()as zicurenta, MONTH(GetDate()) as Luna, YEAR(GetDate())
as an
--obs
--gresit
MONTH(GetDate())='ian'
--rotunjire
SELECT ROUND (21.45,1)--->21.5
SELECT ROUND (21.42,1)--->21.4
SELECT ROUND (21.43478,3)--->21.435
SELECT ROUND (21.43438,3)--->21.434
--trunchiere
SELECT ROUND (21.43478,3,1)--->21.434
SELECT ROUND (21.43438,3,1)--->21.434
SELECT ...
CASE
WHEN conditie THEN rezultat
WHEN ...
END
--Pentru fiecare produs vândut se va acorda un număr de puncte de
--fidelitate în funcție de valoarea acestuia astfel:
--Dacă valoarea acestuia este mai mare de 150 se acordă 5 puncte
--Altfel se acordă 0 puncte.
SELECT IdProdus, NrBoncasa, Cantitate*PretVanzare as Valoare,
CASE
WHEN Cantitate*PretVanzare>=150 THEN 5
ELSE 0
END AS PuncteFidelitate
FROM ProduseVandute
INSERT Client
VALUES (222, 'A', 'Bucuresti', getdate()),
(333, 'A', 'Bucuresti', '2021-10-5')
INSERTED
INSERT Client (Id, Denumire)
OUTPUT INSERTED.Id, INSERTED.Denumire
VALUES (5, 'D')
DELETE Client
OUTPUT DELETED.*
WHERE id=5
UPDATE Client
SET Denumire='AA'
OUTPUT INSERTED.*, DELETED.*
--OUTPUT UPDATED.*
WHERE id=1
--tabel arhivaclient
CREATE TABLE arhivaclient(Id int,
Denumire nvarchar(100),
oras nvarchar(100) )
UPDATE produse
SET Perisabil=1
FROM CategoriiProduse
WHERE CategoriiProduse.CodCategorie=Produse.CodCategorie
AND DenumireCategorie=N'Băuturi'
--dezactivare tigger
DISABLE TRIGGER C5_1 ON client
--activare trigger
ENABLE TRIGGER C5_1 ON client
--verificare view
SELECT * FROM C6_3
--verificare view
SELECT * FROM C6_6
--proceduri stocate
CREATE PROC C6_1_1
AS
SELECT * FROM Colaborator
--executie procedura
exec C6_1_1
exec sp_databases
--variabile
--declarare
DECLARE @An int
--atribuire valori
SET @an=2021
--afisare
SELECT @an
DECLARE @An int
SELECT @an=2022
SELECT @an
--curs 8
--Plățile cu cea mai mare sumă
SELECT *
FROM Plati
WHERE SumaPlatita>=ALL(SELECT SumaPlatita FROM Plati)
--subinterogare in from
SELECT *
FROM (SELECT IdPlata, SumaPlatita FROM Plati WHERE SumaPlatita>600) T
--subinterogare in select
SELECT Idplata, nrboncasa, sumaplatita,
(SELECT SUM(sumaPlatita) FROM Plati) as total,
sumaplatita*100/(SELECT SUM(sumaPlatita) FROM Plati) as pondere
FROM Plati
----subinterogare in select corelata cu interogarea principala
SELECT Idplata, nrboncasa, sumaplatita,
(SELECT COUNT(IDprodus)
FROM ProduseVandute PV
WHERE PV.NrBonCasa=Pl.nrboncasa) As NrProduse
FROM plati As PL
SELECT COUNT(IDprodus)
FROM ProduseVandute
WHERE NrBonCasa=2
--gresit
ALTER TYPE TipCNP
--IF
DECLARE @V int
SET @V=(SELECT AVG(Sumaplatita) FROM plati )
IF @V>700
SELECT * FROM Plati
ELSE
SELECT * FROM Produse
DECLARE @V int
SET @V=2
IF @V=1
SELECT * FROM Plati
SELECT * FROM Produse
DECLARE @V int
SET @V=2
IF @V=1
BEGIN
SELECT * FROM Plati
SELECT * FROM Produse
END
--return
SELECT * FROM Plati
RETURN
SELECT * FROM Produse
--while
DECLARE @Nr int
SET @Nr=1
WHILE @Nr<4
BEGIN
SET @Nr=@Nr+1
SELECT @Nr
END
SELECT 'mesaj1'
SELECT 'mesaj2'
--WAITFOR
WAITFOR DELAY '00:00:03'
SELECT * from plati
select getdate()
WAITFOR Time '08:37:00'
SELECT * from plati
--Procedura stocata Numărul plăților ulterioare unei date introdusă ca parametru
--executie procedura
EXEC C8_1 '2013-1-1'
DECLARE @D date
SET @D=dateadd(year, -9,getdate())
EXEC C8_1 @D
--executie procedura
DECLARE @N int
EXEC C8_2 '2012-1-1', @N OUTPUT
SELECT @N
--Să se realizeze o procedură stocată cu parametru care să
--afișeze produsele pentru care valoarea totală din anul 2012
--este mai mare decât parametrul.
CREATE PROC C8_3
@Valoare money
AS
SELECT Denumire, SUM(Cantitate*PretVanzare) as Valaore
FROM Produse INNER JOIN ProduseVandute ON
Produse.IdProdus=ProduseVandute.IdProdus
INNER JOIN BonuriDeCasa ON
ProduseVandute.NrBonCasa=BonuriDeCasa.NrBonCasa
WHERE YEAR(DataOraBonCasa)=2012
GROUP BY Denumire
HAVING SUM(Cantitate*PretVanzare)>@Valoare
--executie procedura
EXEC C8_3 500
--executie procedura
CREATE PROC C8_5
AS
DECLARE @V money
EXEC C8_4 '13122', @V OUTPUT
SELECT @V
--executie
EXEC C8_5
SELECT SUM(Sumaplatita)
FROM Plati
WHERE IdPlata IN (SELECT Nr FROM @T)
--sf procedura
--pas 3 executie procedura
DECLARE @TBL TPlati
INSERT @TBL
VALUES (1), (2), (5)
EXEC C9_3 @TBL
--2. Procedura stocata sa se afiseze detaliile unor plată
--al căror id se introduce ca parametru de tip tabel.
--Parametru de iesire va retunea totalul sumelor platite
--pas 1. Definire tip de data de tip tabel deja facut
--pas 2
CREATE PROC C9_4
@TP TPlati READONLY,
@S money OUTPUT
AS
SELECT *
FROM Plati
WHERE IdPlata IN (SELECT Nr FROM @TP)
--atribuire valoare param iesire
SET @S= (SELECT SUM(Sumaplatita)
FROM Plati
WHERE IdPlata IN (SELECT Nr FROM @TP))
--sf procedura
--pas 3 executie
DECLARE @TPL TPlati
INSERT @TPL
VALUES (1)
DECLARE @Suma money
EXEC C9_4 @TPL, @Suma OUTPUT
SELECT @Suma
--5. procedura care afiseaza suma totala a platilor din anul 2012.
CREATE PROC C9_5
AS
SELECT SUM(sumaPlatita) as Plata
FROM Plati
WHERE YEAR(Dataoraplata)=2012
--sf procedura
--executie procedura
EXEC C9_5
--6. procedura cu pam de iesire care returneaza
-- media a platilor din anul 2012.
CREATE PROC C9_6
@Total money OUTPUT
AS
SET @Total=(SELECT AVG(sumaPlatita) as Plata
FROM Plati
WHERE YEAR(Dataoraplata)=2012)
--sfarsit procedura
--executie procedura
DECLARE @S money
EXEC C9_6 @S OUTPUT
SELECT @S
--platile cu suma mai mare decat media platilor din 2012
SELECT *
FROM Plati
WHERE SumaPlatita>@S
--sfarsit
--apelare functie
SELECT * FROM C9_1()