Разделители используются, когда нам нужно определить хранимые процедуры, а также создать триггеры. Разделителем по умолчанию является точка с запятой.
Разделители в SQL
Создайте и вставьте значение в базу данных.
Но если мы рассматриваем несколько операторов, нам нужно использовать разные разделители, такие как $$ или //. Разделитель — это тип функции в SQL. Используя другой разделитель, //, мы получим такую ошибку:
Выход:
Теперь по умолчанию мы получаем ошибку. Как заставить это работать? Вместо точки с запятой, используемой в качестве разделителя по умолчанию, мы хотели бы использовать //. Возможно ли это в SQL?
Да, это возможно. Синтаксис для этого приведен ниже:
Запрос:
Delimeter// select*from world//
Выход:
Теперь, в этом случае, не будет вывода, потому что в операторе разделителя мы написали //, а затем в операторе выбора мы использовали разделитель $$. Разделитель в операторе разделителя, а также в операторе выбора должен быть одним и тем же, чтобы заставить его работать.
Теперь мы также можем использовать разделитель $$. Синтаксис приведен ниже:
Запрос:
Delimiter$$ select * from world$$
Когда мы пишем операторы SQL, мы используем точку с запятой для разделения двух разных операторов, как в примере ниже:
Запрос:
SELECT * FROM employees; SELECT * FROM players;
Например, MySQL workbench использует точку с запятой (;), чтобы разделить два оператора и затем выполнить каждый оператор отдельно.
Но хранимая процедура содержит несколько операторов, разделенных точкой с запятой (;).
Если мы используем клиентскую программу MySQL для определения хранимой процедуры, состоящей из символов точки с запятой, программа будет рассматривать всю хранимую процедуру не как один оператор, а как множество операторов.
Команда, которую мы можем использовать для переопределения разделителя:
DELIMITER delimiter_character
Символ-разделитель состоит из одного или нескольких символов, например: // или $$.
После изменения разделителя мы можем использовать новый разделитель для завершения оператора, как показано ниже:
DELIMITER // SELECT * FROM employees // SELECT * FROM players //
Чтобы изменить разделитель на разделитель по умолчанию, который представляет собой точку с запятой (;), мы можем использовать следующий оператор:
DELIMITER ;
Обычно хранимая процедура содержит несколько инструкций, разделенных точкой с запятой. Чтобы скомпилировать процедуру как один оператор, нам нужно временно изменить разделитель с точки с запятой (;) на другой разделитель, такой как $$ или //:
DELIMITER $$ CREATE PROCEDURE customers() BEGIN -- statements END $$ DELIMITER ;
Объяснение кода:
- Измените разделитель по умолчанию на $$.
- Теперь используйте точку с запятой (;) в теле и $$ после ключевого слова END, чтобы завершить процедуру.
- Снова измените разделитель по умолчанию на точку с запятой (;).