Sunteți pe pagina 1din 4

Interogări de acțiune, subinterogări, obiecte trigger în T-SQL (cerințe):

Se consideră tabela STUDENT, având următoarea structură:

și următorul conținut:

CERINȚE PENTRU INTEROGĂRI DE ACȚIUNE


Scrieți interogările SQL de acțiune care produc următoarele rezultate:

1. Selectarea tuturor datelor studenților străini într-o tabelă nouă, numită StudențiStrăini.
2. Adăugarea în tabela StudențiStrăini a tuturor studenților români care au statutul ”Taxă”.
3. Adăugarea în tabela StudențiStrăini a unui nou student pe baza următoarelor informații:

CÂMP VALOARE CÂMP VALOARE


IDStudent 115 Naționalitate Străin
Prenume Themis Statut Taxă
Nume Alexandros AnStudii 2
DataNaștere 1999-03-06 Telefon 0726459845
Oraș Atena Medie 8.21
Țară Grecia
4. Să se crească cu un punct mediile studenților de anul doi care au statutul ”Bursă”, numai dacă media
lor actuală este mai mică decât nouă.
5. Să se adauge șirul ”-RO” la sfârșitul fiecărui oraș din România pentru care statutul studentului este
”Taxă” și media este mai mare de șapte.
6. Să se șteargă toți studenții din tabela StudențiStrăini al căror număr de telefon începe cu ”0236”.
CERINȚE PENTRU SUBINTEROGĂRI
Scrieți interogările SQL de acțiune care produc următoarele rezultate:
7. Afișarea numelui orașului care corespunde celui mai tânăr student din tabelă.
8. Scăderea cu un punct a mediei studenților români a căror medie este cel puțin 120% din valoarea
minimă la nivelul tabelei.
9. Afișarea numelui complet și a statutului pentru studenții români a căror vârstă este mai mică decât
vârsta medie a studenților români din tabelă.
CERINȚE PENTRU OBIECTE DE TIP TRIGGER
Scrieți interogările SQL de acțiune care produc următoarele rezultate:
10. Să se definească un trigger pentru tabela Student care să convertească statutul studentului în litere
mari pentru fiecare adăugare (INSERT) sau modificare (UPDATE).
11. Să se modifice trigger-ul anterior, astfel încât să acționeze numai în cazul interogărilor de adăugare
(INSERT).
12. Să se creeze tabela ArhivăStudenți având aceeași structură cu tabela Student (fără atribuire automată
a valorilor cheii primare și denumiri diferite ale restricțiilor de integritate), apoi să se creeze un trigger
pentru tabela Student, astfel încât fiecare înregistrare ștearsă din tabela Student să fie de fapt mutată
în tabela ArhivăStudenți.

ANEXA 1 – Sintaxa obiectelor de tip trigger în T-SQL


1. Pentru crearea unui obiect de tip trigger
CREATE TRIGGER tabelă_acțiune
ON {TABLE|VIEW}
{FOR|AFTER|INSTEAD OF} [INSERT][,][UPDATE][,][DELETE]
AS
interogare_sql_de_acțiune
2. Pentru modificarea unui obiect de tip trigger
ALTER TRIGGER tabelă_acțiune
ON {TABLE|VIEW}
{FOR|AFTER|INSTEAD OF} [INSERT][,][UPDATE][,][DELETE]
AS
interogare_sql_de_acțiune
3. Pentru ștergerea unui obiect de tip trigger
DROP TRIGGER nume_trigger

ANEXA 2 – Script-ul de creare a tabelei Student


USE [--AICI PUNEȚI NUMELE BAZEI DE DATE CURENTE--]
GO
/****** Object: Table [dbo].[Student] Script Date: 21-Oct-18 9:38:02 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Student](
[IDStudent] [bigint] IDENTITY(101,1) NOT NULL,
[PrenumeStudent] [nvarchar](50) NULL,
[NumeStudent] [nvarchar](50) NULL,
[DataNastere] [date] NULL,
[Oras] [nvarchar](50) NULL,
[Tara] [nvarchar](50) NULL,
[Nationalitate] [nchar](10) NULL,
[Statut] [nchar](15) NULL,
[AnStudii] [tinyint] NULL,
[Telefon] [nchar](15) NULL,
[Medie] [decimal](4, 2) NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
[IDStudent] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =
ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Student] ON
INSERT [dbo].[Student] ([IDStudent], [PrenumeStudent], [NumeStudent], [DataNastere], [Oras],
[Tara], [Nationalitate], [Statut], [AnStudii], [Telefon], [Medie]) VALUES (101, N'Florin',
N'Popa', CAST(N'2000-12-12' AS Date), N'Iasi', N'Romania', N'roman ', N'Bursa ', 1,
N'0725645612 ', CAST(9.23 AS Decimal(4, 2)))
INSERT [dbo].[Student] ([IDStudent], [PrenumeStudent], [NumeStudent], [DataNastere], [Oras],
[Tara], [Nationalitate], [Statut], [AnStudii], [Telefon], [Medie]) VALUES (102, N'Andreea',
N'Marcu', CAST(N'1999-01-23' AS Date), N'București', N'Romania', N'roman ', N'Taxa
', 1, N'0722347211 ', CAST(6.55 AS Decimal(4, 2)))
INSERT [dbo].[Student] ([IDStudent], [PrenumeStudent], [NumeStudent], [DataNastere], [Oras],
[Tara], [Nationalitate], [Statut], [AnStudii], [Telefon], [Medie]) VALUES (103, N'Samuel',
N'Rover', CAST(N'1999-06-11' AS Date), N'Auckland', N'New Zealand', N'strain ', N'Erasmus
', 2, N'011649562389 ', CAST(8.25 AS Decimal(4, 2)))
INSERT [dbo].[Student] ([IDStudent], [PrenumeStudent], [NumeStudent], [DataNastere], [Oras],
[Tara], [Nationalitate], [Statut], [AnStudii], [Telefon], [Medie]) VALUES (104, N'Elena',
N'Albu', CAST(N'1998-03-14' AS Date), N'Constanța', N'Romania', N'roman ', N'Bursa ', 2,
N'0723400217 ', CAST(7.32 AS Decimal(4, 2)))
INSERT [dbo].[Student] ([IDStudent], [PrenumeStudent], [NumeStudent], [DataNastere], [Oras],
[Tara], [Nationalitate], [Statut], [AnStudii], [Telefon], [Medie]) VALUES (105, N'Simona',
N'Stan', CAST(N'1998-07-28' AS Date), N'București', N'Romania', N'roman ', N'Bursa ', 2,
N'0725653212 ', CAST(8.11 AS Decimal(4, 2)))
INSERT [dbo].[Student] ([IDStudent], [PrenumeStudent], [NumeStudent], [DataNastere], [Oras],
[Tara], [Nationalitate], [Statut], [AnStudii], [Telefon], [Medie]) VALUES (106, N'Felicia',
N'Lupu', CAST(N'1998-06-01' AS Date), N'Sinaia', N'Romania', N'roman ', N'Taxa ',
3, N'0725653215 ', CAST(6.89 AS Decimal(4, 2)))
INSERT [dbo].[Student] ([IDStudent], [PrenumeStudent], [NumeStudent], [DataNastere], [Oras],
[Tara], [Nationalitate], [Statut], [AnStudii], [Telefon], [Medie]) VALUES (107, N'John',
N'Reilly', CAST(N'1997-02-25' AS Date), N'Melbourne', N'Australia', N'strain ', N'Taxa
', 3, N'023639872101 ', CAST(7.10 AS Decimal(4, 2)))
INSERT [dbo].[Student] ([IDStudent], [PrenumeStudent], [NumeStudent], [DataNastere], [Oras],
[Tara], [Nationalitate], [Statut], [AnStudii], [Telefon], [Medie]) VALUES (108, N'Eliza',
N'Dobre', CAST(N'1997-11-23' AS Date), N'Arad', N'Romania', N'roman ', N'Bursa ', 3,
N'0725103212 ', CAST(6.23 AS Decimal(4, 2)))
INSERT [dbo].[Student] ([IDStudent], [PrenumeStudent], [NumeStudent], [DataNastere], [Oras],
[Tara], [Nationalitate], [Statut], [AnStudii], [Telefon], [Medie]) VALUES (109, N'Marian',
N'Neacșu', CAST(N'1997-05-04' AS Date), N'București', N'Romania', N'roman ', N'Taxa
', 3, N'0721883219 ', CAST(7.79 AS Decimal(4, 2)))
SET IDENTITY_INSERT [dbo].[Student] OFF
ALTER TABLE [dbo].[Student] WITH CHECK ADD CONSTRAINT [CK_Medie] CHECK (([Medie]>=(1.00) AND
[Medie]<=(10.00)))
GO
ALTER TABLE [dbo].[Student] CHECK CONSTRAINT [CK_Medie]
GO
ALTER TABLE [dbo].[Student] WITH CHECK ADD CONSTRAINT [CK_Nationalitate] CHECK
(([Nationalitate]='strain' OR [Nationalitate]='roman'))
GO
ALTER TABLE [dbo].[Student] CHECK CONSTRAINT [CK_Nationalitate]
GO
ALTER TABLE [dbo].[Student] WITH CHECK ADD CONSTRAINT [CK_Statut] CHECK (([Statut]='Erasmus'
OR [Statut]='Taxa' OR [Statut]='Bursa'))
GO
ALTER TABLE [dbo].[Student] CHECK CONSTRAINT [CK_Statut]
GO
ALTER TABLE [dbo].[Student] WITH CHECK ADD CONSTRAINT [CK_AnStudii] CHECK (([AnStudii]=(5)
OR [AnStudii]=(4) OR [AnStudii]=(3) OR [AnStudii]=(2) OR [AnStudii]=(1)))
GO
ALTER TABLE [dbo].[Student] CHECK CONSTRAINT [CK_AnStudii]
GO

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