Forume Ülesanne XAMPP

Loomine ja kasutamine uus andmebaas “HobusedDb”

CREATE DATABASE HobusedDb;

Loomine tabel “Hobused”

CREATE TABLE Hobused(
ID INT PRIMARY KEY AUTO_INCREMENT,
Nimi VARCHAR(50),
Vanus INT,
Kiirus DECIMAL(5,2));

Loomine tabel “Logi”

CREATE TABLE Logi(
ID INT PRIMARY KEY AUTO_INCREMENT,
Kuupaev DATETIME,
Andmed TEXT,
Kasutaja VARCHAR(40));

Loomine triger “HobuseLisa”

INSERT INTO Logi(Kuupaev, Andmed, Kasutaja)
VALUES (
NOW(),
CONCAT(
'Lisatud hobune: ', NEW.Nimi,
' | Vanus: ', NEW.Vanus,
' | ID: ', NEW.ID,
' | Ja kiirus: ', NEW.Kiirus),
USER()
)

Loomine triger “HobuseUuenda”

INSERT INTO Logi(Kuupaev, Andmed, Kasutaja)
VALUES (
NOW(),
CONCAT(
'Vana hobuse andmed: ', OLD.Nimi,
' | Vanus: ', OLD.Vanus,
' | ID: ', OLD.ID,
' | Ja kiirus: ', OLD.Kiirus,
' || Uued hobuse andmed: ', NEW.Nimi,
' | Vanus: ', NEW.Vanus,
' | ID: ', NEW.ID,
' | Ja kiirus: ', NEW.Kiirus),
USER()
)

Loomine triger “HobuseKustuta”

INSERT INTO Logi(Kuupaev, Andmed, Kasutaja)
VALUES (
NOW(),
CONCAT('Kustutatud hobune: ', OLD.Nimi,
' | Vanus: ', OLD.Vanus,
' | ID: ', OLD.ID,
' | Ja kiirus: ', OLD.Kiirus),
USER()
)

Kontrollimine

Lisamine andmed “Hobused” tabelisse

INSERT INTO Hobused(Nimi, Vanus, Kiirus)
VALUES ('Special Week', 4, 61),
('El Condor Pasa', 3, 64),
('Tokai Teio', 4, 64.3),
('TM Opera O', 4, 60.6),
('Hishi Amazon', 3, 71.6);

Lisamine Direktori Konto

Muuda Direktori õigused

Direktori õigused on ainult SELECT, UPDATE, DELETE Tabelis Hobused

Logi sisse Direktori konto

Direktor näeb ainult Hobused Tabel

Uuendamine andmed “Hobused” tabelis

UPDATE Hobused SET Nimi = 'Silence Suzuka', Vanus = 4, Kiirus = 75
WHERE Nimi = 'El Condor Pasa';

Kustutamine andmed “Hobused” tabelist

DELETE FROM Hobused WHERE ID = 5;

Vaatame Logi Tabel

Kasutatud root

2 seotud oma vahel tabelid

Loomine uus tabel

CREATE TABLE Ratsutaja(
RatsutajaID INT PRIMARY KEY AUTO_INCREMENT,
RatsutajaNimi VARCHAR(100) NOT NULL,
Rahvus VARCHAR(50),
Vanus INT
);

Tabeli “hobused” ja “ratsutaja” ühendamine

ALTER TABLE hobused
ADD RatsutajaID INT,
ADD FOREIGN KEY (RatsutajaID) REFERENCES ratsutaja(RatsutajaID);

Lisamine andmed “Ratsutaja” tabelisse

INSERT INTO ratsutaja(RatsutajaNimi, Rahvus, Vanus)
VALUES ('Yutaka Take', 'Japanese', 30),
('Yukio Okabe', 'Japanese', 43),
('Ryuji Wada', 'Japanese', 22);

Uuendamine Trigerid

INSERT

INSERT INTO Logi (Kuupaev, Andmed, Kasutaja)
SELECT
NOW(),
CONCAT(
'Lisatud hobune: ', NEW.Nimi,
' | Vanus: ', NEW.Vanus,
' | ID: ', NEW.ID,
' | Kiirus: ', NEW.Kiirus,
' | Ratsutaja: ', r.RatsutajaNimi
),
USER()
FROM hobused INNER JOIN ratsutaja r
ON hobused.RatsutajaID = r.RatsutajaID
WHERE hobused.ID = NEW.ID

UPDATE

INSERT INTO Logi (Kuupaev, Andmed, Kasutaja)
SELECT
NOW(),
CONCAT(
'Vana hobuse andmed: ', OLD.Nimi,
' | Vanus: ', OLD.Vanus,
' | Kiirus: ', OLD.Kiirus,
' | Ratsutaja Nimi: ', r1.RatsutajaNimi,

'\n | Uued hobuse andmed: ', NEW.Nimi,
' | Vanus: ', NEW.Vanus,
' | Kiirus: ', NEW.Kiirus,
' | Ratsutaja Nimi: ', r2.RatsutajaNimi
),
USER()
FROM hobused
INNER JOIN ratsutaja r1 ON OLD.RatsutajaID = r1.RatsutajaID
INNER JOIN ratsutaja r2 ON NEW.RatsutajaID = r2.RatsutajaID
WHERE NEW.ID = hobused.ID

DELETE

INSERT INTO Logi (Kuupaev, Andmed, Kasutaja)
SELECT
NOW(),
CONCAT(
'Kustutatud hobune: ', OLD.Nimi,
' | Vanus: ', OLD.Vanus,
' | Kiirus: ', OLD.Kiirus,
' | Ratsutaja Nimi: ', r.RatsutajaNimi
),
USER()
FROM hobused INNER JOIN ratsutaja r
ON hobused.RatsutajaID = r.RatsutajaID
WHERE hobused.ID = OLD.ID

Kontrollimine

Lisamine uus andmed (Kontrollimine INSERT triger)

Lisatud uus ratsutaja – ID: 4, RatsutajaNimi: Yasuo Iwata, Rahvus: Japanese, Vanus: 29

INSERT INTO hobused(Nimi, Vanus, Kiirus, RatsutajaID)
VALUES ('Symboli Rudolf', 3, 65, 4)

Tulemus

Kustutamine andmed (Kontrollimine DELETE triger)

DELETE FROM hobused WHERE ID = 6

ID: 6 on Symboli Rudolf andmed

Tulemus (Mul oli vigad, see on viimane SELECT tulemus)

Uuendamine andmed (Kontrollimine UPDATE triger)

Lisatud uus ratsutaja – ID: 5, RatsutajaNimi: Kenichi Ikezoe, Rahvus: Japanese, Vanus: 28

UPDATE hobused SET Nimi = 'Taiki Shuttle', Vanus = 4, Kiirus = 72, RatsutajaID = 5
WHERE Nimi = 'Silence Suzuka';

Tulemus