Урок 16

Основы SQL — язык запросов к базе данных

25 мин

Что такое SQL?

SQL (Structured Query Language) — язык для общения с базой данных. Вы пишете запрос на SQL, база данных выполняет его и возвращает результат.

SQL читается почти как английский:

SELECT * FROM users WHERE username = "admin"

"ВЫБЕРИ всё ИЗ users ГДЕ username = admin"

Где писать SQL?

В phpMyAdmin:

  1. Выберите базу blog слева
  2. Нажмите вкладку "SQL"
  3. Введите запрос в текстовое поле
  4. Нажмите "Вперёд"

SELECT — получение данных

Самый частый запрос — получить данные из таблицы.

Получить все записи

SELECT * FROM users

* означает "все столбцы".

Получить конкретные столбцы

SELECT username, email FROM users

Фильтрация WHERE

SELECT * FROM users WHERE id = 1
SELECT * FROM posts WHERE user_id = 1

Операторы сравнения

Оператор Значение Пример
= Равно WHERE id = 1
!= или <> Не равно WHERE id != 1
> Больше WHERE id > 5
< Меньше WHERE id < 5
LIKE Поиск по шаблону WHERE title LIKE "%PHP%"
IN Одно из значений WHERE id IN (1, 2, 3)

Сортировка ORDER BY

-- По возрастанию (по умолчанию)
SELECT * FROM posts ORDER BY created_at

-- По убыванию (новые сначала)
SELECT * FROM posts ORDER BY created_at DESC

Ограничение LIMIT

-- Первые 10 записей
SELECT * FROM posts LIMIT 10

-- Записи с 11 по 20 (для пагинации)
SELECT * FROM posts LIMIT 10 OFFSET 10

Комбинируем

SELECT title, created_at 
FROM posts 
WHERE user_id = 1 
ORDER BY created_at DESC 
LIMIT 5

Получить заголовки и даты 5 последних постов пользователя с id=1.

INSERT — добавление данных

INSERT INTO users (username, email, password) 
VALUES ("ivan", "ivan@mail.ru", "secret")

id и created_at заполнятся автоматически.

UPDATE — изменение данных

UPDATE users 
SET email = "new_email@mail.ru" 
WHERE id = 2
ВАЖНО: Никогда не забывайте WHERE в UPDATE!
Без WHERE обновятся ВСЕ записи:
UPDATE users SET password = "123" — у всех пользователей станет пароль "123"!

DELETE — удаление данных

DELETE FROM posts WHERE id = 5
ВАЖНО: То же самое — не забывайте WHERE!
DELETE FROM posts — удалит ВСЕ посты!

JOIN — объединение таблиц

Как получить посты вместе с именами авторов?

SELECT posts.title, posts.content, users.username
FROM posts
JOIN users ON posts.user_id = users.id

JOIN ... ON — объединяет таблицы по условию. Здесь: "соединить posts и users там, где user_id в posts равен id в users".

Результат:

title content username
Привет, мир! Это мой первый пост... admin
Второй пост Ещё один пост... admin

Практика

Попробуйте в phpMyAdmin (вкладка SQL):

  1. Получить все посты:
    SELECT * FROM posts
  2. Получить только заголовки:
    SELECT title FROM posts
  3. Посты за сегодня:
    SELECT * FROM posts WHERE DATE(created_at) = CURDATE()
  4. Количество постов:
    SELECT COUNT(*) as total FROM posts
  5. Посты с авторами:
    SELECT posts.*, users.username FROM posts JOIN users ON posts.user_id = users.id
Основы SQL освоены!
Теперь вы можете:
✅ Получать данные (SELECT)
✅ Добавлять (INSERT)
✅ Изменять (UPDATE)
✅ Удалять (DELETE)
✅ Объединять таблицы (JOIN)

В следующем уроке научимся выполнять SQL из PHP!

Мы используем файлы cookie для улучшения работы сайта и персонализации контента. Продолжая использовать сайт, вы соглашаетесь с использованием cookies в соответствии с нашей Политикой конфиденциальности.