SQL protseduurid: MS SQL SERVER

Создание таблицы:

CREATE TABLE linnad(
    linnID int primary key identity(1,1),
    linnanimi varchar(25) UNIQUE,
    rahvaarv int)

INSERT INTO linnad(linnanimi, rahvaarv)
VALUES ('Viljandi', 50000);
SELECT * FROM linnad;

Выбирает столбец названия города и количества населения:

--Kuvab tabelist linnad 2 veergu
USE ProtseduurRogovski;
GO
CREATE PROCEDURE LihtneSelect
AS
BEGIN
SELECT linnanimi, rahvaarv
FROM linnad;
END
--protseduuri käivitamine
EXEC LihtneSelect;

Процедура добавления города:

USE ProtseduurRogovski;
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='Narva',@rahvakogus=20000;

Ищет города у которых больше 50000 жителей:

USE ProtseduurRogovski;
GO
CREATE PROCEDURE SuuremKui
@arv int
AS
BEGIN
SELECT * FROM linnad
WHERE rahvaarv > @arv;
END

EXEC SuuremKui @arv=50000;

Нахождение города по первой букве:

USE ProtseduurRogovski;
GO
CREATE PROCEDURE LinnaOtsing
@taht char(1)
AS
BEGIN
SELECT * FROM linnad
WHERE linnanimi LIKE @taht + '%';
END

EXEC LinnaOtsing 'T';
EXEC LinnaOtsing @taht='T';

Удаление города по айди:

USE ProtseduurRogovski;
GO
CREATE PROCEDURE Kustutamine
@kustutaID int
AS
BEGIN
SELECT * FROM linnad;
DELETE FROM linnad
WHERE linnID=@kustutaID;
SELECT * FROM linnad;
END

EXEC kustutamine 6;

Если в городе больше 90000, то город большой, если нет, то маленький:

USE ProtseduurRogovski;
GO
CREATE PROCEDURE hinnang
AS
BEGIN
SELECT linnanimi, rahvaarv,
IIF(rahvaarv>90000, 'Suur linn', 'Väike linn') AS hinnang
FROM linnad;
END

EXEC hinnang;

Добавление процедуры для добавления столбцов:

USE ProtseduurRogovski
GO
CREATE PROCEDURE StruktuuriMuutmine
@tegevus varchar(20),
@tabelinimi varchar(20),
@veerunimi varchar (20),
@tyyp varchar(20)=null
AS
BEGIN
DECLARE @sqltegevus as varchar(max)
set @sqltegevus=case
WHEN @tegevus='lisa' THEN CONCAT('ALTER TABLE ', @tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp)
WHEN @tegevus='kustuta' THEN CONCAT('ALTER TABLE ', @tabelinimi, ' DROP COLUMN ', @veerunimi)
END;
print @sqltegevus;
BEGIN 
EXEC (@sqltegevus);
END
END;

EXEC StruktuuriMuutmine @tegevus='kustuta',@tabelinimi ='linnad', @veerunimi='test';

Тоже самое только через иф:

USE ProtseduurRogovski
GO
CREATE PROCEDURE StruktuuriMuutmine2
@valik varchar(20),
@tabelinimi varchar(20),
@veerunimi varchar (20),
@tyyp varchar(20)=null
AS
BEGIN
DECLARE @sqltegevus as varchar(max)

IF @valik='lisa'
SET @sqltegevus=CONCAT('ALTER TABLE ', @tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp);
IF @valik='kustuta'
SET @sqltegevus=CONCAT('ALTER TABLE ', @tabelinimi, ' DROP COLUMN ', @veerunimi);
execute (@sqltegevus);
END

--Lisamine
EXEC StruktuuriMuutmine2 @valik='lisa',@tabelinimi ='linnad', @veerunimi='test',@tyyp='int';

SELECT * FROM linnad;

--Kustutamine
EXEC StruktuuriMuutmine2 @valik='kustuta',@tabelinimi ='linnad', @veerunimi='test';

SELECT * FROM linnad;

Kinoteatrlaus:

Создание таблицы режиссёров:

CREATE TABLE rezisoor (
  rezisoorID int NOT NULL,
  eesnimi varchar(25) DEFAULT NULL,
  perenimi varchar(25) DEFAULT NULL
)

-- Дамп данных таблицы `rezisoor`

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 kinoteaterlausRogovski;
GO
CREATE PROCEDURE RezOtsing
@taht char (1)
AS
BEGIN
SELECT * FROM rezisoor
WHERE eesnimi LIKE @taht + '%';
END

EXEC RezOtsing 'S';

Обновление возраста режиссёров:

USE kinoteaterlausRogovski
GO
CREATE PROCEDURE updVanus
@vanusarv int,
@IDarv int
AS
BEGIN
UPDATE rezisoor
SET vanus = @vanusarv
WHERE rezisoorID = @IDarv;
SELECT * FROM rezisoor;
END

EXEC updVanus @vanusarv=50,@IDarv=6;

Процедура показывает опытный или нет по возрасту режиссёр:

USE kinoteaterlausRogovski
GO
CREATE PROCEDURE kogenud
AS
BEGIN
SELECT eesnimi, perenimi, vanus,
IIF(vanus>40, 'kogenud', 'ei koggenud') AS hinnang
FROM rezisoor;
END

EXEC kogenud;

Добавление режиссёра:

USE [kinoteaterlausRogovski]
GO
/****** Object:  StoredProcedure [dbo].[LisaRez]    Script Date: 06.03.2023 11:17:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[LisaRez]
@ID int,
@nimi varchar (30),
@pere varchar (30),
@vanusarv int
AS
BEGIN
INSERT INTO rezisoor(rezisoorID,eesnimi,perenimi,vanus)
VALUES (@ID, @nimi, @pere, @vanusarv);
SELECT * FROM rezisoor
END

Удаление режиссёра:

USE kinoteaterlausRogovski
GO
CREATE PROCEDURE Kustutamine
@kustutaID int
AS
BEGIN
SELECT * FROM rezisoor;
DELETE FROM rezisoor
WHERE rezisoorID=@kustutaID;
SELECT * FROM rezisoor;
END

EXEC kustutamine 7;USE kinoteaterlausRogovski
GO
CREATE PROCEDURE Kustutamine
@kustutaID int
AS
BEGIN
SELECT * FROM rezisoor;
DELETE FROM rezisoor
WHERE rezisoorID=@kustutaID;
SELECT * FROM rezisoor;
END

EXEC kustutamine 7;

Leave a Reply

Your email address will not be published. Required fields are marked *