Portfoolio

Salvestatud protseduurid

-- protseduur mis lisab INSERT andmeid tabelisse brands
CREATE PROCEDURE lisaBrand
@brand_nimi varchar(30)
as
BEGIN
    INSERT INTO brands (brand_name) VALUES (@brand_nimi);
    SELECT * from brands;
END;

-- protseduuri kutse
EXEC lisaBrand 'Audi';
-- protseduur mis kustutab (DELETE) tabelist id järgi
CREATE PROCEDURE kustutaBrand
@id int
AS
BEGIN
    SELECT * FROM BRANDS;
    DELETE FROM brands WHERE brand_id=@id;
    SELECT * FROM BRANDS;
END;

-- protseduuri kutse
EXEC kustutaBrand 6;
-- protseduur mis otsib 1 tähe järgi brandinimed
CREATE PROCEDURE otsingiTathe
@taht char(1)
AS
BEGIN
    SELECT * FROM brands WHERE brand_name LIKE @taht+'%';
END;

-- protseduuri kutse
EXEC otsingiTathe 'A';
-- protseduur mis uuendab (UPDATE) brandinimi id järgi
CREATE PROCEDURE uuendaBrand
@id int,
@uus_brandNimi varchar(30)
AS
BEGIN
    SELECT * FROM brands;
    UPDATE brands SET brand_name=@uus_brandNimi
    WHERE brand_id=@id;
    SELECT * FROM brands;
END;

-- protseduuri kutse
EXEC uuendaBrand 2, 'Abibas';

Andmebaas „Kinoteatr“

Selles ülesandes lõin ja testisin SQL salvestatud protseduure andmebaasis Kinoteater (kinoteaterlaus) kasutades phpMyAdmin keskkonda (localhost).

Näidatud järgmised protseduurid:

  1. INSERT – uue filmi lisamine tabelisse film
  2. DELETE – kirje kustutamine tabelist zanr
  3. DROP TABLE – tabeli kustutamine nime alusel
  4. UPDATE – andmete uuendamine tabelis rezisoor
  5. ALTER TABLE – tabeli struktuuri muutmine
  6. Enda loodud protseduur – filmide kuvamine pikkuse alusel

Kõik protseduurid, millest õpetaja rääkis tunnis või videos:

  • Protseduur andmete lisamiseks (INSERT) suvalisse tabelisse andmebaasis kino.
DELIMITER //
CREATE PROCEDURE lisaFilm(
    IN nimetus VARCHAR(25),
    IN zanr INT,
    IN keel INT,
    IN pikkus INT,
    IN rezisor INT,
    IN filmituup INT,
    IN reklaam TEXT
)
BEGIN
INSERT INTO film(filmNimetus, zanrID, keelID, pikkus, rezisorID, filmtypeID, reklaam)
VALUES(nimetus, zanr, keel, pikkus, rezisor, filmituup, reklaam);
END //
DELIMITER ;
  • Protseduur kirjete kustutamiseks tabelist žanr sisestatud id alusel.
DELIMITER //
CREATE PROCEDURE kustutaZanr(IN id INT)
BEGIN
DELETE FROM zanr
WHERE zanrID = id;
END //
DELIMITER ;
  • Protseduur tabeli kustutamiseks sisestatud nime alusel (tabel ei tohi sisaldada võõrvõtit / secondary key).
DELIMITER //
CREATE PROCEDURE kustutaTabel(IN tabeli_nimi VARCHAR(50))
BEGIN
SET @sql = CONCAT('DROP TABLE ', tabeli_nimi);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
  • üks protseduur andmete uuendamiseks (UPDATE) tabelis režissöör;
DELIMITER //
CREATE PROCEDURE uuendaRezisoor(
IN id INT,
IN eesnimi VARCHAR(25),
IN perenimi VARCHAR(25)
)
BEGIN
UPDATE rezisoor
SET
eesnimi = eesnimi,
perenimi = perenimi
WHERE rezisoorID = id;
END //
DELIMITER ;
  • üks protseduur tabeli struktuuri muutmiseks (ALTER) tabelis režissöör.
DELIMITER //
CREATE PROCEDURE lisaVeerg()
BEGIN
ALTER TABLE rezisoor
ADD synniaasta INT;
END //
DELIMITER ;