MySQL для начинающих: что это, зачем нужна, первые команды
Размер текста: A+ A-

MySQL для начинающих: что это, зачем нужна, первые команды

Нажмите, чтобы оценить наш труд:
[Всего: 1 Средняя: 5]

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

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

Прочие материалы по теме:

Простыми словами: что такое база данных и зачем она нужна ?

Представьте, что у вас есть коробка, куда вы складываете все бумажки с записями.

  • Когда бумажек мало — вы можете найти нужную за минуту.
  • Но когда их тысячи, вы начинаете путаться, терять листы и тратить часы на поиск.

База данных — это как шкаф с ящиками, на каждом из которых написана своя тема. Вы можете быстро достать нужный ящик, вытащить только то, что нужно, и положить всё обратно.

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

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

Один пользователь может иметь много заказов, каждый заказ — много товаров, а товары — свои категории. Вы можете за один запрос получить все заказы конкретного человека, не перебирая вручную тысячи строк.

Это и называется реляционная база данных, а MySQL — одна из самых удобных и быстрых для старта.

Введение

Представь себе обычную электронную таблицу Excel — лист, разбитый на строки и столбцы. Вот это и есть таблица. Каждый столбец — это какой-то один тип информации, например «Имя», «Возраст» или «Email». А каждая строка — это одна конкретная запись, например данные одного человека.

В MySQL вся информация хранится в таких таблицах. 

База данных — это просто набор нескольких связанных между собой таблиц. Например, у интернет-магазина может быть одна таблица «Пользователи», другая «Товары», третья «Заказы». Все они вместе образуют базу данных магазина.

Когда ты делаешь запрос (например, «показать все товары дешевле 1000 рублей»), MySQL быстро пробегает по строкам таблицы «Товары», смотрит на столбец «Цена» и выдаёт те строки, где цена подходит.

В этом и есть смысл — быстро находить нужную информацию среди тысяч или миллионов записей.

Вот как выглядит условная таблица «Пользователи»:

+----+------------+----------------------+----------+
| ID | Имя | Email | Возраст |
+----+------------+----------------------+----------+
| 1 | Анна | anna@mail.ru | 25 |
| 2 | Иван | ivan@mail.ru | 34 |
| 3 | Мария | maria@mail.ru | 29 |
+----+------------+----------------------+----------+
  • Столбцы (колонки) называются: ID, Имя, Email, Возраст.
  • Строки (записи) — это три человека с их данными.
  • База данных — это набор таких таблиц. Их может быть много.

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

Как и когда появилась MySQL

История MySQL началась в середине 90-х годов, когда шведская компания MySQL AB решила создать альтернативу дорогим базам данных.

В то время были Oracle, DB2, Informix — мощные, но сложные и очень дорогие. Основатели проекта хотели сделать систему, которая была бы бесплатной, быстрой и понятной для веб-разработчиков. Они взяли за основу язык SQL и добавили собственную надстройку — так родилась MySQL.

Первая стабильная версия вышла в 1996 году, и её сразу заметили создатели сайтов. Началась эпоха «LAMP» — связки Linux, Apache, MySQL и PHP, которая до сих пор остаётся стандартом для миллионов проектов. В 2008 году компанию купил Sun Microsystems, а позже — Oracle. Несмотря на опасения, MySQL осталась бесплатной и продолжает развиваться. Сегодня у неё есть два основных варианта: классическая MySQL и её форк MariaDB, созданный теми же разработчиками из-за неопределённости с лицензией.

Почему MySQL так полюбилась? Потому что она простая. Вы можете установить её на обычный компьютер, написать несколько строк кода на PHP и уже через час иметь работающее приложение. Она работает на всех хостингах, подходит для маленьких блогов и для крупных проектов вроде Facebook или Wikipedia. Конечно, у неё есть конкуренты — PostgreSQL, SQLite, но для старта и большинства веб-задач MySQL остаётся золотым стандартом.

Почему MySQL лучше, чем JSON, XML, TXT или массивы в файлах

Новички часто пытаются хранить данные в простых файлах: JSON, XML, CSV или даже в виде PHP-массивов, записанных в файл.

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

Вот главные преимущества MySQL перед хранением данных в файлах:

  1. Скорость поиска. MySQL использует индексы — как алфавитный указатель в книге. Даже в таблице с миллионом строк поиск занимает доли секунды.
  2. Целостность данных. Вы можете настроить связи между таблицами, запретить удаление товара, если на него есть заказы. В файлах такое невозможно без кучи ручного кода.
  3. Многопользовательский доступ. MySQL сама блокирует записи, если два пользователя пытаются изменить их одновременно. В файлах это приводит к конфликтам и потере данных.
  4. Безопасность. У MySQL есть система прав: можно дать доступ только к определённым таблицам или только на чтение. В файлах любой, кто имеет доступ к папке, видит всё.
  5. Стандартизация. SQL — это язык, который знают миллионы разработчиков. Вам не нужно придумывать свои форматы и парсеры.

Ниже я привел таблицу сравнения по ключевым параметрам:

Характеристика MySQL JSON / XML / TXT PHP-массив в файле
Скорость поиска по большим данным Высокая (индексы) Очень низкая (полное сканирование) Очень низкая (полное сканирование)
Одновременная запись Поддерживается (транзакции, блокировки) Не поддерживается (конфликты) Не поддерживается
Защита от дубликатов и ссылочная целостность Есть Нет Нет
Разграничение прав доступа Да Нет (только на уровне файлов) Нет
Удобство для больших данных Отлично Плохо Плохо

Конечно, у файлов есть одно преимущество: их легко читать и править руками. Но в реальной веб-разработке, где важна скорость, надёжность и многопользовательская работа, база данных не имеет альтернатив.

PhpMyAdmin и можно ли обойтись без него средствами PHP

PhpMyAdmin — это веб-интерфейс для управления MySQL. Вы открываете его в браузере, видите список баз и таблиц, можете выполнять любые SQL-запросы, импортировать дампы, редактировать структуру.

Для начинающих это отличный инструмент, чтобы не запоминать команды. Однако он не обязателен. Вы можете работать с MySQL исключительно через PHP, выполняя запросы из кода. Более того, в промышленной среде PhpMyAdmin часто отключают из соображений безопасности, оставляя только консольный доступ.

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

Например, CREATE DATABASECREATE TABLEALTER TABLE. Вам не нужен PhpMyAdmin, чтобы управлять базой. Но для быстрого просмотра данных, отладки или исправления ошибок вручную он очень удобен. Многие разработчики используют его на локальном сервере, а на боевом — только консоль.

Основная проблема PhpMyAdmin — его медлительность при работе с большими объёмами и уязвимости, которые периодически находят. Если вы уверенно владеете SQL, то можете полностью отказаться от веб-интерфейса и управлять всем через PHP-скрипты или через консольный клиент MySQL.

Для обучения и небольших проектов PhpMyAdmin — хороший старт, но не думайте, что без него не обойтись.

Простейшие команды MySQL в среде PHP

Все примеры ниже предполагают, что у вас есть доступ к базе данных и установлено расширение MySQLi или PDO. Я буду использовать MySQLi. Но здесь небольшое уточнение:

  • Обычный MySQL — это и есть тот самый способ, которым все пользовались годами.
  • Раньше было расширение mysql_ (сейчас оно устарело и удалено).
  • Его заменили на mysqli_ (буква “i” означает “improved” — улучшенный).
  • По сути, это тот же самый «обычный MySQL», просто с новыми функциями.

Все примеры я пишу именно на нём, и он есть на любом платном хостинге.

Подключение к базе данных

Первое, что нужно сделать в любом PHP-скрипте, работающем с MySQL — установить соединение.

$mysqli = new mysqli("localhost", "пользователь", "пароль", "имя_базы");
if ($mysqli->connect_error) {
die("Ошибка подключения: " . $mysqli->connect_error);
}

Здесь localhost — адрес сервера, далее логин, пароль и имя базы. Если база ещё не создана, можно подключиться без четвёртого параметра и создать её через SQL-запрос.

Создание базы данных

$sql = "CREATE DATABASE IF NOT EXISTS my_first_db";
if ($mysqli->query($sql) === TRUE) {
echo "База данных создана или уже существует";
} else {
echo "Ошибка: " . $mysqli->error;
}

Команда CREATE DATABASE IF NOT EXISTS создаёт базу, только если её нет. Это удобно, чтобы скрипт не падал при повторном запуске.

Проверка существования базы данных

$result = $mysqli->query("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'my_first_db'");
if ($result->num_rows > 0) {
echo "База данных существует";
} else {
echo "База данных не найдена";
}

Мы обращаемся к служебной таблице INFORMATION_SCHEMA.SCHEMATA, где хранятся имена всех баз на сервере.

Создание таблицы

$sql = "CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if ($mysqli->query($sql) === TRUE) {
echo "Таблица users создана";
} else {
echo "Ошибка: " . $mysqli->error;
}

Здесь мы создаём таблицу users с полями: числовой id (автоинкремент, первичный ключ), name (строка до 100 символов), email (уникальная строка), created_at (время создания).

Проверка существования таблицы

$result = $mysqli->query("SHOW TABLES LIKE 'users'");
if ($result->num_rows > 0) {
echo "Таблица users существует";
} else {
echo "Таблицы нет";
}

SHOW TABLES LIKE возвращает список таблиц, подходящих под шаблон. Если есть хотя бы одна — таблица существует.

Внесение записи в таблицу

$name = "Иван Петров";
$email = "ivan@example.com";
$stmt = $mysqli->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
if ($stmt->execute()) {
echo "Запись добавлена, ID: " . $stmt->insert_id;
} else {
echo "Ошибка: " . $stmt->error;
}
$stmt->close();

Используем подготовленный запрос (prepare + bind_param), чтобы защититься от SQL-инъекций. ss означает, что оба параметра — строки. insert_id возвращает автоматически сгенерированный первичный ключ.

Считывание данных из таблицы

$result = $mysqli->query("SELECT id, name, email FROM users");
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "ID: {$row['id']}, Имя: {$row['name']}, Email: {$row['email']}<br>";
}
} else {
echo "Нет записей";
}

fetch_assoc() возвращает очередную строку в виде ассоциативного массива. Цикл while перебирает все строки результата.

Этих команд достаточно, чтобы начать работать с MySQL в PHP. Дальше — практика и изучение более сложных запросов, объединений таблиц, транзакций. Но главное, что вы уже понимаете логику и можете создать своё первое приложение с базой данных.

Разбор примитивного примера

Ниже полный PHP-скрипт, который делает следующее: создаёт базу данных Test_DB, таблицы colors и materials, заполняет их данными и выводит комбинацию «зеленый кавролин». 

<?php
// Параметры подключения к серверу MySQL (пользователь с правами на создание БД)
$host = 'localhost';
$user = 'root'; // ваш пользователь MySQL
$password = 'Password'; // пароль пользователя (пароль от БД. Задайте если сами создаете БД)

// Создаём соединение без указания базы данных
$mysqli = new mysqli($host, $user, $password);

// Проверяем соединение
if ($mysqli->connect_error) {
die("Ошибка подключения: " . $mysqli->connect_error);
}

// 1. Создаём базу данных Test_DB, если её нет
$dbname = 'Test_DB';
$sql = "CREATE DATABASE IF NOT EXISTS `$dbname`";
if ($mysqli->query($sql) === TRUE) {
echo "База данных $dbname создана или уже существует.<br>";
} else {
die("Ошибка создания БД: " . $mysqli->error);
}

// Выбираем созданную базу данных для работы
$mysqli->select_db($dbname);

// 2. Создаём таблицу colors
$sql_colors = "CREATE TABLE IF NOT EXISTS colors (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
)";
if ($mysqli->query($sql_colors) === TRUE) {
echo "Таблица colors создана.<br>";
} else {
die("Ошибка создания colors: " . $mysqli->error);
}

// 3. Создаём таблицу materials
$sql_materials = "CREATE TABLE IF NOT EXISTS materials (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
)";
if ($mysqli->query($sql_materials) === TRUE) {
echo "Таблица materials создана.<br>";
} else {
die("Ошибка создания materials: " . $mysqli->error);
}

// 4. Заполняем таблицу colors (зеленый, красный, синий)
$colors = ['зеленый', 'красный', 'синий'];
foreach ($colors as $color) {
// Проверяем, есть ли уже такой цвет (чтобы не дублировать при повторном запуске)
$check = $mysqli->query("SELECT id FROM colors WHERE name = '$color'");
if ($check->num_rows == 0) {
$stmt = $mysqli->prepare("INSERT INTO colors (name) VALUES (?)");
$stmt->bind_param("s", $color);
$stmt->execute();
$stmt->close();
}
}
echo "Таблица colors заполнена.<br>";

// 5. Заполняем таблицу materials (кафель, кавролин, ламинат)
$materials = ['кафель', 'кавролин', 'ламинат'];
foreach ($materials as $material) {
$check = $mysqli->query("SELECT id FROM materials WHERE name = '$material'");
if ($check->num_rows == 0) {
$stmt = $mysqli->prepare("INSERT INTO materials (name) VALUES (?)");
$stmt->bind_param("s", $material);
$stmt->execute();
$stmt->close();
}
}
echo "Таблица materials заполнена.<br>";

// 6. Считываем данные и выводим комбинацию "зеленый кавролин"
// Найдём id для 'зеленый' и для 'кавролин'
$color_result = $mysqli->query("SELECT id FROM colors WHERE name = 'зеленый'");
$color_row = $color_result->fetch_assoc();
$color_id = $color_row['id'];

$material_result = $mysqli->query("SELECT id FROM materials WHERE name = 'кавролин'");
$material_row = $material_result->fetch_assoc();
$material_id = $material_row['id'];

// Получаем названия по id (хотя мы их уже знаем, но для универсальности)
$color_name = $mysqli->query("SELECT name FROM colors WHERE id = $color_id")->fetch_assoc()['name'];
$material_name = $mysqli->query("SELECT name FROM materials WHERE id = $material_id")->fetch_assoc()['name'];

// Выводим результат
echo "Результат: " . $color_name . " " . $material_name; // "зеленый кавролин"

// Закрываем соединение
$mysqli->close();
?>

Как это работает:

  1. Сначала мы подключаемся к серверу MySQL с правами, позволяющими создавать базы данных (обычно пользователь root).
  2. Команда CREATE DATABASE IF NOT EXISTS создаёт базу Test_DB, если её ещё нет.
  3. Затем создаём две таблицы с полями id (автоинкремент) и name (название).
  4. Заполняем таблицы, проверяя, чтобы не было дублей (чтобы при повторном запуске скрипта данные не задваивались).
  5. Находим идентификаторы нужных нам строк («зеленый» и «кавролин») и выводим их названия вместе.

Важно: В примере используется пароль Password для пользователя MySQL. Это не пароль базы данных, а пароль учётной записи, под которой PHP подключается к серверу. Сама база данных Test_DB не имеет отдельного пароля — доступ к ней определяется правами пользователя. Если вы хотите создать отдельного пользователя с паролем именно для этой базы, нужно выполнить дополнительные SQL-команды CREATE USER и GRANT PRIVILEGES.

То есть, в строке $password = 'Password'; вы сами задаёте пароль, который будет использоваться в скрипте для подключения к базе данных. Но сам этот пароль должен совпадать с паролем, который уже существует для вашего пользователя MySQL на хостинге.

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

Нажмите, чтобы оценить наш труд:
[Всего: 1 Средняя: 5]
Ethan Carter

Я, Итан Картер – американский разработчик и технический автор с более чем 20-летним опытом в системном и прикладном программировании. Мой основной профиль — низкоуровневая разработка на Assembler: 22 года практики, включая глубокую работу с оптимизацией кода, архитектурой процессоров и производительностью критичных по скорости решений. Я защитил PhD dissertation по Assembler, а также более 18 лет работаю с ASP.NET, создавая корпоративные веб-системы, API и масштабируемые backend-решения.

Дополнительно я имею 9 лет опыта в C++ и C#, а также 7 лет практики программирования микроконтроллеров на Assembler. Благодаря моему сочетанию академической подготовки и прикладного инженерного опыта я могу писать статьи на стыке архитектуры ПО, низкоуровневой оптимизации и современной разработки, делая сложные технические темы понятными для профессиональной аудитории.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.

О нас | Контакты


Прокрутить вверх