Examen GBDR PDF
Document Details

Uploaded by TroubleFreeBowenite8690
Tags
Summary
Acesta este un document de hârtie de examen ce conține întrebări SQL și probleme despre baze de date. Problemele de examen includ SQL, baze de date și instrucțiuni SQL specifice.
Full Transcript
## Care dintre afirmatiile privind cheile unui tabel NU sunt corecte ? Selectaţi unul sau mai multe: - Cheia externă nu poate avea valoare Null. - O cheie externă trebuie să fie de acelaşi tip de date cu cheia primară corespondentă. - Cheia externă trebuie să ia valori unice. - Cheia primară trebuie...
## Care dintre afirmatiile privind cheile unui tabel NU sunt corecte ? Selectaţi unul sau mai multe: - Cheia externă nu poate avea valoare Null. - O cheie externă trebuie să fie de acelaşi tip de date cu cheia primară corespondentă. - Cheia externă trebuie să ia valori unice. - Cheia primară trebuie să ia valori nenule. - O cheie externă pote fi de tip CHAR ## Aveti la dispozitie o baza de date cu rezultatele studentilor la examene. Relizati un view prin care sa calculati numarul total de restante ale fiecarui student, pe baza notelor primite in ianuarie 2016. Alegeți rezolvarea corectă. Selectați răspunsul corect: **a.** STUDENTI (All Columns) CNP IdStudent NumeStuder Tara Oras MedieBac MedieLiceu CATALOG (All Columns) CNP IdExamen Nota EXAMENE (All Columns) IdExamen Disciplina DataExamen Y PuncteCredit Table Outp... S... S... Group By Filter STUDENTI ☑ Group By STUDENTI CATALOG Group By Group By BETWEEN 1 AND 4 CATALOG EXAMENE Π ☑ Count Group By Group By IN (2016) = 1 **b.** STUDENTI (All Columns) CNP IdStudent NumeStuder Tara Oras MedieBac MedieLiceu CATALOG (All Columns) CNP IdExamen Nota EXAMENE (All Columns) IdExamen Disciplina DataExamen Y PuncteCredit Table Outp... Sor... Sor... Group By Filter Or. CNP STUDENTI ☑ NumeStudent STUDENTI ☑ Group By Group By Nota CATALOG Π Where <5 Nota CATALOG ☑ Count DataExamen EXAMENE Π Where BETWEEN '1/1/2016' AND '1/31/2016' **c.** STUDENTI *(All Colum CNP IdStudent NumeStuder Tara Oras MedieBac MedieLiceu Column IdExamen NumeStudent Nota CATALOG (All Columns) [= CNP IdExamen Nota YEAR(dbo.EXAMENE.DataExamen) MONTH(dbo.EXAMENE.DataExamen) EXAMENE *(All Columns) IdExamen Disciplina DataExamen PuncteCredit Y Table Outp... S... S... Group By Filter CATALOG Group By STUDENTI Group By CATALOG ☑ Count <5 Π Where = 2016 Π Where = 1 **d.** STUDENTI (All Colum CNP IdStudent NumeStuder Tara Oras MedieBac MedieLiceu Column CNP NumeStudent Nota IdExamen DataExamen 3 (= Σ CATALOG (All Columns) CNP Id Examen Nota EXAMENE (All Columns) IdExamen Disciplina DataExamen ▼ PuncteCredit Σ YE Table Outp... Sor... Sor... Group By Filter STUDENTI Group By STUDENTI Group By CATALOG Group By <5 CATALOG Count EXAMENE Where BETWEEN '1/1/2016' AND '1/31/2016' ## Aveti următorul model pentru evidenta absenţelor studenților la seminarii: | Studenti | Absente | |---|---| | CNPStudent | IdAbsenta | | Nume | DataAbsenta | | MedieBac | Motiv | | Facultate | CNPStudent | ## Comanda pentru a crea un trigger care sa nu permita adaugarea de absente pentru studentii de la CIG este: ```sql CREATE TRIGGER FaraCIG ON Absente FOR INSERT AS IF EXISTS (SELECT * FROM INSERTED WHERE CNPStudent IN (Select CNPStudent FROM Studenti WHERE Facultate='CIG')) BEGIN RAISERROR ('Fara absente la CIG!',1,1) ROLLBACK TRANSACTION END ``` ## Functia FLOOR(Round (2.675,2)) va returna: Selectați răspunsul corect: - 2.67 ## CREATE TABLE [dbo].[Produse]( [IdProdus] [int] NOT NULL primary key, [Denumire] [nvarchar] (255) NULL, [CodCategorie] [int] NULL, CONSTRAINT CE_Categorie FOREIGN KEY (CodCategorie) REFERENCES dbo. Categorii Produse (CodCategorie) ON DELETE CASCADE) Instrucţiunea SQL de mai sus nu permite: Selectați răspunsul corect: - Ştergerea în cascadă. ## Realizati o procedura stocata care sa afiseze lista studentilor cu media notelor cuprinsa intre 2 valori precizate ca parametri ai procedurii. Se va ordona descrescator dupa medie. Selectaţi răspunsul corect: **b.** ```sql CREATE PROC LISTA_MEDII @VAL1 AS DECIMAL(4,2), @VAL2 AS DECIMAL(4,2) AS SELECT S.CNP, NumeStudent, Nota, AVG(NOTA) AS MEDIE FROM STUDENTI S INNER JOIN CATALOG C ON S.CNP=C.CNP HAVING AVG(NOTA) BETWEEN @VAL1 AND @VAL2 GROUP BY S.CNP, NumeStudent ORDER BY AVG(NOTA) DESC ``` ## Se doreste stergerea absentelor din data de 1 ianuarie 2013 pentru studentii din grupa 650. Care este soluția corectă? Selectaţi răspunsul corect: - DELETE FROM Absente WHERE CNP IN (SELECT CNP FROM Studenti WHERE Grupa=650 AND Data = '1/1/2013') ## Se doreste memorarea într-o variabilă de memorie a valorii medii a salariului din tabelul Angajati (CNP, Nume, Salariu). In acest sens se vor executa instructiunile: Selectaţi răspunsul corect: - DECLARE @mediu as money SET @mediu=(SELECT AVG(Salariu) FROM Angajati) ## SELECT * FROM Persoane WHERE cnp like '_[89]_ _[^1]%' Instructiunea de mai sus va selecta persoanele: Selectaţi răspunsul corect: - Nascute intre 1980 si 1999, daca nu s-au nascut in ianuarie. ## Aveti urmatoarea baza de date pentru evidenta examenelor: | STUDENTI | CATALOG | EXAMENE | |---|---|---| | CNP | CNP | IdExamen | | IdStudent | IdExamen | Disciplina | | NumeStudent | Nota | DataExamen | | Tara | | PuncteCredit | | Oras | | | | MedieBac | | | | MedieLiceu | | | Se dorește realizarea unui trigger care să nu permită ştergerea notelor pentru examenul la disciplina Contabilitate. Solutia corecta este: Selectați răspunsul corect: ```sql create trigger nu_sterg_conta on [catalog] for delete as if exists (select * from deleted where nota<5 and idexamen in (select idexamen from examene where Disciplina='contabilitate')) begin raiserror ('nu se pot sterge la conta', 1,1) rollback transaction end ``` ## Aveti urmatoarele 2 tabele pentru gestiunea premiilor obtinute de elevi (un elev poate avea mai multe premii) | OLKA.Exemple - dbo.Elevi | OLKA.Exemple - dbo.PREMII | |---|---| | Cod | CodPremiu | | Nume | Nume Premiu | | CodElev | | | 100 | 1 | Premiul 1 Matematica | 101 | | 101 | 2 | Premiul 1 Desen | 103 | | 102 | 3 | Premiul 2 Chimie | 101 | | 103 | | | | 104 | | | Se dă instructiunea: ```sql SELECT nume, numePremiu FROM elevi inner join premii on Elevi.Cod = Premii.CodElev ``` Aceasta va genera ca rezultat: Selectați răspunsul corect: - 5 inregistrari ## Aveti un tabel cu următorii elevi: | Cod | Nume | Nota | Grupa | |---|---|---|---| | 100 | Oana | 8 | 636 | | 101 | Dan | 10 | 632 | | 102 | Oana | 8 | 635 | | 103 | Anca | 9 | NULL | | 104 | Radu | 7 | 636 | Instructiunea: ```sql SELECT Count(DISTINCT Nume), Count(Distinct Nota), Count(Distinct Grupa) FROM Elevi ``` Va avea urmatoarele rezultate: Selectați răspunsul corect: - 4, 4, 3 ## Aveți următoarea bază de date pentru evidența rezultatelor studenţilor. | STUDENTI | CATALOG | EXAMENE | |---|---|---| | CNP | CNP | IdExamen | | IdStudent | IdExamen | Disciplina | | NumeStudent | Nota | DataExamen | | Tara | | PuncteCredit | | Oras | | | | MedieBac | | | | MedieLiceu | | | Realizati o functie de tip tabel care sa returneze studentii si notele acestora la examenele sutinute la o disciplina precizata ca parametru (se vor returna in formatul: in formatul Nume, Nota, DataExam). Realizati apoi o procedură stocată care sa folosească funcţia pentru a afişa toate notele studentilor la disciplina baze de date. Rezolvarea corectă este: Selectaţi răspunsul corect: - CREATE FUNCTION ListaNote (@disciplina nvarchar(50)) returns @tabel TABLE (nume nvarchar(50), nota int, dataexam date) as begin insert into @tabel select numestudent, nota, DataExamen FROM studenti s inner join catalog con s.cnp=c.cnp inner join examene e on c.idexamen e.idexamen where disciplina=@disciplina return end CREATE PROC NoteBazeDeDate AS select nume, nota from dbo. ListaNote @disciplina='Baze de date' ## Se doreste realizarea unei functii care sa primeasca argument un nume de oras si sa returneze numarul de studenti din orasul respectiv. Solutia corecta este: Selectaţi răspunsul corect: - create function numara_studenti(@oras nvarchar(50)) returns int as begin return (select count(cnp) from studenti where oras=@oras) end ## Crearea bazei de date Salarii pe server se poate realiza prin comanda: Selectaţi răspunsul corect: - CREATE DATABASE Salarii ## Se doreste stabilirea locurilor ocupate la un concurs de urmatorii elevi: | Cod | Nume | Nota | |---|---|---| | 100 | Dan | 8 | | 101 | Maria | 10 | | 102 | Anca | 8 | | 103 | Oana | 9 | | 104 | Radu | 7 | In acest sens se utilizeaza urmatoarea instructiune: ```sql SELECT nume, nota, Dense_Rank() Over (order by nota desc) as Locul FROM Elevi ``` Ce loc va ocupa Dan ? Selectați răspunsul corect: - 4 ## Se considera tabela Elevi, cu urmatorul continut: | Cod | Nume | Nota | Grupa | |---|---|---|---| | 100 | Maria | 8 | 636 | | 101 | Dan | 10 | 632 | | 102 | Oana | 8 | 636 | | 103 | Anca | 9 | NULL | | 104 | Radu | 7 | 636 | Instructiunea: ```sql SELECT Count(Nume), Count(Nota), Count (Grupa) FROM Elevi ``` Va avea urmatoarele rezultate: Selectaţi răspunsul corect: - 5, 4, 4 ## Presupunând că tabela Angajat are în structura sa un câmp de tip tinyint numit Vechime, care dintre următoarele variante este corectă pentru adăugarea unei restricții de integritate pe câmpul Vechime, astfel încât acesta să accepte numai valori între 0 și 40? Selectați răspunsul corect: - ALTER TABLE Angajat ADD CONSTRAINT CK_LimitaVechime CHECK (Vechime>=0 AND Vechime<=40)