MySQL - самая популярная в мире база данных с открытым исходным кодом. Со временем она зарекомендовала себя как одна из самых надежных, эффективных и простых в использовании систем управления базами данных. Это идеальный выбор для некоторых из крупнейших интернет-компаний.

Однако из-за простоты использования большинство разработчиков приложений не отказываются от использования его для наиболее популярных целей (CRUD). MySQL предлагает множество расширенных функций, которые могут сыграть важную роль в масштабировании или повышении эффективности вашего приложения.

В этом руководстве мы рассмотрим 4 расширенные функции MySQL и то, как они могут улучшить разработку вашего приложения.

1. Хранимые процедуры / подпрограммы

Хранимая процедура - это набор декларативных операторов SQL, хранящихся в каталоге базы данных. Хранимая процедура или подпрограмма, как следует из названия, представляет собой набор функций, созданных для уменьшения повторения задач, выполняемых базой данных и сервером. Они позволяют вам передавать им значение так же, как это делает обычная функция. Хранимая процедура может быть вызвана триггерами (которые мы рассмотрим в номере 3 этого поста). Она имеет имя, список параметров и оператор (ы) SQL и может вызываться механизмом базы данных и любыми подключенными языками программирования.

Хранимые процедуры значительно сокращают сетевой трафик и накладные расходы, главным образом потому, что функции хранятся непосредственно на сервере. Он предварительно компилируется и анализируется сервером базы данных перед отправкой обратно клиенту, поэтому уменьшается объем данных, отправляемых по сети, что приводит к высокой производительности.

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

Давайте создадим процедуру и посмотрим, как она работает;

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

DELIMITER $$ CREATE PROCEDURE student_data() BEGIN SELECT * FROM studentData; $$ END

Здесь мы создали простую процедуру под названием student_data, когда мы будем выполнять процедуру, она отобразит все данные из таблиц «student_data».

По умолчанию процедура связана с базой данных по умолчанию (используемой в данный момент базой данных). Чтобы связать процедуру с данной базой данных, при ее создании укажите имя как имя_базы_данных.stored_procedure_name.

Н / Д: Хранимая подпрограмма принимает параметры, если в вашем запросе есть предложение where, вы можете передать его в круглые скобки.

2. Использование индексов MySQL

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

"**Indexes are datababase structures that improve operations on a database table** ".

Запросы Mysql по замыслу выполняются сверху вниз по циклу по всем строкам в таблице для поиска конкретных данных. Однако, если создаются индексы, MYSQL может определять данные гораздо быстрее и эффективнее независимо от типа данных. Индексы позволяют запросам быстро определять, какие строки соответствуют условию в предложении WHERE оператора MySQL, и извлекать значения столбцов для этих строк. Индексы могут быть созданы через графический интерфейс базы данных, такой как Phpmyadmin, или с помощью необработанных SQL-запросов. Давайте посмотрим на пример. предположим, что у вас есть таблица базы данных с 10 строками, в которых хранятся идентификаторы пользователя и имена людей, вы можете написать такой запрос, чтобы выбрать одну запись;

SELECT * FROM tableName WHERE user_id = 9

После выполнения этого запроса Mysql просматривает все строки с 1 по 9 до тех пор, пока не совпадет с предложением WHERE. Однако для оптимизации этого запроса и повышения производительности мы можем добавить индекс, чтобы, когда следующий MYSQL захочет найти эти конкретные данные, индекс просто ссылается на них, что приводит к гораздо более быстрому запросу. Индекс можно добавить с помощью следующего запроса;

ALTER TABLE tableName ADD INDEX (user_id);

Хотя проблемы с производительностью возникают только при работе с большими наборами данных, нет причин не начинать использовать индексы в своих запросах.

3. Использование триггеров MySQL

Триггер - это объект, связанный с таблицей MYSQL. Как следует из названия, он вызывается, когда в таблице вызываются определенные действия CUD (Create, Update, Delete).

Триггеры очень похожи на хранимые процедуры, и их можно даже назвать особым типом хранимых процедур, однако они различаются по способу выполнения. В триггере, как только действие (CUD) выполняется над таблицей, оно вызывается автоматически, но в хранимой процедуре оно должно вызываться явно.

Триггер можно настроить на активацию до или после триггерного события. Например, вы можете активировать триггер до / после каждой строки, вставленной в таблицу, до / после каждой обновленной строки и до / после удаления строки.

Триггер можно создать следующим образом;

CREATE TRIGGER trigger_name WHEN ON tableName FOREACH ROW BEGIN --code-- END

Вы также можете использовать операторы if (они также поддерживают другие функции оценки и сравнения) в таких триггерах;

IF NEW.data < 0 THEN SET NEW.data = 0;

Теперь, когда вы вставляете какие-либо данные, которые меньше нуля, событие будет запускаться, и значение будет установлено на ноль. Но любое другое значение больше нуля будет вставлено соответственно.

Н / Д: триггеры SQL очень полезны для аудита изменений данных в таблицах, но могут увеличить накладные расходы на сервер базы данных.

4. Обработка данных с помощью математических функций

Mysql предоставляет несколько математических функций из коробки. Эти функции можно использовать для уменьшения объема кода, написанного на вашем языке сценариев. Существует множество встроенных математических функций, таких как COUNT и AVG, которые обеспечивают базовые функции подсчета количества результатов и их усреднения соответственно. Давайте посмотрим на некоторые из них;

Обработка данных с использованием COUNT. Этот запрос отображает общее количество заказов путем подсчета каждого идентификатора заказа. Кроме того, он группирует результаты в соответствии с происхождением каждого заказа.

SELECT COUNT(OrderID), Orgin FROM Orders GROUP BY Origin;

Обработка данных с помощью SUM SUM вычисляет общую сумму атрибута, переданного ему в качестве аргумента.

SELECT SUM(Salary) FROM Staff WHERE Staff_Age < 50;

Обработка данных с помощью AVG AVG возвращает общее среднее значение данного атрибута, переданного ему в качестве аргумента.

SELECT AVG(Price)FROM Products;

Заключение

В этом посте мы узнали о нескольких важных функциях MySQL. Есть намного больше команд, которые могут оказаться полезными при работе с вашим собственным проектом, вы всегда можете обратиться к официальному Руководству по MySQL, чтобы узнать больше об этих и других функциях.