CREATE TABLE filmtype (
filmTypeID int NOT NULL primary key,
filmType varchar(25) NOT NULL,
kirjeldus text DEFAULT NULL
);
SELECT * FROM filmtype;
INSERT INTO filmtype (filmTypeID, filmType, kirjeldus) VALUES
(1, '2D', '2D-arvutigraafika on pildi esitamine digitaalsete kahemõõtmeliste mudelitena, näiteks tasandilise geomeetria ja teksti abil.'),
(2, '3D', '3D-arvutigraafika on pildi esitamine digitaalsete kolmemõõtmeliste mudelitena, näiteks ruumilise geomeetria abil.\r\n\r\n3D-mudel on kolmemõõtmelise objekti matemaatiline esitus. Mudelit saab kuvada kahemõõtmelisena 3D-renderdamise kaudu või kasutada mittevisuaalse arvutisimulatsiooni või arvutuste jaoks. On olemas ka 3D-arvutigraafika tarkvara.'),
(3, '4D', '3D-arvutigraafika lisaeffektidega.');

1.Andmete lisamine tabelisse FilmType (FilmType ja Kirjeldus sisestab kasutaja kui käivatab protseduuri)
CREATE PROCEDURE filmTypeLisamine
@id int,
@type varchar(100),
@kirjeldus TEXT
AS
BEGIN
INSERT INTO filmtype (filmTypeID, filmType, kirjeldus)
VALUES (@id, @type, @kirjeldus);
SELECT * FROM filmtype;
END;
--kontroll
EXEC filmTypeLisamine 4, '10D', 'super filmid';
2. Kustutamis protseduur, kustutab filmtüüp tema ID järgi (kasutaja sisestab ID ja siis filmtüüp kustutakse)
CREATE PROCEDURE filmTypeKustutamine
@kustutamisID int
AS
BEGIN
SELECT * FROM filmtype;
DELETE FROM filmtype
WHERE filmtypeID=@kustutamisID;
SELECT * FROM filmtype;
END;
--kontroll
EXEC filmTypeKustutamine 4;

3. Otsing sisestatud tähte järgi(kasutaja sisestab filmitüüpi Esimene täht ja siis näidatakse kõik filmitüüpid)
CREATE PROCEDURE Otsing1taht
@taht CHAR(1)
AS
BEGIN
SELECT filmtype, kirjeldus
FROM filmtype
WHERE filmtype like concat(@taht, '%');
END
--kontroll
EXEC Otsing1taht 2

4. Uuendamis protseduur. Kasutaja sisestab uuendatud filmitüübi sisestatud id järgi.
CREATE PROCEDURE filmTypeUuendamine
@id int,
@uusFilmType varchar(100)
AS
BEGIN
UPDATE filmtype
SET filmType=@uusFilmType
WHERE filmTypeID=@id;
SELECT * FROM filmtype;
END
--kontroll
EXEC filmTypeUuendamine 1, '2D'

ZanrLisamine
CREATE PROCEDURE ZanrLisamine
@id int,
@type varchar(100),
@kirjeldus TEXT
AS
BEGIN
INSERT INTO zanr (zanrID, zanrNimi, zanrKirjeldus)
VALUES (@id, @type, @kirjeldus);
SELECT * FROM zanr;
END;
--kontroll
EXEC filmTypeLisamine 4, 'Dorama', 'super sleza mama';

ZanrKustutamine
CREATE PROCEDURE ZanrKustutamine
@kustutamisID int
AS
BEGIN
SELECT * FROM zanr;
DELETE FROM zanr
WHERE zanrID=@kustutamisID;
SELECT * FROM zanr;
END;
--kontroll
EXEC ZanrKustutamine 4;

tablekustuta
CREATE PROCEDURE tablekustuta
@tableKustutamine varchar (100)
AS
BEGIN
declare @STMT as varchar(max)
SET @STMT=CONCAT('DROP TABLE ', @tableKustutamine);
END;
PRINT @STMT;
BEGIN
EXEC(@STMT);
END
--kontroll
--придворитель советую создать таблицу тест!!!!
EXEC tablekustuta test


zanrNimiUuendamine
CREATE PROCEDURE zanrNimiUuendamine
@id int,
@uusZanrNimi varchar(100)
AS
BEGIN
UPDATE zanr
SET zanrNimi=@uusZanrNimi
WHERE zanrID=@id;
SELECT * FROM zanr;
END
--kontroll
EXEC zanrNimiUuendamine 1, 'test'

TabeliZanrStruktuuriMuutmine
CREATE PROCEDURE TabeliZanrStruktuuriMuutmine
@tegevus varchar(10),
@tabelinimi varchar(25),
@veerunimi varchar(25),
@tyyp varchar(25) =null
AS
BEGIN
DECLARE @STMT as varchar(max)
set @STMT=case
when @tegevus='add' then concat('ALTER TABLE ',
@tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp)
when @tegevus='drop' then concat('ALTER TABLE ',
@tabelinimi, ' DROP COLUMN ', @veerunimi)
END;
print @STMT;
begin
EXEC (@STMT);
END
END;
--добавление столбца
EXEC TabeliZanrStruktuuriMuutmine @tegevus='add', @tabelinimi='zanr', @veerunimi='test', @tyyp='int';
SELECT * FROM zanr;
