Задания по базе данных Кинотеатр
Процедура поиска фильма по первой букве/первым буквам
Процедура для поиска фильма по первой букве либо нескольким первым буквам названия. Введём переменную nimi, которая будет заменяться на вводимые пользователем буквы. В результате работы процедуры будут отображаться ID и название фильма.

PROCEDURE `filmOtsimine`(IN `nimi` VARCHAR(10)) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN SELECT filmID, filmNimetus from film WHERE filmNimetus LIKE concat(nimi, '%'); END

Процедура по добавлению языка
Создадим процедуру для добавления языка. Чтобы таблица заполнялась корректно, создадим три переменных — keelEE, keelEN, keelRU. Процедура будет добавлять в таблицу языки с их названиями на эстонском, английском и русском. Так же пропишем в процедуре Select * from keel чтобы видеть результат сразу после выполнения.

PROCEDURE `keeleLisamine`(IN `keelEE` VARCHAR(20), IN `keelEN` VARCHAR(20), IN `keelRU` VARCHAR(20)) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN INSERT INTO keel(keelNimi, keelNimiInglise, keelNimiVene) VALUES(keelEE, keelEN, keelRU); SELECT * FROM keel; END
Добавим в таблицу китайский язык:

Процедура по добавлению нового фильма
Создадим процедуру для добавления фильма. Чтобы таблица заполнялась корректно, создадим переменные — Nimi, ZanrID, KeelID, Pikkus, RezisorID, FilmtypeID. Процедура будет добавлять в таблицу название фильма, жанр, язык, продолжительность, режиссера и тип фильма. Так же пропишем в процедуре Select * from film чтобы видеть результат сразу после выполнения.
PROCEDURE `filmiLisamine`(IN `Nimi` VARCHAR(25), IN `ZanrID` INT, IN `KeelID` INT, IN `Pikkus` INT, IN `RezisorID` INT, IN `FilmtypeID` INT) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN INSERT INTO film(filmNimetus, zanrID, keelID, pikkus, rezisorID, filmtypeID) VALUES(Nimi, ZanrID, KeelID, Pikkus, RezisorID, FilmtypeID ); SELECT * FROM film; END
Добавим новый фильм Kill Bill в таблицу:

Удаление данных из таблицы zanr по ID
Создадим переменную removeID типа INT. Будем удалять те записи из таблицы zanr, ID которых будет соответствовать значению removeID.

PROCEDURE `zanriKustutamine`(IN `removeID` INT) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DELETE FROM zanr WHERE zanrID=removeID; SELECT * FROM zanr; END
Удалим жанр Фентези под номером 2

Процедура UPDATE для таблицы rezisoor
Сделаем процедуру, при помощи которой можно будет обновлять данные в таблице rezisoor. Нам потребуются три переменных — ID типа INT, а так же uuseesnimi и uusperenimi типа VARCHAR и ограничением в 25 символов в соответствии с параметрами таблицы. Так же пропишем в процедуре Select * from rezisoor чтобы видеть результат сразу после выполнения.

PROCEDURE `rezisoorUpdate`(IN `rezID` INT, IN `uuseesnimi` VARCHAR(25), IN `uusperenimi` VARCHAR(25)) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN UPDATE rezisoor SET eesnimi=uuseesnimi, perenimi=uusperenimi WHERE rezisoorID=rezID; SELECT * FROM rezisoor; END
Заменим имя и фамилию режиссёра с ID 2 на Al Pacino:

Процедура ALTER для таблицы rezisoor
При помощи данной процедуры мы сможем выполнить команду ALTER TABLE и таким образом изменить структуру таблицы, например, добавив некоторые столбцы. Данная процедура будет несколько отличаться от предыдущих.
В процедуре будет использоваться переменная veerunimi типа VARCHAR c ограничением в 25 символов. С помощью этой переменной мы будем задавать имя новому столбцу.
Внутри самой процедуры будет использоваться локальная переменная @STMT. При помощи CONCAT она будет содержать команду ALTER TABLE, в которую будет добавляться название создаваемого столбца через переменную veerunimi.
После этого создадим т.н. «подготовленное выражение» S из содержимого локальной переменной @STMT при помощи команды PREPARE S FROM @STMT и запустим его командой EXECUTE S. В этот момент и будет выполняться наша процедура. Далее освободим «подготовленное выражение» от содержимого из переменной @STMT и посмотрим на результат с помощью команды SELECT * from rezisoor.

PROCEDURE `rezisoorAlter`(IN `veerunimi` VARCHAR(25)) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN SET @STMT=CONCAT("ALTER TABLE rezisoor ADD COLUMN ", veerunimi, " varchar(25) not null"); PREPARE S from @STMT; EXECUTE S; DEALLOCATE PREPARE S; SELECT * FROM rezisoor; END
Добавим новый столбец parimFilm
