




DELIMITER //
CREATE PROCEDURE get_filmid (pikkus_val int)
BEGIN
SELECT filmnimetus, pikkus
FROM film
WHERE pikkus < pikkus_val;
END //





CREATE TABLE linnad(
linnID int primary key identity(1,1),
linnanimi varchar(20) UNIQUE,
rahvaArv int);
insert into linnad(linnanimi, rahvaArv)
Values (‘Paide’, 10000);
select * from linnad
–kuvab tabelist linnad 2 veergu
USE protseduurid;
go
CREATE PROCEDURE lihtneSelect
AS
BEGIN
SELECT linnanimi, rahvaArv
from linnad;
END


–lisamine tabelisse
USE protseduurid;
go
CREATE PROCEDURE lisalinn
@nimi varchar(30),
@rahvaKogus int
AS
BEGIN
INSERT INTO linnad(linnanimi, rahvaArv)
VALUES(@nimi, @rahvaKogus);
SELECT * FROM linnad;
END
EXEC lisalinn @nimi=’Tapa’, @rahvaKogus=20000

USE protseduurid;
go
CREATE PROCEDURE SuuremKui
@rahvaKogus int
AS
BEGIN
SELECT * from linnad
WHERE rahvaArv > @rahvaKogus
END
EXEC SuuremKui @rahvaKogus=10000;
USE protseduurid;
go
CREATE PROCEDURE linnaOtsing
@taht char(1)
AS
BEGIN
SELECT * from linnad
WHERE linnanimi LIKE @taht + ‘%’;
END
EXEC linnaOtsing @taht=’T’;

USE protseduurid;
go
CREATE PROCEDURE linnaKustutamine
@kustutaID int
AS
BEGIN
SELECT * FROM linnad;
DELETE FROM linnad
WHERE linnID=@kustutaID
SELECT * FROM linnad;
END


USE protseduurid;
go
CREATE PROCEDURE hinnang
AS
BEGIN
SELECT linnanimi, rahvaArv,
IIF(rahvaArv>100000, ‘Suur Linn’, ‘Väike linn’) AS hinnang
FROM linnad;
END
EXEC hinnang
3
CREATE TABLE rezisoor (
rezisoorID int primary key identity(1,1),
eesnimi varchar(25),
perenimi varchar(25)
)

SET IDENTITY_INSERT rezisoor ON;
INSERT INTO rezisoor (rezisoorID, eesnimi, perenimi)
VALUES (1,’Quentin’, ‘Tarantino’),
(2,’Sarik’, ‘Andreasjan’),
(3,’Svetlana’, ‘Baskova’),
(4,’Michael’, ‘Bay’),
(5,’Guy’, ‘Richi’),
(6,’Woody’, ‘Allen’);
SELECT * FROM rezisoor;

USE protseduurid;
go
CREATE PROCEDURE rezisooriEsimene
@taht char(1)
AS
BEGIN
SELECT * from rezisoor
WHERE eesnimi LIKE @taht + ‘%’;
END
EXEC rezisooriEsimene @taht=M
SELECT * FROM rezisoor;
USE protseduurid;
go
CREATE PROCEDURE rezisooriKustutamine
@kustutaID int
AS
BEGIN
SELECT * FROM rezisoor;
DELETE FROM rezisoor
WHERE rezisoorID=@kustutaID
SELECT * FROM rezisoor;
END
EXEC rezisooriKustutamine @kustutaID=2

USE protseduurid;
go
CREATE PROCEDURE StruktuuriMuutmine
@tegevus varchar(20),
@tabelinimi varchar(20),
@veerunimi varchar(20),
@tyyp varchar(20)
AS
BEGIN
DECLARE @sqltegevus as varchar(max)
set @sqltegevus=case
when @tegevus=’lisa’ THEN CONCAT(‘ALTER TABLE ‘, @tabelinimi, ‘ ADD ‘, @veerunimi, ‘ ‘, @tyyp)
END;
print @sqltegevus;
BEGIN
EXEC @sqltegevus;
END
END;
EXEC StruktuuriMuutmine @tegevus=’lisa’, @tabelinimi =’linnad’, @veerunimi =’test’,@tyyp=’int’;

–veergu kustutamine
EXEC StruktuuriMuutmine @tegevus=’kustuta’, @tabelinimi =’linnad’, @veerunimi =’test’;
IF
USE protseduurid;
go
CREATE PROCEDURE StruktuuriMuutmine
@valik varchar(20),
@tabelinimi varchar(20),
@veerunimi varchar(20),
@tyyp varchar(20)
AS
BEGIN
DECLARE @sqltegevus as varchar(max)
IF @valik=’lisa’
SET @sqltegevus=CONCAT(‘ALTER TABLE ‘, @tabelinimi, ‘ ADD ‘, @veerunimi, ‘ ‘, @tyyp)
execute (@sqltegevus);
IF @valik=’kustuta’
set @sqltegevus=CONCAT(‘ALTER TABLE ‘, @tabelinimi, ‘ ADD ‘, @veerunimi, ‘ ‘, @tyyp)
execute (@sqltegevus);
END;

ЗАДАНИЕ
–1) Tabelinimi paevik(id,õpilane,hinnad)
–(5 õpilast) (igaühel on 5 hinnangut)
–2) Leidke iga õpilase keskmine hinne ja kuvage 3 parimat
–3) Lisage väli “Märkused” ja kirjutage õpilastele kommentaarid
CREATE TABLE paevikud (
ID_paevik INT PRIMARY KEY IDENTITY(1,1),
opilane VARCHAR(50),
hinne int,
markus VARCHAR(200)
);
INSERT INTO paevik (student, hinnad)
VALUES
(‘Иванов’, ‘5’),
(‘Петров’, ‘5’),
(‘Сидоров’, ‘2’),
(‘Кузнецов’, ‘4’),
(‘Новикова’, ‘3’);
CREATE PROCEDURE find_average_grade
AS
BEGIN
SELECT AVG(hinne) AS keskmine_hinne FROM paevikud;
END;


BEGIN
INSERT INTO paevik(opilane, hinne)
VALUES (nimi, hinne);
SELECT * FROM paevik;
END

BEGIN
SELECT AVG(hinne) AS keskmine_hinne FROM paevik;
END

BEGIN
SELECT opilane, hinne,
IF(hinne>3, ‘Сдал’, ‘Не сдал’) as result
from paevik;
END