Зарегистрируйтесь, чтобы продолжить обучение

Язык SQL Основы SQL

Для работы с данными в СУБД существует специальный язык — SQL. В этом уроке мы познакомимся с ним и его базовыми возможностями.

Что такое язык SQL

SQL (Structured Query Language) — это язык, который помогает управлять данными в СУБД.

SQL позволяет:

  • Управлять данными внутри таблицы — добавлять их, редактировать, выбирать.

  • Менять структуру самих таблиц и баз данных.

Язык SQL разрабатывается независимо от СУБД и имеет собственный стандарт, который реализуют конкретные базы данных. Поэтому на базовом уровне все реляционные базы данных работают примерно одинаково.

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

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

Чтобы начать работать с базой данных, ее нужно создать. Чтобы это сделать, нужно установить СУБД на специальный компьютер — сервер.

Сама по себе СУБД может не иметь графического интерфейса, в таком случае мы используем запросы на языке SQL.

Для начала создадим базу данных для школы Хекслет с помощью такой команды:

CREATE DATABASE hexlet_db;

Как создать таблицу

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

Возьмем для примера таблицу users и ее структуру:

first_name string
last_name  string
email      string
created_at datetime

Чтобы создать таблицу, нужно выполнить такой запрос:

CREATE TABLE users (
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    email VARCHAR(255),
    created_at TIMESTAMP
);

Вы могли заметить, что запросы на языке SQL похожи на обычный текст на английском языке. Если перевести запросы, мы получим такие предложения:

  • «Создать базу данных hexlet_db»

  • «Создать таблицу users со следующей структурой»

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

Теперь мы можем добавить нескольких пользователей в таблицу:

INSERT INTO users
(first_name,  last_name, email, created_at)
VALUES ('Lucienne', 'Feil',  'Trevion53@yahoo.com', '2022-06-14 18:31:05.296');


INSERT INTO users
(first_name,  last_name, email, created_at)
VALUES ('Ramiro', 'Wolf',  'Baylee52@yahoo.com', '2022-06-14 02:04:13.104');


INSERT INTO users
(first_name,  last_name, email, created_at)
VALUES ('Maureen', 'Romaguera',  'Casimer_Cronin@yahoo.com', '2022-06-14 02:28:26.058');

Вот такая таблица у нас получится:

first_name last_name email created_at

Lucienne

Feil

Trevion53@yahoo.com

2022-06-14 18:31:05.296

Ramiro

Wolf

Baylee52@yahoo.com

2022-06-14 02:04:13.104

Maureen

Romaguera

Casimer_Cronin@yahoo.com

2022-06-14 02:28:26.058

Как редактировать запись

После добавления мы заметили ошибку в данных — у пользователя Maureen Romaguera неверно указана электронная почта.

Давайте исправим эту ошибку. Напишем запрос на редактирование записи:

UPDATE users SET email = 'Casimer_Cronin@gmail.com' WHERE last_name = 'Romaguera';

Снова запрос очень похож на инструкцию: «Обнови таблицу users — у пользователя по фамилии Romaguera значение в поле email должно быть следующим…​».

Посмотрим на пример запроса, который извлекает информацию о пользователях из этой таблицы:

SELECT * FROM users;

Этот запрос вернет все строки в таблице:

first_name last_name email created_at

Lucienne

Feil

Trevion53@yahoo.com

2022-06-14 18:31:05.296

Ramiro

Wolf

Baylee52@yahoo.com

2022-06-14 02:04:13.104

Maureen

Romaguera

Casimer_Cronin@gmail.com

2022-06-14 02:28:26.058

View On DB Fiddle

Как удалить запись

Еще одна достаточно частая операция — удаление записей. Давайте удалим нашего пользователя из таблицы:

DELETE FROM users WHERE last_name = 'Romaguera';

И снова выведем всю таблицу:

SELECT * FROM users;

Получилась такая таблица:

first_name last_name email created_at

Lucienne

Feil

Trevion53@yahoo.com

2022-06-14 18:31:05.296

Ramiro

Wolf

Baylee52@yahoo.com

2022-06-14 02:04:13.104

View On DB Fiddle

Как выбрать запись

Обычно данные нужны не все сразу, а по частям. Например, когда мы заходим в описание одного курса на Хекслете, то ожидаем увидеть информацию только по этому курсу, а не по всем курсам сразу.

Чтобы выбрать определенные строки, можно добавить в запрос условия. Например, выберем пользователей с именем Ramiro:

SELECT * FROM users WHERE first_name = 'Ramiro';

first_name

last_name

email

created_at

Ramiro

Wolf

Baylee52@yahoo.com

2022-06-14T02:04:13.104Z

View On DB Fiddle

Все примеры из этого урока — лишь вершина айсберга возможностей языка SQL. На самом деле, язык SQL позволяет строить более сложные запросы с несколькими условиями. Такие запросы мы научимся составлять в ходе курса.

Удаление таблиц

Чтобы удалить таблицу, выполняется запрос DROP:

DROP TABLE users;

View On DB Fiddle

Будьте внимательны, так как удаление таблицы приводит к безвозвратной потере данных.

Комментарии в запросах

Представьте, что вы работаете над проектом в команде. В процессе работы вы можете создавать сложные запросы, которые могут быть не совсем очевидны для других членов команды. В таких ситуациях крайне важно, чтобы ваш код был понятен вашим коллегам. Здесь на помощь приходят комментарии. Они помогают объяснить логику запросов, описать структуру таблиц или указать, зачем тот или иной фрагмент кода был написан.

Комментарии в SQL позволяют вам добавлять пояснения и заметки к вашему запросу. При этом сами они не являются частью запроса, не влияют его выполнение и игнорируются интерпретатором

В SQL существует два основных вида комментариев: однострочные и многострочные

Однострочные комментарии начинаются с двух дефисов --. Все, что находится в строчке после этих символов, будет считаться комментарием и проигнорируется при выполнении запроса

-- Работаем с таблицей пользователей
SELECT * FROM users; -- Получаем всех пользователей

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

/*
Добавление нового пользователя
Данный запрос добавляет информацию о пользователе в таблицу пользователей
*/
INSERT INTO users
(first_name, last_name, email, created_at)
VALUES ('Lucienne', 'Feil', 'Trevion53@yahoo.com', '2022-06-14 18:31:05.296');

Выводы

В этом уроке мы познакомились с базовыми возможностями языка SQL. Мы рассмотрели этапы создания базы данных и узнали, как гибко можно применять SQL.

Дальше в курсе мы будем на практике применять стандартные возможности языка для выборки данных из таблиц.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

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

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»