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, компании могут получать последовательную аналитику, которая помогает им идти в ногу с развитием каждой новой тенденции в режиме реального времени. И теперь, прочитав этот пост, вы знаете, как это делать.
Извините, электронная коммерция, вы уже не так страшны.