MySQL Server
- Результат должен быть следующим:

- Создаём новую БД:
lasteaed_burtassova

2. Создаём таблицы и “отношения” между ними, чтобы вышла подобная схема:
- Пример создания связи:
ALTER TABLE lapsevanem
ADD FOREIGN KEY (vanemID) REFERENCES vanem(vanemID);

3. Заполняем все таблицы (минимум 3 -5 записей в каждой):
- Таблица laps

- Таблица vanem

- Таблица lapsevanem

- Таблица tootaja

- Таблица ryhm

- Таблица tootajaryhmas

- Таблица lapsryhmas

- Таблица huviring

- Таблица tootajahuviringis

- Таблица lapshuviringis

Запросы
4. Запрос полного ID ребёнка и его родителя:
SELECT *
FROM laps, vanem
WHERE vanem.lapsID=laps.lapsID

5. Запрос имени, дня рождения ребенка и имени его родителя:
SELECT laps.lapsNimi, laps.synniaeg, vanem.vanemNimi
FROM laps, vanem
WHERE vanem.lapsID=laps.lapsID

6. Выводим те имена и день рождение детей (из таблицы laps), чьё имя содержит “n”:
SELECT lapsNimi, synniaeg
FROM laps
WHERE lapsNimi LIKE '%n%'

7. Выводим дни рождения и имена детей из таблицы laps, от меньшего к большему:
ELECT lapsNimi,MIN(synniaeg) AS MinSynniaeg
FROM laps
GROUP BY lapsNimi

8. Как добавить новые значения в таблицу (добавить новую запись/ заполнить её):
INSERT INTO laps (lapsNimi, lapsPerenimi, synniaeg, ryhmID)
VALUES ('Kurt', 'Petrov', '2007-08-12', 3);
INSERT INTO laps (lapsNimi, lapsPerenimi, synniaeg, ryhmID)
VALUES ('Dino', 'Prokofjev','2010-05-10', 2);


8.1 Также добавм запись с родителем:
INSERT INTO vanem (vanemNimi, vanemPerenimi, telefon, aaddress, email, lapsID)
VALUES ('Denis', 'Petrov', 59454076, 'Jamaika 3', 'petrov.petrovich@gmail.com', 7);


Создание триггеров:
В задании, при помощи триггера автоматически заполняется таблица regLogi, в которой будет фиксироваться в какое время и какое действие выполнялось в таблице register.
- Создаем таблицу register и regLogi (отчёт) регистрации числа, времени, пользователя и данных:
Create table register(
regID int IDENTITY(1,1) PRIMARY KEY,
lapsNimi varchar(30),
vanemNimi varchar(30),
pereNimi varchar(30),
kuupaev DATE,
aeg DATETIME
);
Create table regLogi(
id int IDENTITY(1,1) PRIMARY KEY,
aeg DATETIME,
toiming varchar(100),
andmed varchar(200),
Kasutaja varchar(50)
)

2. Создаём триггер с автоматической записью регистрации:
CREATE TRIGGER regLisamine
ON register
FOR INSERT
AS
INSERT into regLogi(aeg, toiming, andmed, kasutaja)
SELECT GETDATE(), 'Lapse tulek on lisatud', inserted.lapsNimi, USER
FROM inserted
3. Заполнение таблицы и запрос на отображение:
INSERT INTO register(lapsNimi, vanemNimi, pereNimi, kuupaev, aeg)
VALUES ('Sawn', 'Elvira', 'Burtassov', '2021-12-01', '08:33:23');
SELECT * FROM register;
SELECT * FROM regLogi

4. Ещё один триггер, но на удаление:
CREATE TRIGGER regKustutamine
ON register
FOR DELETE
AS
INSERT into regLogi(aeg, toiming, andmed, kasutaja)
SELECT GETDATE(), 'Lapse tulek on kustutatud', deleted.lapsNimi, USER
FROM deleted
5. Удаление из таблицы, строчки:
DELETE from register
WHERE regID=1;
SELECT * from register;
SELECT * from regLogi

6. Сoздание Concat – объёдинение данных из нескольких полей:
USE [lasteaed_burtassova]
GO
/****** Object: Trigger [dbo].[regLisamine] Script Date: 04.10.2021 12:44:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[regLisamine]
ON [dbo].[register]
FOR INSERT
AS
INSERT into regLogi(aeg, toiming, andmed, kasutaja)
SELECT GETDATE(), 'Lapse tulek on lisatud',
Concat(inserted.lapsNimi, ', ', inserted.kuupaev, inserted.aeg), USER
FROM inserted

7. Триггер на обновление:
CREATE TRIGGER regUuendamine
ON register
FOR UPDATE
AS
INSERT into regLogi(aeg, toiming, andmed, kasutaja)
SELECT GETDATE(), 'Lapse tulek on uendatud',
CONCAT(deleted.lapsNimi, ' ,lapse tulek nimi: ', inserted.lapsNimi),
USER
FROM deleted INNER JOIN inserted ON
deleted.regID=inserted.regID
8. Как обновить (запись):
UPDATE register
SET vanemNimi='Loki'
WHERE regID=2;
SELECT * from register;
SELECT* from regLogi

Права в SQL Server
1. Создаём пользователя regSisestaja, выдав ему доступ на конкретную БД:

2. Выдаём права нашему новому пользователю:
GRANT SELECT, INSERT ON register TO registrator

- Запретим ему редактировать и просматривать regLogi:
DENY SELECT, INSERT ON regLogi TO registrator

3. Создаём 2 пользователя (regJuht):

- Выдаем ему права:
GRANT SELECT, UPDATE, DELETE ON register TO regJuht;
GRANT SELECT, UPDATE, DELETE ON regLogi TO regJuht;


- Проверка прав:
- Зайдем под registrator и добавим новую запись в таблицу:
INSERT INTO register(lapsNimi, vanemNimi, pereNimi, kuupaev, aeg)
VALUES ('Martin', 'Irina', 'Prokofjev', '02.12.2021','09:15:37');
select * from register;

- Проверим таблицу regLogi под нашим regJuht:
select * from regLogi;
