ADATB/20241120/database.sql

88 lines
3.9 KiB
MySQL
Raw Permalink Normal View History

2024-11-20 08:26:31 +00:00
CREATE DATABASE proba CHARACTER SET ="utf8" COLLATE="utf8_hungarian_ci";
CREATE TABLE dolgozok(id INT PRIMARY KEY AUTO_INCREMENT, vnev VARCHAR(255) NOT NULL, knev VARCHAR(255) NOT NULL, irszam INT(4) NOT NULL COMMENT "A telepulesek tabla elsodleges kulcsara hivatkozik", kozterulet_neve VARCHAR(255) NOT NULL COMMENT "Ide kerul a kozterulet neve", kozterulet_tipusa INT(4) COMMENT "A kozteruletek tabla elsodleges kulcsara hivatkozik", hazszam_emelet VARCHAR(255) NOT NULL, szul_datum DATE DEFAULT "1989-08-20" COMMENT "A szuletesu datum YYYY-mm-dd formatumban", szul_hely INT(4) COMMENT "A telepulesek tabla elsodleges kulcsara hivatkozik");
CREATE TABLE telepulesek (irszam INT(4) PRIMARY KEY, telepules_neve VARCHAR(255) NOT NULL);
ALTER TABLE dolgozok ADD CONSTRAINT dolgozok_telepulesek_lakhely_fk FOREIGN KEY (irszam) REFERENCES telepulesek(irszam) ON UPDATE CASCADE;
/*TODO*/
ALTER TABLE dolgozok ADD CONSTRAINT dolgozok_telepulesek_szul_hely_fk FOREIGN KEY (szul_hely) REFERENCES telepulesek(irszam) ON UPDATE CASCADE;
CREATE TABLE kozteruletek(id INT PRIMARY KEY AUTO_INCREMENT, kozterulet_neve VARCHAR(255) NOT NULL);
INSERT INTO kozteruletek(kozterulet_neve) VALUES ("út"),("utca"),("tér");
INSERT INTO telepulesek VALUES (5600, "Békéscsaba"), (3300, "Eger");
DESCRIBE dolgozok;
INSERT INTO dolgozok (vnev, knev, irszam, kozterulet_neve, kozterulet_tipusa, hazszam_emelet, szul_datum, szul_hely)
VALUES ("Kiss", "Aladár", 5600, "Petőfi", 2, "25", "1989-10-24", 3300),
("Nagy", "Kelemen", 3300, "Karak", 1, "13/B", "1978-03-15", 5600),
("Károlyi", "József", 3300, "Levendula", 3, "2.emelet 12-es lakas", "2004-01-12", 3300);
SELECT
dolgozok.id AS `Dolgozoi azonosito`,
CONCAT(dolgozok.vnev, " ", dolgozok.knev) AS `Dolgozo neve`,
CONCAT(dolgozok.irszam, " ", telepulesek.telepules_neve, ", ", dolgozok.kozterulet_neve, kozteruletek.kozterulet_neve, "hazszam emelet", ".")
AS `Lakhely`,
CONCAT(telepulesek.telepules_neve, ", ", dolgozok.szul_datum) AS `Szuletes helye es ideje`
FROM dolgozok
INNER JOIN telepulesek ON telepulesek.irszam = dolgozok.irszam
INNER JOIN kozteruletek ON kozteruletek.id = dolgozok.kozterulet_tipusa;
CREATE VIEW dolgozok_adata AS SELECT
dolgozok.id AS `Dolgozoi azonosito`,
CONCAT(dolgozok.vnev, " ", dolgozok.knev) AS `Dolgozo neve`,
CONCAT(dolgozok.irszam, " ", telepulesek.telepules_neve, ", ", dolgozok.kozterulet_neve, kozteruletek.kozterulet_neve, "hazszam emelet", ".")
AS `Lakhely`,
CONCAT(telepulesek.telepules_neve, ", ", dolgozok.szul_datum) AS `Szuletes helye es ideje`
FROM dolgozok
INNER JOIN telepulesek ON telepulesek.irszam = dolgozok.irszam
INNER JOIN kozteruletek ON kozteruletek.id = dolgozok.kozterulet_tipusa;
SELECT * FROM dolgozok_adata;
CREATE TABLE fizetesek (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT "A kiutalas egyedi azonositoja a rendszerben",
dolgozo INT NOT NULL,
fizetes FLOAT (9,3) NOT NULL,
kiutalas_datuma DATETIME DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE fizetesek
ADD CONSTRAINT fizetesek_dolgozok_fk
FOREIGN KEY (dolgozo) REFERENCES dolgozok(id) ON UPDATE CASCADE;
INSERT INTO fizetesek (dolgozo, fizetes)
VALUES (1, 15000.125),
(2, 7800),
(1, 3600),
(1, 560.75);
CREATE VIEW kifizetesek AS
SELECT fizetesek.id as `kiutalas azonositoja`,
CONCAT(dolgozok.vnev, " ", dolgozok.knev) AS `dolgozo neve`,
CONCAT(fizetesek.fizetes, " $") AS `fizetes`,
kiutalas_datuma AS `kiutalas idopontja`
FROM fizetesek INNER JOIN dolgozok ON dolgozok.id = fizetesek.dolgozo;
SELECT * FROM fizetesek WHERE id NOT IN (SELECT id FROM dolgozok);
/*Károlyi József*/
SELECT vnev, knev, fizetes FROM dolgozok
LEFT JOIN fizetesek ON dolgozok.id = fizetesek.dolgozo
WHERE fizetes IS NULL;
/*EMPTY SET*/
SELECT vnev, knev, fizetes FROM dolgozok
RIGHT JOIN fizetesek ON dolgozok.id = fizetesek.dolgozo
WHERE fizetes IS NULL;
SELECT * FROM kifizetesek
INNER JOIN dolgozok_adata ON dolgozok_adata.`Dolgozo neve` = kifizetesek.`dolgozo neve`;