Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



1. Основи моделювання інформаційних систем Загальне поняття системи. Еволюційні системи

Скачати 472.5 Kb.

1. Основи моделювання інформаційних систем Загальне поняття системи. Еволюційні системи




Скачати 472.5 Kb.
Сторінка4/4
Дата конвертації10.03.2017
Розмір472.5 Kb.
1   2   3   4

6. Збережені процедури і запити

Хранимая процедура— компилируемый объект базы данных, хранящийся на сервере и представляющий собой набор SQL-инструкций. Хранимые процедуры могут обладать:



  • входными и выходными параметры;

  • локальными переменными;

  • циклами и ветвлениями, то есть в них могут использоваться инструкции управления потоком.

  • в них могут производиться

результаты которых могут присваиваться переменным и параметрам.

Создание


DELIMITER //

CREATE PROCEDURE `procedure2`(IN sTitle VARCHAR(255))

BEGIN

INSERT INTO `threads` (`title`) VALUES (sTitle);



UPDATE `variables` SET `value` = `value` 1 WHERE `name` = 'threads';

END


// DELIMITER;

CREATE


[DEFINER = { user | CURRENT_USER }]

PROCEDURE sp_name ([proc_parameter[,...]])

[characteristic ...] routine_body

 

CREATE



[DEFINER = { user | CURRENT_USER }]

FUNCTION sp_name ([func_parameter[,...]])

RETURNS type

[characteristic ...] routine_body

 

proc_parameter:



[IN | OUT | INOUT] param_name type

Параметр IN передает значение в процедуру. Процедура могла бы изменять значение, но модификация не видима вызывающему оператору, когда процедура завершается. Параметр OUT передает значение из процедуры обратно вызывающему оператору. Начальное значение внутри процедуры NULL, и значение видимо вызывающему оператору, когда процедура завершается. Параметр INOUT инициализирован вызывающим оператором, может изменяться процедурой, и любое изменение, сделанное процедурой, видимо вызывающему оператору, когда процедура завершается.

Вызов

CALL `procname`;



CALL `procname`(arg1,arg2,... argN);

SELECT `function_name` (arg1);

Удаление

DROP procedure `procname`;

DROP FUNCTION `functname`;

Разделители

delimiter //

delimiter ;;;

delimiter |

Переменные

Локальные переменные

DECLARE iVar INT DEFAULT 0;

SET iVar = 5;

SELECT * FROM `data` WHERE `id` = iVar;

где iVar - название переменной, INT - тип данных переменной, 0 - значение по умолчанию.

Присвоение переменной значения из запроса (если запрос возвращает более одной строки, то необходимо использовать limit)

DECLARE iVar INT DEFAULT 0;

SELECT COUNT(*) INTO iVar FROM `data`;

Пользовательские переменные

SET @iVar = 5;

SELECT @iVar;

Конструкции управления потоком

IF THEN

IF search_condition THEN statement_list

[ELSEIF search_condition

THEN statement_list] ...

[ELSE statement_list]

END IF


Пример:

DELIMITER //

 

CREATE FUNCTION SimpleCompare(n INT, m INT)



RETURNS VARCHAR(20)

 

BEGIN



DECLARE s VARCHAR(20);

 

IF n > m THEN SET s = '>';



ELSEIF n = m THEN SET s = '=';

ELSE SET s = '<';

END IF;

 

SET s = CONCAT(n, ' ', s, ' ', m);



 

RETURN s;

END

 

// DELIMITER ;



 

SELECT SimpleCompare('4','2');

-> //

------------------------



| SimpleCompare('4','2') |

------------------------

| 4 > 2 |

------------------------

CASE

CASE WHEN search_condition THEN statement_list



[WHEN search_condition THEN statement_list] ...

[ELSE statement_list]

END CASE

LOOP


[begin_label:]

LOOP


statement_list

END LOOP


[end_label]

REPEAT


[begin_label:]

REPEAT statement_list

UNTIL search_condition

END REPEAT;

[end_label]

WHILE


[begin_label:]

WHILE search_condition DO statement_list

END WHILE

[end_label]

LEAVE и ITERATE

LEAVE label

 

ITERATE label



Инструкция LEAVE используется, чтобы из выйти любой помеченной конструкции управления потоком данных. Это может использоваться внутри BEGIN ... END или же конструкций цикла (LOOP, REPEAT, WHILE). А инструкция ITERATE может появляться только внутри инструкций LOOP, REPEAT и WHILE. ITERATE предназначена для повторного выполнения цикла.

CREATE PROCEDURE doiterate(p1 INT)

BEGIN

label1: LOOP



SET p1 = p1 1;

IF p1 < 10 THEN ITERATE label1;

END IF;

LEAVE label1;



END LOOP label1;

SET @x = p1;

END

Пример


CREATE procedure `srednkvadr` ()

begin


declare sredn float DEFAULT 0;

SELECT avg(val) INTO sredn FROM sko;

UPDATE `sko` SET `sko`.`sko`= pow((`sko`.`val`-sredn),2);

end;//


Задание

Произвести средствами хранимых процедур численное интегрирование функции на отрезке.

Триггеры

Триггер - особый вид хранимой процедуры, срабатывающий автоматически по наступлению события, связанного с модификацией данных в таблице, к которой данный триггер относится. Срабатывают по наступлению событий:



  • insert;

  • update;

  • delete.

Триггеры могут выполняться до и после выполнения событий, для которых они установлены. Соответственно, на каждую таблицу могут быть установлены максимум 6 триггеров (по одному before и after для insert, delete, update).

Создание

delimiter |

 CREATE TRIGGER testref AFTER INSERT ON test1

FOR EACH ROW BEGIN

INSERT INTO test2 (a2) VALUES (NEW.a1);

DELETE FROM test3 WHERE a3 = NEW.a1;

UPDATE test4 SET b4 = b4 1 WHERE a4 = NEW.a1;

END;

delimiter ;



Удаление

DROP TRIGGER [IF EXISTS] trigger_name

Задание

Средствами триггеров осуществлять поддержание актуального состояния значения среднеквадратичного отклонения величины, значения которой хранятся в определенной таблице.

Регулярные выражения

Регулярные выражения - система синтаксического разбора текстовых фрагментов по формализованному шаблону. Используемые в mysql операторы для регулярных выражений:



  • NOT REGEXP

  • REGEXP (RLIKE)

SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';

-> 1


Экранирование спецсимволов осуществляется двумя обратными слэшами (\\).

Положение в строке


[[:<:]] -маркер начала слова




[[:>:]] -маркер конца слова

Квантификаторы

Представление

Число повторений

{ n}

Ровно n

{ m , n }

От m до n включительно

{ m ,}

Не менее m

{, n }

Не более n




Представление

Число повторений

Эквивалент

*

Ноль или более

{0,}



Одно или более

{1,}

?

Ноль или одно

{0,1}

Наборы символов

[a-zA-Z034] - набор символов состоящий из символов с a по Z и числа 0,3,4

Классы символов:


  • alnum Alphanumeric characters

  • alpha Alphabetic characters

  • blank Whitespace characters

  • cntrl Control characters

  • digit Digit characters

  • graph Graphic characters

  • lower Lowercase alphabetic characters

  • print Graphic or space characters

  • punct Punctuation characters

  • space Space, tab, newline, and carriage return

  • upper Uppercase alphabetic characters

  • xdigit Hexadecimal digit characters

SELECT 'justalnums' REGEXP '[[:alnum:]] '; -> 1

Группировка подвыражений

| - используется как "или"

() - используется для группировки

SELECT 'apa' REGEXP '^(pi|apa)$';
Процедури, що зберігаються, і тригери

Процедури, що зберігаються, є набором команд SQL, які можуть компілюватися і зберігатися на сервері. Таким чином, замість того, щоб зберігати часто використовуваний запит, клієнти можуть посилатися на відповідну процедуру, що зберігається. Це забезпечує кращу продуктивність, оскільки даний запит повинен аналізуватися лише одного дня і зменшується трафік між сервером і клієнтом. Концептуальний рівень можна також підвищити за рахунок створення на сервері бібліотеки функцій.

Тригер є процедурою, що зберігається, яка активізується при настанні певної події. Наприклад, можна задати процедуру, що зберігається, яка спрацьовує кожного разу при видаленні запису з транзакційної таблиці, - таким чином забезпечується автоматичне видалення відповідного замовника з таблиці замовників, коли всі його транзакції віддаляються.

Замо́вник - фізична чи юридична особа, розпорядник грошових коштів, який замовляє певні товари, роботи чи послуги (цінності), або подає заявку про придбання чи замовлення товарів, робіт чи послуг (цінностей) у майбутньому.

Автома́тика (грец. αύτόματος - самодіючий) - галузь науки і техніки, яка розробляє технічні засоби і методи для здійснення технологічних процесів без безпосередньої участі людини.

Можливість роботи з процедурами, що зберігаються, забезпечуватиме плановану мову оновлень. Наша мета - ввести процедури, що зберігаються, приблизно у версію сервера MYSQL 5.0. Ми працюємо також і над тригерами.

Переваги використання:


  • полегшується програмна частина розробки, оскільки частину простих дій здійснює сама БД

  • написані функції і процедури можуть бути заздалегідь скомпільовані, що прискорює виконання

Підпрограми, що зберігаються, зберігаються усередині таблиці proc бази mysql.

Для роботи з підпрограмами, що зберігаються, необхідні такі привілеї для користувача: CREATE ROUTINE, ALTER ROUTINE, EXECUTE.



Набор команд використовуваних разом з підпрограмами, що зберігаються:

Назва


Опис


CREATE PROCEDURE


створення процедури


CREATE FUNCTION


створення функції


ALTER PROCEDURE


зміна процедури


ALTER FUNCTION


зміна функції


DROP PROCEDURE


видалення процедури


DROP FUNCTION


видалення функції


SHOW CREATE PROCEDURE proc_name


показати текст процедури proc_name


SHOW CREATE FUNCTION func_name


показати текст функції func_name


SHOW PROCEDURE STATUS LIKE ‘proc_name’


показати характеристики процедури proc_name


SHOW FUNCTION STATUS LIKE ‘func_name’


показати характеристики функції func_name


CALL proc_name()


викликати процедуру proc_name


DECLARE


визначення локальних змінних


SET


зміна значень локальних і глобальних змінних


SELECT . INTO


збереження значення вказаного стовпця в змінну


IF


умовний оператор if-then-else-end


CASE . WHEN


оператор вибору


LOOP,REPEAT,WHILE


цикли


RETURNS


повернення значення з функції

1   2   3   4


Скачати 472.5 Kb.

  • Представление Число повторений
  • Представление Число повторений Эквивалент
  • Назва Опис