Когда мы говорили о том, какие бывают базы данных, то немного рассказали о реляционных БД. Самый очевидный пример такой базы данных — MySQL. О ней и поговорим.
⚠️ С формальной точки зрения MySQL — это не сама база данных, а система управления базой данных (СУБД). Но в языке так сложилось, что саму базу и систему её управления мы называем одними и теми же словами. Простите нас за это упрощение.
Что такое MySQL
MySQL — это реляционная база данных (СУБД). Реляционная — значит внутри неё есть данные, которые связаны между собой, и эту связь можно представить в виде таблиц.
Технически MySQL — это много таблиц, как-то связанных между собой. Например, одна отвечает за товары, другая — за покупки, третья — за клиентов. Вот картинка из нашей обзорной статьи:
Сразу видно, что в базе есть три таблицы, причём две из них связаны между собой через третью. Если нам понадобится где-то хранить данные о доставке товаров, то мы можем это сделать в одной из этих таблиц или завести новую.
👉 Всё, что мы делаем в MySQL, — создаём таблицы с данными и настраиваем связи между ними.
Кому это нужно
Знать MySQL нужно всем, кто занимается разработкой веб-приложений и сайтов. Это очень распространённая технология — если ваше приложение или сайт имеет в каком-либо виде личный кабинет или просто хранит любые данные, то почти наверняка в нём будет использоваться MySQL.
Вы можете обойтись и без конкретно этой системы управления. Можно использовать PostgreSQL или NoSQL. Можно просто хранить данные у клиента или в «сыром» файлике. Но если вы хотите делать систему, которую будет легко поддерживать и передать другим людям для доработки и развития, — скорее всего, вы выберете MySQL.
Как работают связи в базе данных
Связи между таблицами показывают, как одни данные могут зависеть от других. В зависимости от того, как вы настроите связи, база может получать разные результаты и искать данные. В связи может участвовать одна запись, а может сразу много.
Один к одному. Это самый простой вид связи, который говорит: одной записи из этой таблицы соответствует только одна запись из другой таблицы. Если мы сделаем новую таблицу с фотографиями клиентов, то каждой фотографии будет соответствовать только один клиент и наоборот.
Один ко многим. Когда у нас есть таблица с клиентами и таблица с их покупками, тут работает связь «один ко многим». Это значит, что у нас одной записи о клиенте соответствует несколько записей об их покупках, например, если он их сделал в разное время. Благодаря этой связи мы можем вывести все покупки для каждого клиента в отдельности.
Ещё пример — художники и картины. Каждая картина принадлежит только одному художнику, но одному художнику может принадлежать много разных картин.
Многие ко многим. А вот это хитрая связь — для неё нужна отдельная таблица. Смысл такой: мы делаем промежуточную таблицу, в которой соединяем данные из одной таблицы с данными из другой. Получается, что в новой таблице как бы нет данных — в ней только связи.
Допустим, вы ведёте свой список дел в ежедневнике, где можно ставить метки для дел. Метки помогают понять, что за дело перед вами, и выглядят примерно так: «в дороге», «позвонить», «на неделе», «подписать у Иваныча» и «за компьютером». Их можно назначить любой задаче — одну метку, две или все сразу. Получается так:
- одна метка может стоять на множестве разных задач
- у одной задачи может быть много разных меток.
Это значит, что мы связали множество меток со множеством задач и теперь можем искать одно через другое.
Что может храниться в MySQL
В MySQL может храниться что угодно, если вы можете настроить связи между данными. Вы можете хранить в такой базе заметки, фото, музыку, списки дел, задачи на год и все лекции по теории вероятности. Весь вопрос в том, чтобы вы понимали, как вы будете это использовать дальше.
Например, все наши статьи в «Коде» хранятся в MySQL-базе, с которой мы работаем через Вордпресс. Там же есть информация и об авторах, и о картинках для статей, о дате публикации и о многом другом. Чтобы вы прочитали эту статью, сайт обратился к базе данных, взял оттуда статью, правильно её обработал и показал вам.
Другие используют MySQL для работы с клиентской базой — в бизнесе, поликлиниках или системах учёта товаров.
Самой базе всё равно, что в ней хранится и как вы этим пользуетесь. База данных — это просто способ связать данные вместе, а потом найти в них то, что нужно.
Почему MySQL так популярна
С момента своего появления в 1995 году, MySQL была бесплатной, простой и предсказуемой системой управления базами данных. Это привело к тому, что её использовали много компаний по всему миру, что сделало её негласным стандартом для баз данных.
Ещё в MySQL встроены системы безопасности и разграничения доступа. Например, можно сделать так, чтобы менеджер мог только вносить данные, руководитель отдела — изменять их, но не удалять, а директор мог делать с данными что угодно.
Но основная причина популярности MySQL — полная поддержка SQL-языка.
Что такое язык SQL
Чтобы работать с реляционной базой данных, нужно знать специальный язык запросов — SQL. Это расшифровывается как structured query language — язык структурированных запросов. «Структурированный» означает, что каждый запрос должен иметь определённую структуру, чтобы база поняла, как на него реагировать.
Сами запросы вводятся в специальном терминале, который отвечает за управление базой данных.
С помощью запросов можно делать что угодно:
- создавать и изменять таблицы,
- настраивать связи между ними,
- вносить и удалять данные,
- настраивать доступ для разных пользователей,
- а главное — искать то, что нужно, по любым параметрам.
Если вы знаете SQL, то можете работать с любой реляционной базой данных, которые его поддерживают.
А покажите сами запросы
А пожалуйста.
Создадим базу данных THECODE_MEDIA:
CREATE DATABASE THECODE_MEDIA;
Скажем, что будем дальше работать именно с этой базой:
USE THECODE_MEDIA;
Создадим таблицу с названиями статей, авторами и количеством прочтений за месяц:
CREATE TABLE STATS (name VARCHAR(200), author VARCHAR(20), readers INT);
Загрузим в таблицу уже готовые данные из файла:
LOAD DATA LOCAL INFILE 'thecode/readers_stat.txt' INTO TABLE STATS;
А теперь выведем их на экран:
SELECT * FROM STATS;
Команд в SQL настолько много, что нам понадобится отдельная статья для практики. Сделаем для этого отдельный проект, на котором покажем, как MySQL работает с запросами и таблицами.
Коротко главное
- MySQL — система управления реляционными базами данных. Реляционными — то есть такими, между которыми есть однозначные прописанные связи. Можно представить, что это система управления табличными базами данных.
- Таблицы могут быть связаны между собой, чтобы можно было проще найти нужную информацию.
- Для работы с реляционными БД используют специальный язык — SQL.
- Каждая команда в SQL — это запрос к базе, чтобы она что-то нашла, изменила, добавила или удалила у себя.
- MySQL используют уже 25 лет, поэтому это проверенная и надёжная база данных. Кто любит MySQL, тому легко ориентироваться в технологиях современного веба.
Что дальше
На очереди — нереляционные базы и NoSQL. Там вообще всё не так, как здесь, поэтому разбирать будем отдельно.