Введение в базы данных SQL в PHP для новичков
База данных (сокращенно БД) — это место, в котором хранятся данные сайта. Это могут быть тексты страниц, списки пользователей с их логинами и паролями, каталоги продукции и другое.
База данных состоит из . Что такое таблица вы знаете из жизни: это строки и столбцы. А на пересечении строк и столбцов располагаются ячейки.
В базах данных столбцы часто называют , а строки — .
Сама база данных представляет собой некоторую программу, хранящую в себе данные и позволяющую эти данные получать и изменять.
Получение и изменение данных происходит с помощью . Запросы представляют собой команды, написанные на специальном языке — SQL.
Работа с базами данных через PHP не представляет особой сложности. Единственное, с чем могут возникнуть проблемы — это долгий начальный подготовительный этап, который растянется на несколько уроков.
Но, после того, как мы все подготовим, дальше все станет значительно проще.
Уроки MySQL для начинающих / #1 – Введение в MySQL и базы данных
Представляю вам курс по изучению СУБД MySQL и работе с базами данных. В ходе курса мы научимся работать с MySQL, PhpMyAdmin, языком запросов SQL и плюс научимся использовать базу данных в связке с языком PHP.
Видеоурок
Полезные ссылки:
- Программа OpenServer ;
- Программа MAMP ;
- Программа XAMPP ;
- Среда разработки PhpStorm .
Зачем нужны базы данных?
Все мы знаем, что базы данных полезны и они нужны для современных веб сайтов. Тем не менее для ясности давайте выясним зачем они нужны и для каких целей они используются.
Базы данных используются в качестве некого хранилища, где вы можете хранить записи и информацию различного рода, что необходима для корректного функционирования веб сайта.
В базе данных можно хранить информацию относительно зарегистрированных пользователей, статей на сайте, комментариев и прочей информации, что вам может потребоваться.

После сохранения данных вы можете к ним обращаться, выводить на страницы сайта, обрабатывать, редактировать, обновлять или же вовсе удалять. Хранить информацию можно еще в текстовых файлах на сервере, но такой вариант является не удобным, если вам часто нужно просматривать информацию или же редактировать её.
Базы данных – это что-то в духе удаленной папки на сервере, где в структурированном порядке хранятся все ваши записи. С такой папкой легко и приятно работать.
Как происходит работа с базами данных?
Для работы с БД используются различного рода системы управления базами данных или сокращено СУБД. Мы в ходе курса будем использовать СУБД MySQL. Помимо нее существуют и другие СУБД. Разобраться с ними вам не составим труда, ведь принцип работы с другими СУБД будет схожим с тем, что будет изучен нами.
СУБД позволяет нам управлять базой данных. Например создать таблицу, добавить записи, обновить или отредактировать данные.

Мы изучим MySQL, что является системой или, другими словами, программой для управления базами данных. Для выполнения команд внутри базы данных используется язык запросов SQL.
Язык запросов SQL
Для работы с базой данных вам действительно понадобиться отдельный язык, что называется SQL . Язык достаточно прост в изучении и позволяет выполнять запросы к базе данных.
Через MySQL мы имеем доступ к базе данных. В ней у нас могут быть записи, а для управления записями мы будем использовать SQL запросы.
Язык SQL является универсальным языком, ведь вне зависимости от СУБД и вне зависимости от серверного языка вы в любом случае используете те же SQL команды каждый раз.
План курса
За курс мы с вами научимся работать с базой данных MySQL и языком запросов SQL. Научимся работать с запросами, построением базы данных и управлению ею. Кроме того, мы научимся все эти запросы выполнять в связке с языком PHP и выводить данные из БД на страницы сайта.
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Погружаемся в базы данных и SQL: полезные материалы и инструменты от сотрудников Selectel

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

Александр, менеджер облачных баз данных
Курс знакомит слушателей с базой по SQL, которую нужно знать всем — от новичков до профессионалов. Читатели могут прокачивать свои навыки на примерах типовых ситуаций для обработки данных в MySQL.
НИУ ВШЭ, СПБПУ и центр CS создали полный курс по базам данных. Авторы начинают с введения в SQL и постепенно погружают в более сложные темы: методы структурированного хранения данных, принципы использования базы данных в приложениях и другие разделы. Подойдет тем, кто хочет погрузиться в тему с нуля или просто вспомнить основы.
Где найти → смотрите курс на Stepik.
Introduction to Structured Query Language
Александр, менеджер облачных баз данных
Базовый курс по SQL для начинающих специалистов. После прохождения вы получите сертификат Мичиганского Университета, который можете добавить в свое резюме.
Второй курс по введению в SQL, но от Мичиганского Университета. Уже на первом модуле вам предлагают установить PHP и MySQL и отрабатывать пройденные темы на практике. Среди них — однотаблицевые запросы, базовый синтаксис языка SQL, а также дизайн базы данных. По завершении курса вы научитесь различать INNER, RIGHT и LEFT JOIN, разберетесь в отношениях Many-to-many.
Где найти → смотрите курс на Coursera.
Руководства
SQLBolt: Introduction to SQL

Артем, дата-инженер
Серия интерактивных уроков и упражнений для знакомства с SQL. Не нужно ничего устанавливать, запросы выполняются прямо в браузере.
В руководстве 19 уроков на разные темы: от разбора запросов до создания и удаления таблиц. После каждого есть упражнения, которые можно выполнить не выходя из главы.

Где найти → ознакомиться с учебником можно по ссылке.
PostgreSQL Tutorial
Артем, дата-инженер
Исчерпывающее пособие по PostgreSQL, предназначенное как для новичков, так и для опытных пользователей. В нем — много примеров SQL-запросов на разные темы, а также база с данными для тренировки.
Учебник делится на базовый и продвинутый уровни. В первом авторы знакомят с таблицами, операциями запросов и типами данным — в общем, с основами PostgreSQL. Во втором — охватывают расширенные концепции, включая индексы, представления, триггеры и администрирование баз данных.
Где найти → прочитать учебник можно по ссылке.
The Internals of PostgreSQL
Артем, дата-инженер
Полезный ресурс по внутреннему устройству PostgreSQL. Поможет понять, из каких компонентов состоит СУБД, как они устроены под капотом и взаимодействуют друг с другом.
В руководстве описаны внутренние компоненты PostgreSQL: кластеры базы данных, архитектура памяти, обработка запросов и другие. Материал будет полезен как начинающим, так и опытным специалистам, которые хотят разобраться в СУБД изнутри.

Где найти → ресурс доступен по ссылке.
Сайт DB-Engines

Станислав, менеджер Data- и ML-продуктов
Настоящий кладезь информации о СУБД. Пригодится для сравнения различных решений этого класса и поиска альтернативных вариантов.
Рейтинг DB-Engines ранжирует СУБД по популярности, охватывая более 380 систем, и раз в месяц обновляет этот рейтинг с учетом актуальных изменений. Если хотите ознакомиться с менее популярными технологиями, в DB-Engines есть общий список почти всех существующих СУБД.

Где найти → ознакомиться с ресурсом можно по ссылке.

Видео на канале ADV-IT

Любовь, системный администратор
Полезный канал для тех, кто только начинает работу с базами данных. Поможет структурировать знания и начать свой карьерный путь.
На канале ADV-IT собраны видеоуроки по программированию и DevOps, в том числе по работе с базами данных. В своих лекциях автор акцентирует внимание на практике: показывает, как с нуля создать базу данных в RDS Database. А также дополнительно рекомендует полезные ресурсы — документацию и используемые запросы.
Где найти → смотрите видео на канале ADV-IT.
Инструменты
SQL Fiddle
Александр, менеджер облачных баз данных
Отличный инструмент для тестирования своих SQL-запросов. Позволяет быстро проверять их прямо в браузере.
Инструмент для простого тестирования, отладки и обмена фрагментами SQL. Добавляете текст в панель, а SQL Fiddle превращает его в скрипт для создания необходимой таблицы. Подойдет как для работы с базами данных, так и для практики навыков SQL.

Где найти → инструмент доступен по ссылке.
SQL Database Modeler
Станислав, менеджер Data- и ML-продуктов
SqlDBM — онлайн-инструмент для проектирования БД. Упрощает работу с типовыми задачами аналитиков, проектировщиков и администраторов баз данных.
SQL Database Modeler может создавать структуру новых таблиц и связи между ними, подключаться к уже имеющимся базам данных и проектировать изменения в них. И это все — в красивом графическом интерфейсе.

Где найти → использовать инструмент можно на сайте.
SQLFlow
Станислав, менеджер Data- и ML-продуктов
Инструмент упрощает работу с созданием и обновлением схем баз данных, а также помогает отлаживать и исправлять ошибки в коде SQL.
SQLFlow — простой инструмент для визуализации SQL-запросов и отображения зависимостей. Позволяет отслеживать data lineage-происхождение и трансформации в данных при исполнении запросов.

Где найти → инструмент доступен по ссылке.
Другие полезные материалы
- DBaaS: что такое облачные базы данных
- Подойдет ли PostgreSQL вообще всем проектам или нужны альтернативы
- 8 книг по PostgreSQL для новичков и профессионалов
Какие материалы и инструменты помогли вам в работе с БД и SQL? Делитесь своими вариантами в комментариях!
SQL для начинающих: часть 3 — связи базы данных
Сегодня мы продолжаем наше путешествие в мир SQL и связанных баз данных. В третьей части этой серии мы узнаем, как работать с несколькими таблицами, которые имеют отношения друг с другом. Во-первых, мы рассмотрим некоторые базовые концепции, а затем начнем работать с JOIN queries в SQL.
Вы также можете увидеть базы данных SQL в действии, просмотрев SQL scripts, apps and add-ons на рынке Envato.
Напоминание
- SQL for Beginners: Part 1
- SQL for Beginners: Part 2
Введение
При создании базы данных здравый смысл подсказывает, что мы используем отдельные таблицы для разных типов сущностей. Например: клиенты, заказы, предметы, сообщения. Но нам также нужно иметь отношения между этими таблицами. Например, клиенты делают заказы, а заказы содержат предметы. Эти отношения должны быть представлены в базе данных. Кроме того, при получении данных с помощью SQL нам нужно использовать определённые типы запросов JOIN, чтобы получить то, что нам нужно.
Существует несколько типов отношений базы данных. Сегодня мы рассмотрим следующее:
- Отношения один к одному
- Отношения «один ко многим» и «многие к одному»
- «Многие ко многим» отношения
- Самостоятельные ссылки
При выборе данных из нескольких таблиц с отношениями мы будем использовать запрос JOIN. Существует несколько типов JOIN, и мы собираемся узнать следующее:
- Перекрестные соединения
- Обычные соединения
- Внутренние соединения
- Левые (внешние) соединения
- Правые (внешние) соединения
Мы также узнаем об оговорках ON и USING.
Отношения один к одному
Предположим, у вас есть таблица для клиентов:


Мы можем поместить информацию об адресе клиента в отдельную таблицу:


Теперь мы имеем отношение между таблицей Customers и таблицей Addresses. Если каждый адрес может принадлежать только одному клиенту, это отношение «Один к одному». Имейте в виду, что такого рода отношения не очень распространены. Наша начальная таблица, которая включала адрес вместе с клиентом, в большинстве случаев могла работать нормально.
Обратите внимание: теперь в таблице Customers есть поле с именем «address_id», которое ссылается на запись соответствия в таблице Address. Это называется «Foreign Key» и используется для всех видов отношений баз данных. Мы рассмотрим этот вопрос позже.
Мы можем показать отношения между клиентскими и адресными записями следующим образом:


Обратите внимание, что существование отношений может быть необязательным, например, есть запись клиента, у которой нет связанной записи адреса.
Отношения «один ко многим» и «многие к одному»
Это наиболее часто используемый тип отношений. Рассмотрим веб-сайт e-commerce со следующим:
- Клиенты могут делать много заказов.
- Заказы могут содержать много позиций.
- Позиции могут иметь описания на многих языках.
В этих случаях нам необходимо создать отношения «один ко многим». Вот пример:

У каждого клиента может быть ноль, один или несколько заказов. Но заказ может принадлежать только одному клиенту.


Отношения «многие ко многим»
В некоторых случаях вам может потребоваться несколько экземпляров с обеих сторон. Например, каждый заказ может содержать несколько элементов. И каждый элемент также может быть в нескольких заказах.
Для этих отношений нам нужно создать дополнительную таблицу:


Таблица Items_Orders имеет только одну цель, а именно, чтобы создать отношение «многие ко многим» между элементами и заказами.
Вот картинка таких отношений:


Если вы хотите включить записи items_orders в график, это может выглядеть так:


Самостоятельные ссылки
Это используется, когда таблица должна иметь отношения с самой собой. Например, у вас есть реферальная программа. Клиенты могут направлять других клиентов на ваш веб-сайт. Таблица может выглядеть так:


Клиенты 102 и 103 были переданы клиентом 101.
На самом деле это может быть похоже на отношение «один ко многим», поскольку один клиент может ссылаться на нескольких клиентов. Также он может выглядеть, как древовидная структура:


Один клиент может ссылаться на ноль, одного или несколько клиентов. К каждому клиенту может обращаться только один клиент, или вообще никто.
Если вы хотите создать самостоятельную ссылку «многие ко многим», вам понадобится дополнительная таблица, вроде той, что мы говорили в предыдущем разделе.
Foreign Keys
До сих пор мы узнали только о некоторых концепциях. Теперь пришло время воплотить их в жизнь с помощью SQL. Для этой части нам нужно понять, что такое Foreign Keys.
В приведённых выше примерах отношений мы всегда имели эти поля «**** _ id», которые ссылались на столбец в другой таблице. В этом примере столбец customer_id в таблице Orders является столбцом Foreign Key:

В базе данных типа MySQL есть два способа создания столбцов внешних ключей:
Чёткое определение Foreign Key
Давайте создадим простую таблицу клиентов:
CREATE TABLE customers (
customer_id INT AUTO_INCREMENT PRIMARY KEY,
customer_name VARCHAR(100)
Теперь таблицу заказов, в которой будет Foreign Key:
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
amount DOUBLE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
Оба столбца (customers.customer_id и orders.customer_id) должны иметь одинаковую структуру данных. Если один является INT, другой не должен быть BIGINT, например.
Обратите внимание, что в MySQL только механизм InnoDB имеет полную поддержку Foreign Keys. Но другие механизмы хранения данных по-прежнему позволят вам указывать их без каких-либо ошибок. Кроме того, столбец Foreign Key индексируется автоматически, если не указать для него другой индекс.
Без явной декларации
Та же таблица заказов может быть создана без явного объявления столбца customer_id как Foreign Key:
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
