MySQL - Переменные: Полное руководство для начинающих
Здравствуйте,unkerprising MySQL энтузиасты! Я рад быть вашим проводником в этом захватывающем путешествии в мир MySQL переменных. Как кто-то, кто преподавал информатику на протяжении многих лет, я могу заверить вас, что понимание переменных похоже на открытие сундука с сокровищами манипуляций с базами данных. Итак, погружаемся в это!

Переменные в MySQL: Основы манипулирования данными
Представьте переменные как маленькие контейнеры, которые хранят pieceparts информации. В MySQL эти контейнеры различаются по форме и размеру, и у каждого из них есть своя особая цель. Давайте рассмотрим их по одному.
Why Переменные имеют значение
Прежде чем мы перейдем к типам переменных, давайте поговорим о том, почему они так важны. Представьте, что вы готовите торт (присоединяйтесь ко мне, эта аналогия работает, обещаю!). Вам нужно измерить ингредиенты, верно? Переменные в MySQL как ваши мерные кружки и ложки. Они помогают вам хранить, измерять и manipulate данные точно.
Пользовательские переменные: Ваши личные контейнеры данных
Пользовательские переменные похожи на ваши личные контейнеры. Вы создаете их, называете их и решаете, что в них положить. Они невероятно гибки и могут использоваться в нескольких запросах в сеансе.
Как создавать и использовать пользовательские переменные
Давайте рассмотрим несколько примеров:
SET @my_favorite_number = 42;
SELECT @my_favorite_number;В этом примере мы создаем переменную @my_favorite_number и присваиваем ей значение 42. Символ @ сообщает MySQL, что это пользовательская переменная.
Теперь давайте используем эту переменную в запросе:
SELECT * FROM students WHERE age = @my_favorite_number;Этот запрос найдет всех студентов, которые старше 42 лет (предполагая, что у нас есть таблица students с колонкой age).
Профессиональный совет: Название переменных
Когда вы называете свои переменные, будьте описательными, но краткими. @s может быть быстро набрать, но @student_count tells вам exactly что находится внутри.
Локальные переменные: Временные помощники
Локальные переменные похожи на липкие заметки, которые вы используете при выполнении определенной задачи. Они существуют только внутри хранимой процедуры или функции и исчезают, как только вы заканчиваете.
Объявление и использование локальных переменных
Вот как вы можете объявить и использовать локальные переменные:
DELIMITER //
CREATE PROCEDURE calculate_area(IN radius DECIMAL(10,2))
BEGIN
DECLARE area DECIMAL(10,2);
SET area = PI() * radius * radius;
SELECT area AS circle_area;
END //
DELIMITER ;
CALL calculate_area(5);В этом примере area является локальной переменной. Она объявлена с помощью statements DECLARE и существует только внутри процедуры calculate_area.
Why Использовать локальные переменные?
Локальные переменные великолепны для временных вычислений или хранения промежуточных результатов. Они держат ваш код чистым и организованным, особенно в сложных процедурах.
Системные переменные: Глобальные настройки
Системные переменные похожи на настройки вашего телефона. Они управляют тем, как работает MySQL, и могут быть настроены на уровне сервера или сеанса.
Типы системных переменных
- Global Переменные: Влияют на общую работу сервера
- Сеансовые переменные: Влияют только на текущее соединение
Вот как вы можете viewed и устанавливать системные переменные:
-- Просмотр глобальной переменной
SHOW GLOBAL VARIABLES LIKE 'max_connections';
-- Установка глобальной переменной (требуется привилегии)
SET GLOBAL max_connections = 1000;
-- Просмотр сеансовой переменной
SHOW SESSION VARIABLES LIKE 'autocommit';
-- Установка сеансовой переменной
SET SESSION autocommit = 0;Common Системные переменные
Вот таблица некоторых часто используемых системных переменных:
| Название переменной | Описание | Область действия | 
|---|---|---|
| max_connections | Максимальное количество одновременных клиентских подключений | Global | 
| autocommit | Whether автоматически commit-ить транзакции | Session | 
| character_set_server | По умолчанию набор символов для сервера | Global | 
| max_allowed_packet | Максимальный размер одного пакета или любого созданного/промежуточного строк | Both | 
| sql_mode | Режим SQL для сервера | Both | 
Мощь системных переменных
Понимание системных переменных может помочь вам точно настроить производительность вашего MySQL сервера. Это как возможность настраивать двигатель автомобиля для оптимальной работы в различных условиях.
Все вместе: Реальный мир сценарий
Давайте представим, что мы создаем простую систему инвентаризации книг. Мы будем использовать различные типы переменных, чтобы сделать наши запросы более эффективными и гибкими.
-- Установить пользовательскую переменную для ID нашего书店
SET @bookstore_id = 1;
-- Создание процедуры для подсчета книг и использование локальных переменных
DELIMITER //
CREATE PROCEDURE count_books_by_genre(IN genre VARCHAR(50))
BEGIN
DECLARE book_count INT;
SELECT COUNT(*) INTO book_count
FROM books
WHERE book_genre = genre AND store_id = @bookstore_id;
SELECT CONCAT('Number of ', genre, ' books: ', book_count) AS result;
END //
DELIMITER ;
-- Вызов процедуры
CALL count_books_by_genre('Science Fiction');
-- Использование системной переменной для установки максимального количества результатов
SET SESSION sql_select_limit = 1000;
-- Теперь давайте запросим наши книги
SELECT * FROM books WHERE store_id = @bookstore_id;В этом примере мы использовали:
- Пользовательскую переменную (@bookstore_id) для хранения ID нашего书店
- Локальные переменные в нашей процедуре для подсчета книг
- Системную переменную (sql_select_limit) для управления результатами нашего запроса
Заключение: Ваше путешествие с переменными
Поздравляю! Вы только что начали увлекательное путешествие в мир MySQL переменных. Помните, переменные ваши друзья в мире баз данных. Они помогают вам писать более эффективные, гибкие и мощные запросы.
Пока вы продолжаете свое приключение с MySQL, не бойтесь экспериментировать с различными типами переменных. Как и при изучении любого нового языка, практика делает perfect. Так что вперед, откройте свою MySQL консоль и начните играть с переменными. Кто знает? Вы можете стать виртуозом переменных в вашем классе программирования!
Счастливого запроса и пусть ваши переменные всегда будут хорошо определены, а данные чистыми!
Credits: Image by storyset
