Основные типы JOIN
1. **INNER JOIN**: Возвращает только те строки, которые имеют совпадения в обеих таблицах.
2. **LEFT JOIN (или LEFT OUTER JOIN)**: Возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. Если совпадения нет, то будут возвращены NULL значения для столбцов правой таблицы.
3. **RIGHT JOIN (или RIGHT OUTER JOIN)**: Возвращает все строки из правой таблицы и соответствующие строки из левой таблицы. Если совпадения нет, то будут возвращены NULL значения для столбцов левой таблицы.
4. **FULL JOIN (или FULL OUTER JOIN)**: Возвращает все строки, когда есть совпадения в одной из таблиц. Это сочетание LEFT JOIN и RIGHT JOIN.
### Примеры
Предположим, у нас есть две таблицы: `students` и `courses`.
**students**:
| student_id | name |
|------------|--------|
| 1 | Alice |
| 2 | Bob |
| 3 | Carol |
**courses**:
| course_id | student_id | course_name |
|-----------|-------------|-------------|
| 101 | 1 | Math |
| 102 | 2 | English |
| 103 | 4 | History |
#### INNER JOIN
```sql
SELECT students.name, courses.course_name
FROM students
INNER JOIN courses ON students.student_id = courses.student_id;
```
**Результат**:
| name | course_name |
|-------|-------------|
| Alice | Math |
| Bob | English |
#### LEFT JOIN
```sql
SELECT students.name, courses.course_name
FROM students
LEFT JOIN courses ON students.student_id = courses.student_id;
```
**Результат**:
| name | course_name |
|-------|-------------|
| Alice | Math |
| Bob | English |
| Carol | NULL |
#### RIGHT JOIN
```sql
SELECT students.name, courses.course_name
FROM students
RIGHT JOIN courses ON students.student_id = courses.student_id;
```
**Результат**:
| name | course_name |
|-------|-------------|
| Alice | Math |
| Bob | English |
| NULL | History |
#### FULL JOIN
```sql
SELECT students.name, courses.course_name
FROM students
FULL OUTER JOIN courses ON students.student_id = courses.student_id;
```
**Результат**:
| name | course_name |
|-------|-------------|
| Alice | Math |
| Bob | English |
| Carol | NULL |
| NULL | History |
Автор: Евгений Морковин
0 комментариев