2019. május 6., hétfő

adatbázis 2. zh

USE forma1;


SHOW TABLES;
DROP TABLE logging;
DROP TABLE naplo;
DESC pilota;
ALTER TABLE pilota MODIFY szuldat DATE;
SELECT * FROM pilota;
DESC gp;
ALTER TABLE gp MODIFY datum DATE;
SELECT * FROM gp;
DESC eredmeny;
ALTER TABLE eredmeny MODIFY datum DATE;
SELECT * FROM eredmeny;
#alaplekerkezes
SELECT *
FROM eredmeny, gp, pilota
WHERE eredmeny.datum=gp.datum
AND eredmeny.pilotaaz=pilota.az;

#Baumgartner Zsolt 2003.02.10 Magyar
#Magyarorszag motorhiba miatt kiesett Jordan csapa

INSERT INTO gp
VALUES ("2003-3-10","Magyar", "Magyarország");
INSERT INTO pilota
VALUES (54321, "Baumgartner Zsolt", "F", "1980-01-01", "magyar");
INSERT INTO eredmeny
VALUES (NULL, "2003-3-10",54321, NULL,"motor", "Jordan", "Ferrari", NULL, TRUE);

#
SELECT *
FROM eredmeny, gp, pilota
WHERE eredmeny.datum=gp.datum
AND eredmeny.pilotaaz=pilota.az
AND pilota.nev LIKE"%Hill%"
AND helyezes<4;

#ugyanez más szintaktikával!
SELECT *
FROM eredmeny
INNER join gp ON eredmeny.datum=gp.datum INNER join pilota ON eredmeny.pilotaaz=pilota.az

where pilota.nev LIKE"%Hill%"
AND helyezes<4;

#még egyszerűbben, ha ugyanaz a két táblában az oszlopnév
SELECT *
FROM eredmeny
natural join gp
INNER join pilota ON eredmeny.pilotaaz=pilota.az

where pilota.nev LIKE"%Hill%"
AND helyezes<4;





USE FELTALALOK;
SHOW TABLES;
DESC KUTATO;
SELECT * FROM KUTATO;
DESC TALALMANY;
DESC KAPCSOL;
SELECT *
FROM KAPCSOL
NATURAL JOIN TALALMANY
NATURAL JOIN KUTATO;
#
SELECT NEV, TALNEV
FROM KAPCSOL
NATURAL JOIN TALALMANY
NATURAL JOIN KUTATO
WHERE SZUL<1920;
#8.
SELECT NEV
FROM KUTATO LEFT OUTER JOIN KAPCSOL ON KUTATO.FKOD=KAPCSOL.FKOD
WHERE TKOD IS NULL;
#9
SELECT COUNT(*)
FROM KAPCSOL RIGHT JOIN TALALMANY ON KAPCSOL.TKOD=TALALMANY.TKOD
WHERE FKOD IS NULL ;
#MÁSKÉPPEN JOIN NÉLKÜL
#1.LÉPÉS: TALÁLMÁNYOK, AMIKNEK VAN FELTALÁLÓJA
SELECT DISTINCT TKOD FROM KAPCSOL;
#2. LÉPÉS: KIIRATNI, AMIK NINCS E KÖZÖTT
SELECT *
FROM TALALMANY
WHERE TKOD NOT IN (SELECT DISTINCT TKOD FROM KAPCSOL);
#3.
SELECT TALNEV FROM TALALMANY
WHERE TALNEV LIKE "%MOTOR%"
ORDER BY TALNEV;
#4.
SELECT TALNEV
FROM KAPCSOL
NATURAL JOIN TALALMANY
NATURAL JOIN KUTATO
WHERE NEV="FORGÓ LÁSZLÓ";
#5.
SELECT TALNEV
FROM KAPCSOL
NATURAL JOIN TALALMANY
NATURAL JOIN KUTATO
;
#6.
SELECT NEV, MEGHAL-SZUL
FROM KAPCSOL
NATURAL JOIN TALALMANY
NATURAL JOIN KUTATO
WHERE TALNEV="GOLYÓSTOLL";
#7.
SELECT NEV,TALNEV, MEGHAL, SZUL
FROM KAPCSOL
NATURAL JOIN TALALMANY
NATURAL JOIN KUTATO
WHERE MEGHAL>=1801 AND SZUL<=1850;




USE forma1;
SELECT *
FROM eredmeny
INNER JOIN pilota ON pilota.az=eredmeny.pilotaaz
INNER JOIN gp ON eredmeny.datum=gp.datum;

SELECT DISTINCT pilota.nev
FROM eredmeny
INNER JOIN pilota ON pilota.az=eredmeny.pilotaaz
INNER JOIN gp ON eredmeny.datum=gp.datum
WHERE helyezes=1
ORDER BY pilota.nev;

delimiter $$ #parancs vége jel megváltoztatása
DROP PROCEDURE if exists forma1.futamgyoztesek $$
CREATE PROCEDURE forma1.futamgyoztesek()
BEGIN
SELECT DISTINCT pilota.nev
FROM eredmeny
INNER JOIN pilota ON pilota.az=eredmeny.pilotaaz
INNER JOIN gp ON eredmeny.datum=gp.datum
WHERE helyezes=1
ORDER BY pilota.nev;
END $$
delimiter ;

CALL forma1.futamgyoztesek();

SELECT *
FROM pilota
WHERE nev LIKE "%Hill%";

delimiter $$
DROP PROCEDURE if EXISTS forma1.pilotaAdata $$
CREATE PROCEDURE forma1.pilotaAdata(IN pilotaNeve VARCHAR(50))
BEGIN
SELECT *
FROM pilota
WHERE nev LIKE CONCAT("%",pilotaNeve,"%");
END $$
delimiter ;
CALL forma1.pilotaAdata("John");
SELECT COUNT(*)
FROM eredmeny
INNER JOIN pilota ON pilota.az=eredmeny.pilotaaz
INNER JOIN gp ON eredmeny.datum=gp.datum
WHERE pilota.nev="Graham Hill";


delimiter $$
DROP FUNCTION if EXISTS forma1.pilotaFutamDb $$
CREATE FUNCTION forma1.pilotaFutamDb(pilotaNeve VARCHAR(50))
RETURNS INT
BEGIN #a begin end olyan mint a kapcsos zárójel
    DECLARE vissza INT DEFAULT 0;
    SET vissza=(
    SELECT COUNT(*)
    FROM eredmeny
    INNER JOIN pilota ON pilota.az=eredmeny.pilotaaz
    INNER JOIN gp ON eredmeny.datum=gp.datum
    WHERE pilota.nev= pilotaNeve
    );
    RETURN vissza;
END $$
delimiter ;

SELECT forma1.pilotaFutamDb("Juan-Manuel Fangio");




USE forma1;
DELIMITER $$
DROP TRIGGER if EXISTS nagybetus $$
CREATE TRIGGER nagybetus BEFORE INSERT ON forma1.pilota
FOR EACH ROW
BEGIN
  SET new.nev = UPPER(new.nev) ;
END $$
DELIMITER ;

INSERT INTO pilota(az,nev) VALUES(121212,"Mikka Hekkinen");
SELECT * FROM mysql.user;

CREATE USER titkarno@localhost;
SET PASSWORD FOR titkarno@localhost=PASSWORD("titok");
SELECT PASSWORD("kkiilkéáéá.s..information_schema. ");
CREATE USER titkarno@'192.168.1.%';
GRANT SELECT ON forma1.pilota TO titkarno@localhost
WITH GRANT OPTION ;
GRANT ALL ON *.* TO titkarno@localhost
WITH GRANT OPTION ;

REVOKE SELECT ON forma1.pilota FROM titkarno@localhost;

Nincsenek megjegyzések:

Megjegyzés küldése

Na írjad ;)