MySQL для чайников

Введение в управление базами данных с использованием MySQL применительно к электронной коммерции.

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

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

Предположим, у нас есть следующая таблица, полученная из данных, которые я извлек из последней коллекции Isabel Marant Весна / Лето 2020:

В приведенной выше таблице представлена ​​информация о пяти нарядах из новой коллекции, включая длину брюк, цвет наряда (монохромный или разноцветный), наличие в наряде пояса (записанного как логическое значение) и пол модели, создающей образ. У каждого наряда также есть индивидуальное значение идентификатора, поэтому к нему можно получить доступ независимо. Для простоты назовем эту таблицу Clothing_Data.

Итак, как мы можем использовать MySQL для доступа к этим данным и управления ими?

Выбор значений

Допустим, у нас есть пользователь, который ищет в коллекции все монохромные наряды. Как мы можем получить доступ к этим данным и вернуть их?

SELECT * FROM Clothing_Data WHERE color = "mono";

Ключевое слово SELECT используется для получения строк из таблицы, заданной заданным условием WHERE. Условия WHERE поддерживают операторы =,! =, ›,‹, ≥ и ≤. Как и в операторах IF в Python, эти условия можно объединить с помощью и. Например:

SELECT * FROM Clothing_Data WHERE belt = 0 and length = "long"; вернет все наряды, включая длинные брюки без ремня.

Переменные

Что, если мы хотим манипулировать выбранными данными и использовать их в других контекстах? Можем ли мы сохранить эти данные в… переменной?

SELECT color INTO @color WHERE id = 4;

Этот запрос сохраняет значение цвета одежды с ID = 4 в переменной «@color». Мы можем легко вернуть значение этой переменной через запросSELECT @color;.

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

SET @color = "multi"
SELECT * FROM Clothing_Data WHERE color = @color;

ЕСЛИ Функции

Вместо операторов IF MySQL поддерживает IF функции, которые могут быть вложены непосредственно в запросы, такие как SELECT. Например:

SELECT id, belt, IF(belt > 0, "BELT", "NO BELT")
FROM Clothing_Data;

Вышеупомянутый запрос вернет таблицу, содержащую поля id и belt строки, ЕСЛИ значение строки belt больше 0. Если наше условие belt > 0 равно Правда наш запрос вернет "BELT". Следовательно, он вернет "NO BELT", если условие ложно.

Функции ЕСЛИ будут удобно возвращать таблицу с нашими полученными результатами:

Добавление данных

Теперь, когда мы знаем, как получить доступ к данным из нашей базы данных, что нам делать, если мы хотим добавить данные?

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

Мы можем добавить столбец в нашу таблицу с помощью следующего запроса:

ALTER TABLE Clothing_Data
ADD COLUMN purchased VARCHAR(20) AFTER model;

Чтобы начать изменять нашу таблицу, нам нужно инициализировать наш запрос, вызвав ALTER TABLE, за которым следует имя нашей базы данных. Остальная часть запроса не требует пояснений. Мы добавляем purchased столбец после нашего model столбца. Определение нашего нового столбца - VARCHAR(20), что означает, что содержимое purchased будет содержать до двадцати символов. Например, жалобы типа "PURCHASED" или "NOT".

Теперь, когда у нас есть новый столбец, нам нужно соответственно вставить значения. Допустим, когда Isabel Marant впервые запускает свою новую коллекцию, все наряды начинаются как непроданные или "NOT" купленные.

INSERT INTO Clothing_Data (purchased) VALUES("NOT");

Когда кто-то покупает предмет, мы можем обновить его статус следующим образом:

SET id = id_of_purchased_item
INSERT INTO Clothing_Data (purchased) VALUES("PURCHASED") WHERE id = id_of_purchased_item;

Предположим, что id_of_purchased_item = 3. Вот как выглядит наша обновленная таблица данных:

Предупреждение: для выполнения запросов с изменением столбцов, таких как ALTER, CREATE и INSERT, вам потребуются эти привилегии для вашей таблицы.

Циклы и курсоры

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

Давайте объявим курсор cur, инициализированный для перебора значений ID и модели строки. Позже мы можем сохранить эти значения в переменных a и b.

DECLARE cur CURSOR FOR SELECT id, model FROM Clothing_Data;
DECLARE a INT;
DECLARE b VARCHAR(16);

Предположим, у нас есть покупатель, который хочет приобрести все женские наряды из нашей коллекции. Нам нужно установить значение куплено равным "PURCHASED" для каждого элемента, у которого модель = "F". Кроме того, мы знаем, что в нашем инвентаре всего пять элементов, а это означает, что наибольшее значение ID = 5.

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

Мы можем использовать синтаксис ITERATE, чтобы определить, когда продолжать цикл, а когда выходить (или LEAVE).

my_loop: LOOP
  FETCH cur INTO a, b;
  IF b == "F" THEN
    INSERT INTO Clothing_Data (purchased) VALUES "PURCHASED";
  END IF;
  IF a < 5 THEN
    ITERATE my_loop;
  END IF;
  LEAVE my_loop;
END LOOP;
CLOSE cur;

После объявления нашего цикла my_loop мы используем FETCH для сохранения значений ID и модели текущей строки в переменных a, b. Затем мы проверяем значение b и обновляем значение строки куплено IF b == "F". Затем мы смотрим на сохраненное нами значение ID, убеждаясь, что продолжаем только итерацию цикла IF a < 5. Ключевое слово ITERATE возвращает нас прямо к началу нашего цикла, и только IF a >= 5 мы дойдем до нашего оператора LEAVE, заставив нас выйти из этого блока кода.

Теперь наша таблица данных Clothing_Data будет точно отражать, что все женские наряды из нашей новой коллекции были куплены.

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

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

Извините, электронная коммерция, вы уже не так страшны.