88 lines
3.9 KiB
SQL
88 lines
3.9 KiB
SQL
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`; |