В этом учебном материале вы узнаете, как использовать SQL FROM с синтаксисом и примерами.
Описание
SQL оператор FROM используется для перечисления таблиц и любых объединений, необходимых для SQL оператора.
Синтаксис
Синтаксис оператора FROM в SQL:
[ { INNER JOIN
| LEFT [OUTER] JOIN
| RIGHT [OUTER] JOIN
| FULL [OUTER] JOIN } table2
ON table1.column1 = table2.column1 ]
Параметры или аргументы
- table1 и table2
- Это таблицы, используемые в операторе SQL. Две таблицы объединяются на основе table1.column1 = table2.column1.
Примечание
- В SQL операторе FROM должна быть указана хотя бы одна таблица.
- Если в операторе FROM указаны две или более таблиц, эти таблицы обычно объединяются с использованием объединений INNER или OUTER.
Пример - оператор FROM c одной таблицей
Мы начнем с рассмотрения того, как в SQL-запросе использовать FROM, в котором указана только одна таблица.
В этом примере у нас есть таблица suppliers со следующими данными:
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Russian |
200 | Lansing | Michigan | |
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
500 | Yahoo | Sunnyvale | Washington |
600 | DuckDuckGo | Paoli | Pennsylvania |
700 | Qwant | Paris | France |
800 | Menlo Park | California | |
900 | Electronic Arts | San Francisco | California |
Введите следующий SQL оператор:
1 2 3 4 |
SELECT * FROM suppliers WHERE supplier_id < 400 ORDER BY city DESC; |
Будет выбрано 3 записи. Вот результаты, которые вы должны получить:
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Russian |
200 | Lansing | Michigan | |
300 | Oracle | Redwood City | California |
В этом примере мы использовали оператор FROM для отображения таблицы suppliers. В этом запросе нет выполненных соединений, так как в FROM мы перечислили только одну таблицу.
Пример - две таблицы в операторе FROM (INNER JOIN)
Давайте посмотрим, как использовать предложение FROM, чтобы INNER JOIN (объединить) вместе две таблицы.
В этом примере у нас есть таблица products со следующими данными:
product_id | product_name | category_id |
---|---|---|
1 | Pear | 50 |
2 | Banana | 50 |
3 | Orange | 50 |
4 | Apple | 50 |
5 | Bread | 75 |
6 | Sliced Ham | 25 |
7 | Kleenex | NULL |
И таблица categories со следующими данными:
category_id | category_name |
---|---|
25 | Deli |
50 | Produce |
75 | Bakery |
100 | General Merchandise |
125 | Technology |
Выполните следующий SQL-оператор:
1 2 3 4 5 |
SELECT products.product_name, categories.category_name FROM products INNER JOIN categories ON products.category_id = categories.category_id WHERE product_name <> 'Pear'; |
Будет выбрано 5 записей. Вот результаты, которые вы должны получить:
product_name | category_name |
---|---|
Banana | Produce |
Orange | Produce |
Apple | Produce |
Bread | Bakery |
Sliced Ham | Deli |
В этом примере оператора FROM используется объединение двух таблиц - products и categories. В этом случае мы используем FROM, чтобы указать INNER JOIN между таблицами products и categories на основе столбца category_id в обеих таблицах.
Пример - две таблицы в операторе FROM (OUTER JOIN)
Рассмотрим как использовать FROM, когда мы соединяем вместе две таблицы, используя OUTER JOIN. В этом случае мы рассмотрим LEFT OUTER JOIN.
Давайте использовать те же таблицы products и categories, что и в примере INNER JOIN выше, но на этот раз мы объединим таблицы, используя LEFT OUTER JOIN. Введите следующий SQL оператор:
1 2 3 4 5 |
SELECT products.product_name, categories.category_name FROM products LEFT OUTER JOIN categories ON products.category_id = categories.category_id WHERE product_name <> 'Pear'; |
Будет выбрано 6 записей. Вот результаты, которые вы должны получить:
product_name | category_name |
---|---|
Banana | Produce |
Orange | Produce |
Apple | Produce |
Bread | Bakery |
Sliced Ham | Deli |
Kleenex | NULL |
В этом примере FROM используется LEFT OUTER JOIN с таблицами products и categories на основе category_id в обеих таблицах.
Теперь в нашем наборе результатов появится последняя запись с product_name 'Kleenex' со значением NULL для category_name. Эта запись не появилась в наших результатах, когда мы выполняли INNER JOIN.