SQL. Основы и установка окружения
Время чтения: 6 минут
Привет, в этой статье я расскажу что такое SQL, и зачем он нужен и как его применять.
Наверно не стоит объяснять, что вся наша цивилизация держится на информации – чем больше больше у тебя ценной информации, тем больше у тебя возможноcтей.
Скорее всего, ты хранишь и используешь для личных нужд небольшие объёмы структурированной информации – пара списков “TO DO” здесь, пара документов с идеями там – её объёмы не выходят за несколько гигабайт.
Но что, если тебе понадобится хранить номера и описание всех автомобилей, которые проезжали мимо тебя, или персональные данные всех клиентов крупного банка?
При этом, ты должен будешь периодически искать во всей этой информации определённые записи – например номера всех красных автомобилей Honda или всех клиентов банка с доходом от 100 тысяч рублей.
Тут уже объём информации становится таким, что ты физически не сможешь просмотреть все записи за адекватные сроки.
Что же делать, если у тебя возникла такая ситуация?
SQL, база данных и запросы в неё
SQL, Structured Query Language – это язык, на котором можно описать запрос в базу данных.
База данных – это коллекция определённых данных, хранящаяся в электронном виде. Представь что это просто файл с хитрой внутренней структурой.
Запрос – это описание действия, которое надо совершить над данными. В основном эти действия связаны с получением, добавлением, изменением или удалением данных.
Я уже приводил выше пример запроса: “найти номера всех красных автомобилей Honda”.
Такой запрос определяет:
- Какие данные мы хотим получить: “номера”
- И определяет дополнительные свойства, которые должны быть связаны с этими данными: “красные” и “Honda”
В результате такого запроса мы получим номера всех автомобилей обладающих двумя свойствами: “красные” и “Honda”.
Сейчас я напишу точно такой же запрос, но на SQL. К нашему счастью, SQL это декларативный язык – это значит, что мы описываем результат, и получаем его, не заморачиваясь техническими деталями реализации. Вот так он выглядит:
SELECT plate_number FROM cars WHERE color="red" AND brand="Honda";
Результат такого запроса:
plate_numer |
---|
Е 100 ЕЕ |
А 781 ХА |
Сейчас я переведу этот запрос на русский, чтобы стало супер-понятно:
| SQL | Русский | |—————| | SELECT | сделать выборку по | | plate_number | номеру | | FROM | из | | cars | таблицы “машины” | | WHERE | где | | color=“red” | цвет=“красный” | | AND | и | | brand=“Honda” | бренд=“Honda” | | ; | точка с запятой всегда в конце запроса |
Вроде всё понятно, но не понятно что такое таблица cars и откуда вообще взялись color и brand – они сами что-ли выставляются?
Таблицы и их создание
Таблица – это основной элемент хранения структурированных данных в базе данных. В одной базе данных может храниться множество таблиц. Вот пример создания таблицы:
CREATE TABLE "cars" (
"plate_number" TEXT,
"color" TEXT,
"brand" TEXT,
"times_seen" INTEGER DEFAULT 0,
PRIMARY KEY("plate_number")
);
Здесь мы создаём таблицу с названием “cars” и перечисляем поля этой таблицы:
- plate_number – номер автомобиля
- color – его цвет
- brand – его марка
- times_seen – количество раз, которое мы его видели
Также в конце мы указываем “PRIMARY KEY” – поле, значения которого должны быть уникальны во всей таблице. Это необходимо для того, чтобы база данных ругалась, если мы попытаемся добавить машину с номером, который уже существует в базе – это помогает избежать дублирования записей.
Поле – это колонка в таблице. Она описывает одно из свойств данных, содержащихся в таблице – например цвет машины.
Окей, так мы создали таблицу, а до этого мы запрашивали данные из неё через SELECT. А как эти данные там оказались?
Добавление записей в таблицу
Запись – это строчка в таблице. Запись состоит из набора полей – например это одна запись из таблицы cars:
| plate_number | color | brand | times_seen | |——————————————-| |Е 100 ЕЕ |red |Honda |4 |
Чтобы добавить новую запись в таблицу, нужно написать такой запрос:
INSERT INTO cars(plate_number, color, brand, times_seen) VALUES("Х 777 ХХ", "green", "Nisan", 1);
Если все поля в VALUES указываются в том же порядке, в котором они описаны в таблице, то можно не прописывать сами поля:
INSERT INTO cars VALUES("Х 777 ХХ", "green", "Nissan", 1);
Но это добавление новых записей – после добавления ты наверняка будешь их как-то изменять.
Изменение записей в таблице
Чтобы изменить существующую запись надо написать такой запрос:
UPDATE cars SET brand = "Nissan" WHERE plate_number = "Х 777 ХХ";
Ещё ты можешь прямо при обновлении опираться на существующие значения полей – например так я могу увеличить на 1 текущее значения поля times_seen:
UPDATE cars SET times_seen = times_seen + 1 WHERE plate_number = "Х 777 ХХ";
Так… осталось только изучить удаление, и ты изучишь все основные виды SQL запросов.
Удаление записей из таблицы
Чтобы удалить какую-то запись из таблицы надо написать такой запрос:
DELETE FROM cars WHERE plate_number = "Х 777 ХХ";
Ты можешь удалять не только конкретные записи по уникальному полю, но и сразу множество записей по какому-то значению в определённом поле (так же относится к SELECT и UPDATE):
DELETE FROM cars WHERE color = "green";
СУБД
Сама база данных является просто файлом с хитрой структурой, и чтобы с нем работать нужна специальная программа – СУБД.
СУБД – система управления базой данных. Её ты как раз и скармливаешь свои запросы на SQL, а она тебя понимает и что-то изменяет в самом файле базы данных.
Есть два основных типа СУБД:
- Клиент-серверные – серверное приложение, работающее с файлом базы данных, к которому через интернет подключаются пользователи
- MySQL
- PostgreSQL
- Firebird
- Встраиваемые – библиотека, встроенная в клиентское приложение, которая предоставляет возможности работы с файлом базы данных прямо на устройстве пользователя
- SQLite
- Firebird Embedded
- eXtremeDB
Кроме отличий в функциональности и реализации, в различных СУБД могут отличаться некоторые конструкции языка SQL. Но в целом, изучив SQL один раз, можно без затруднений переходить между различными СУБД.
Тема выбора конкретной СУБД довольно сложная и её мы касаться пока не будем. В будущих статьях я подробнее расскажу об этом.
В рамках этой статьи мы попробуем поработать со встраиваемой СУБД SQLite. Сделаем это мы через программу SQLiteBrowser, в которую встроена СУБД SQLite, и которая предоставляет достаточно удобный пользовательский интерфейс для управления базой данных.
Скачай и установи её для своей операционной системы: sqlitebrowser.org/dl.
SQLite
Запусти SQLiteBrowser, и выбери пункт “New Database” в левом верхнем углу интерфейса. После выбора места, где ты создашь файл базы данных, у тебя появится окно для создания первой таблицы в твоей базе данных… Закрой его! :)
Нам не нужны какие-то окошки – мы сами уже почти умеем в SQL, надо только попрактиковаться. Открой вкладку “Execute SQL”.
В этой вкладке ты можешь исполнять любые SQL запросы, и они будут применяться к твоему файлу базы данных.
Перепиши SQL запрос на создание таблицы, который я приводил выше. После этого нажми комбинацию Ctrl+R (или вон тот синий треугольничек), и твой запрос исполнится.
Зайди во вкладку “Browse Data” – там ты увидишь свою новосозданную таблицу.
Попробуй:
- Добавить новые записи в эту таблицу
- Изменить существующую запись
- Удалить какую-то запись
После каждой операции ты можешь заглядывать в “Browse Data”, чтобы проверить что происходит.
SQLiteBrowser не записывает изменения сразу в файл, а сохраняет их в оперативной памяти. Чтобы применить изменения, тебе надо нажать Ctrl+S (или “Write Changes” в верхней части окна).
Заключение
Из этой статьи ты узнал:
- SQL
- База данных
- Запросы
- SELECT
- CREATE TABLE
- UPDATE
- DELETE
- Таблица
- Поле
- Запись
- СУБД
- Как работать с SQLite
Мне кажется, что это очень супер много полезной информации на сегодня, ты супер!
В следующих статьях я покажу примеры более сложных запросов, которые учитывают данные сразу из нескольких таблиц (JOIN).