Основы SQL — язык запросов к базе данных
25 минЧто такое SQL?
SQL (Structured Query Language) — язык для общения с базой данных. Вы пишете запрос на SQL, база данных выполняет его и возвращает результат.
SQL читается почти как английский:
SELECT * FROM users WHERE username = "admin"
"ВЫБЕРИ всё ИЗ users ГДЕ username = admin"
Где писать SQL?
В phpMyAdmin:
- Выберите базу
blogслева - Нажмите вкладку "SQL"
- Введите запрос в текстовое поле
- Нажмите "Вперёд"
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):
- Получить все посты:
SELECT * FROM posts - Получить только заголовки:
SELECT title FROM posts - Посты за сегодня:
SELECT * FROM posts WHERE DATE(created_at) = CURDATE() - Количество постов:
SELECT COUNT(*) as total FROM posts - Посты с авторами:
SELECT posts.*, users.username FROM posts JOIN users ON posts.user_id = users.id
Теперь вы можете:
✅ Получать данные (SELECT)
✅ Добавлять (INSERT)
✅ Изменять (UPDATE)
✅ Удалять (DELETE)
✅ Объединять таблицы (JOIN)
В следующем уроке научимся выполнять SQL из PHP!