Top.Mail.Ru

Основные типы JOIN

Основные типы JOIN

Основные типы 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     |

 

Автор:

135

Читайте также

0 комментариев