ARVESTUSTÖÖ: andmebaas LASTEAED

MySQL Server

  • Результат должен быть следующим:
  1. Создаём новую БД:

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);
Повлияло на 2 ряда
И вот снизу 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.

  1. Создаем таблицу 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;
Design a site like this with WordPress.com
Alustamine