Есть три основных типа соединений SQLite.
- КРЕСТ ПРИСОЕДИНЯТЬСЯ
- ВНУТРЕННЕЕ СОЕДИНЕНИЕ
- ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
Это руководство быстро проведет вас через эти объединения 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, поскольку они очень удобны при работе с базами данных.
Спасибо за чтение!