SQLite

Как объединить таблицы в SQLite

Как объединить таблицы в SQLite
Иногда при работе с базами данных нам может потребоваться объединить записи из таблиц в базе данных. В этом случае мы можем использовать оператор SQL JOIN, который объединяет указанные поля, используя общие значения в каждом поле.

Есть три основных типа соединений SQLite.

  1. КРЕСТ ПРИСОЕДИНЯТЬСЯ
  2. ВНУТРЕННЕЕ СОЕДИНЕНИЕ
  3. ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

Это руководство быстро проведет вас через эти объединения SQLite и покажет, как объединять записи базы данных.

Давайте начнем с ВНУТРЕННЕГО СОЕДИНЕНИЯ, поскольку оно простое и создает основу для понимания других типов СОЕДИНЕНИЙ.

1: ВНУТРЕННЕЕ СОЕДИНЕНИЕ

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

Общий синтаксис INNER JOIN:

ВЫБРАТЬ столбцы ИЗ таблицы1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ таблица2 НА таблице1.столбец = таблица2.столбец;

Давайте посмотрим на операцию JOIN, чтобы проиллюстрировать, как она работает.

Предположим, у вас есть таблица с именем users с полями: идентификатор, имя, возраст, образец языка SQL-запроса для создания таблицы:

СОЗДАТЬ ТАБЛИЦУ «пользователи» (
"id" INTEGER NOT NULL,
"name" ТЕКСТ НЕ ПУСТОЙ,
"age" INTEGER NOT NULL,
"язык" ТЕКСТ,
ПЕРВИЧНЫЙ КЛЮЧ (АВТОПОДКЛЮЧЕНИЕ "id")
);

У нас также есть еще одна таблица с именем rows с идентификатором полей и SQL-запрос ролей, представленный ниже:

СОЗДАТЬ ТАБЛИЦУ «Роли» (
"id" INTEGER NOT NULL,
"роль" ТЕКСТ,
ПЕРВИЧНЫЙ КЛЮЧ (АВТОПОДКЛЮЧЕНИЕ "id")
)

Теперь мы можем запустить операцию SQLite INNER JOIN, используя запрос, показанный ниже:

ВЫБЕРИТЕ пользователей.id, пользователи.имя, роли.роль ОТ пользователей INNER JOIN Roles ON users.id = Роли.я бы;

Вышеупомянутый запрос приведет к таблице, показанной ниже:

2: КРЕСТНОЕ СОЕДИНЕНИЕ

Другой тип SQL JOIN - CROSS JOIN. Этот тип сопоставляет каждую строку из первой таблицы с каждой строкой во второй таблице. Думайте об этом как о декартовом произведении, потому что результаты представляют собой набор строк из таблицы 1, сопоставленных с каждой строкой в ​​таблице 2. Например, если table1 имеет (a) строки, а table2 имеет (b) строки, итоговая таблица будет иметь строку * b.

ПРИМЕЧАНИЕ: Будьте осторожны при использовании перекрестных объединений, поскольку они могут привести к созданию огромных наборов таблиц.

Общий синтаксис перекрестного соединения:

ВЫБРАТЬ столбец (столбцы) ИЗ table1 CROSS JOIN table2;

Рассмотрим перекрестное соединение из пользовательской таблицы со всеми строками таблицы ролей. Рассмотрим SQL-запрос ниже:

ВЫБРАТЬ * ИЗ пользователей ПЕРЕКРЕСТИТЬ СОЕДИНЕНИЕ ролей;

Выполнение вышеуказанного запроса приведет к созданию таблицы, как показано ниже:

3: ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

Последнее соединение, которое мы рассмотрим, это ВНЕШНЕЕ СОЕДИНЕНИЕ. OUTER JOIN - это расширение INNER JOIN. Как и INNER join, мы выражаем его на таких условиях, как ON, NEUTRAL и USING. Также хорошо отметить, что SQL определяет три типа ВНЕШНИХ СОЕДИНЕНИЙ: левое, правое и полное, но SQLite поддерживает только ЛЕВОЕ СОЕДИНЕНИЕ.

LEFT external JOIN возвращает все строки из LEFT таблицы, указанной в условии, и только строки из других таблиц, в которых объединенное условие истинно.

Рассмотрим следующий запрос.

ВЫБЕРИТЕ пользователей.id, пользователи.имя, роли.роль, пользователи.язык ОТ пользователей ВЛЕВО ВНЕШНИЙ ПРИСОЕДИНИТЬСЯ Роли НА пользователях.id = Роли.я бы;

Вышеупомянутый запрос приведет к таблице, показанной ниже:

Заключение

В этом руководстве показано, как выполнять SQL-соединения в SQLite и создавать новые таблицы с измененной информацией. Хорошо продолжать экспериментировать с SQL JOIN, поскольку они очень удобны при работе с базами данных.

Спасибо за чтение!

Полезные инструменты для геймеров Linux
Если вам нравится играть в игры на Linux, скорее всего, вы использовали приложения и утилиты, такие как Wine, Lutris и OBS Studio, для улучшения игров...
Игры HD Remastered для Linux, ранее не выпускавшиеся для Linux
Многие разработчики и издатели игр придумывают HD-ремастеры старых игр, чтобы продлить жизнь франшизы, порадовать фанатов, требующих совместимости с с...
Как использовать AutoKey для автоматизации игр под Linux
AutoKey - это утилита автоматизации рабочего стола для Linux и X11, запрограммированная на Python 3, GTK и Qt. Используя его функции сценариев и MACRO...