SQL/XAMPP Собственное задание

Ülesanne:

Kirjuta eesti keeles korrektselt

  • Tabelinimi, väljad (vähemalt 5)
  • tabeli logi sisu
  • mida peaksid trigerid tegema (vähemalt 2 trigeri)
  • millised protseduurid on vaja teha (vähemalt kolm)

1. Raamatukogud.  ID, Autor, Raamat, Väljaandja (Издательство), Väljaande aasta (Год выпуска)
2. Id, kuupaev, kasutaja, andmed, tegevus
3. UPDATE, INSERT
4. Процедуры на добавление, удаление, просмотр таблицы

SQL

  • Tabelinimi, väljad (vähemalt 5)

Create table Raamatukogud(
ID int PRIMARY KEY identity(1,1),
Autor varchar(20),
Raamat varchar(20),
Väljaandja varchar(20),
Väljaande_aasta datetime
);

  • tabeli logi sisu

Create table logi(
id int primary key identity(1,1),
kasutaja varchar(20),
andmed text,
tegevus varchar(100)
);

  • mida peaksid trigerid tegema (vähemalt 2 trigeri)

Lisamine

Triger mis jälgib tabelisse lisamine

CREATE TRIGGER lisamine
ON Raamatukogud
FOR INSERT
AS
insert into logi(kasutaja, andmed, tegevus)
SELECT
USER,
Concat(
inserted.autor, ', ',
inserted.Raamat, ', ',
inserted.Väljaandja, ', ',
inserted.Väljaande_aasta, ', '
), 'Raamat on lisaud'
FROM inserted

--kontroll
insert into Raamatukogud(Autor, Raamat, Väljaandja, Väljaande_aasta)
values('Apollon', 'Guess', 'Times','2001-09-11')
SELECT * from Raamatukogud;
SELECT * from logi

Uuendamine

Triger mis jälgib andmete uuendamine tabelis

CREATE TRIGGER uuendamine
ON Raamatukogud
FOR update
AS
insert into logi(kasutaja, andmed, tegevus)
SELECT
USER,
Concat(
'Vanad andmed: ',
deleted.autor, ', ',
deleted.Raamat, ', ',
deleted.Väljaandja, ', ',
deleted.Väljaande_aasta, ', ', '\n Uued andmed: ',
inserted.autor, ', ',
inserted.Raamat, ', ',
inserted.Väljaandja, ', ',
inserted.Väljaande_aasta, ', '
), 'Raamat on uuendatud'
FROM deleted inner join inserted
on deleted.id=inserted.id

--kontroll
update Raamatukogud
set autor='Rayan Gosling'
where id=1
SELECT * from Raamatukogud;
SELECT * from logi;

  • millised protseduurid on vaja teha (vähemalt kolm)

lisamine

Create procedure RaamatuLisamine
@Autor varchar(20),
@Raamat varchar(20),
@Väljaandja varchar(20),
@Väljaande_aasta datetime
as
begin
Insert into Raamatukogud(Autor, Raamat, Väljaandja, Väljaande_aasta)
values(@Autor,@Raamat,@Väljaandja, @Väljaande_aasta);
Select * from Raamatukogud;
select * from logi
end;

exec RaamatuLisamine 'Night Lite', 'Insiders 2014', 'Records', 2014;

Kustutamine

Create procedure RammatuDel
@id int
as
begin
Select * from Raamatukogud;
delete Raamatukogud
where @id=ID;
Select * from Raamatukogud;
select * from logi;
end;

--kontroll
exec RammatuDel 3;

Vaatamine

Create procedure vaatamineRaamatud
as
begin
Select * from Raamatukogud;
end;
--kontroll
exec vaatamineRaamatud;


Teine Ülesanne

Lisa veel üks tabel — Autor(autorID, nimi, raamatID)
Tabelid on omavahel seotud — Raamatukogud.raamatID=Autor.raamatID

2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.
3. Kontrolli trigeri tegevust


Lisa veel üks tabel — Autor(autorID, nimi, raamatID)

Create table Autor(
autorID int primary key identity(1,1),
nimi varchar (20),
raamatID int,
foreign key (raamatID) references Raamatukogud(ID)
);

2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.

Lisamine

Triger mis jälgib tabelisse lisamine

CREATE TRIGGER AutorLisamine
ON Autor
FOR insert
AS
insert into logi(kasutaja, andmed, tegevus)
SELECT
USER,
Concat(
inserted.nimi, ', ',
rk.Raamat), 'Raamat on lisaud'
FROM inserted
inner join Raamatukogud rk on inserted.raamatID=rk.ID;

--kontroll
insert into Autor(nimi, raamatID)
values('Rayan Gosling', 2)
SELECT * from Raamatukogud;
SELECT * from Autor;
SELECT * from logi

3. Kontrolli trigeri tegevust

2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.

Uuendamine

Triger mis jälgib andmete uuendamine tabelis

CREATE TRIGGER AutorUuendamine
ON Autor
FOR update
AS
insert into logi(kasutaja, andmed, tegevus)
SELECT
USER,
Concat(
'Vanad andmed: ',
deleted.nimi, ', ',
rk1.Raamat, '\n Uued andmed: ',
inserted.nimi, ', ',
rk2.Raamat
), 'Raamat on uuendatud'
FROM deleted inner join inserted
on deleted.autorID=inserted.autorID
inner join Raamatukogud rk1 on inserted.raamatID=rk1.ID
inner join Raamatukogud rk2 on deleted.raamatID=rk2.ID;

--kontroll
update Autor
set nimi='Gay Richi'
where autorID=1
SELECT * from Raamatukogud;
SELECT * from Autor;
SELECT * from logi;

3. Kontrolli trigeri tegevust

XAMPP

Tabelinimi, väljad (vähemalt 5)

Create table Raamatukogud(
ID int PRIMARY KEY AUTO_INCREMENT,
Autor varchar(20),
Raamat varchar(20),
Väljaandja varchar(20),
Väljaande_aasta datetime
);

tabeli logi sisu

Create table logi(
id int primary key AUTO_INCREMENT,
kasutaja varchar(20),
andmed text,
tegevus varchar(100)
);

  • mida peaksid trigerid tegema (vähemalt 2 trigeri)

Lisamine

Triger mis jälgib tabelisse lisamine

Uuendamine

Triger mis jälgib andmete uuendamine tabelis

mõlema päästiku kontrollimine

  • millised protseduurid on vaja teha (vähemalt kolm)

lisamine

Kustutamine

Vaatamine


Teine Ülesanne

Lisa veel üks tabel — Autor(autorID, nimi, raamatID)
Tabelid on omavahel seotud — Raamatukogud.raamatID=Autor.raamatID

2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.
3. Kontrolli trigeri tegevust


Lisa veel üks tabel — Autor(autorID, nimi, raamatID)

Create table Autor(
autorID int primary key AUTO_INCREMENT,
nimi varchar (20),
raamatID int,
foreign key (raamatID) references Raamatukogud(ID)
);

2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.

Lisamine

3. Kontrolli trigeri tegevust

2. Kosta trigeri mis jälgib lisamine tabelis Autor ja näitab raamat.

Uuendamine

3. Kontrolli trigeri tegevust

Kasutaja ei saa SELECT logi