В этом учебном материале по SQL вы узнаете, как использовать оператор SELECT с синтаксисом и примерами.
Описание
SQL оператор SELECT используется для извлечения записей из одной или нескольких таблиц или представлений в базе данных SQL. Полученные записи известны как набор результатов.
Синтаксис
Синтаксис для оператора SELECT в SQL.
FROM tables
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]];
Параметры или аргумент
- expressions
- Столбцы или расчеты, которые вы хотите получить. Используйте *, если вы хотите выбрать все столбцы
- tables
- Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана хотя бы одна таблица
- WHERE conditions
- Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны. Если не предусмотрено никаких условий, будут выбраны все записи
- ORDER BY expression
- Необязательный. Выражение, используемое для сортировки записей в наборе результатов. Если указано более одного выражения, значения должны быть разделены запятыми
- ASC
- Необязательный. ASC сортирует результирующий набор в порядке возрастания по expressions. Это поведение по умолчанию, если модификатор не указан
- DESC
- Необязательный. DESC сортирует результирующий набор в порядке убывания по expressions
Пример - выбрать все поля из таблицы
Давайте рассмотрим пример, который показывает, как использовать SQL запрос SELECT для выбора всех полей в таблице.
В этом примере у нас есть таблица customers со следующими данными:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
Теперь давайте продемонстрируем, как работает оператор SELECT, выбрав все столбцы из таблицы customers. Введите следующий запрос SELECT.
1 2 3 4 |
SELECT * FROM customers WHERE favorite_website = 'google.com' ORDER BY last_name ASC; |
Будет выбрано 2 записи. Вот результаты, которые вы должны получить.
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
9000 | Russell | Crowe | google.com |
В этом примере мы использовали *, чтобы показать, что мы хотим просмотреть все поля из таблицы customers, где favorite_website - 'google.com'. Набор результатов сортируется по last_name в порядке возрастания.
Пример - выбор отдельных полей из таблиц
Вы также можете использовать SQL оператор SELECT для выбора отдельных полей в таблице, в отличие от всех полей в таблице.
В этом примере у нас есть таблица 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 |
Теперь давайте продемонстрируем, как использовать оператор SELECT для выбора отдельных столбцов таблицы. Введите следующую запроc SELECT.
1 2 3 4 5 |
SELECT supplier_name, city FROM suppliers WHERE supplier_id > 500 ORDER BY supplier_name ASC, city DESC; |
4 записи должны быть выбраны. Вот результаты, которые вы должны получить.
supplier_name | city |
---|---|
DuckDuckGo | Paoli |
Electronic Arts | San Francisco |
Menlo Park | |
Qwant | Paris |
В этом примере возвращаются только поля supplier_name и city из таблицы supplier, где значение supplier_id больше, чем 500. Результаты сортируются по supplier_name в порядке возрастания, а затем по полю city в порядке убывания.
Пример - выбор отдельных полей из нескольких табли
Вы также можете использовать SQL оператор SELECT для извлечения полей из нескольких таблиц.
В этом примере у нас есть таблица orders со следующими данными:
order_id | customer_id | order_date |
---|---|---|
1 | 7000 | 2019/06/18 |
2 | 5000 | 2019/06/18 |
3 | 8000 | 2019/06/19 |
4 | 4000 | 2019/06/20 |
5 | NULL | 2019/07/01 |
И таблица с именем customers со следующими данными:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
Теперь давайте выберем столбцы из таблиц orders и customer. Введите следующий запрос SELECT.
1 2 3 4 5 6 7 |
SELECT orders.order_id, customers.last_name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id WHERE orders.order_id <> 1 ORDER BY orders.order_id; |
Будет выбрано 3 записи. Вот результаты, которые вы должны получить.
order_id | last_name |
---|---|
2 | Gomez |
3 | Depp |
4 | Bieber |
Этот пример SELECT объединяет две таблицы, чтобы дать нам набор результатов, который отображает order_id из таблицы orders и last_name из таблицы customers. Каждый раз, когда мы используем столбец в операторе SELECT, мы добавляем к столбцу имя таблицы (например, orders.order_id) в случае, если есть какая-то двусмысленность относительно того, какой столбец к какой таблице принадлежит.
Если вы хотите выбрать все поля из таблицы orders, а затем поле last_name из таблицы клиентов, Введите следующий запрос SELECT.
1 2 3 4 5 6 7 |
SELECT orders.*, customers.last_name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id WHERE orders.order_id <> 1 ORDER BY orders.order_id; |
Будет выбрано 3 записи. Вот результаты, которые вы должны получить.
order_id | customer_id | order_date | last_name |
---|---|---|---|
2 | 5000 | 2019/06/18 | Gomez |
3 | 8000 | 2019/06/19 | Depp |
4 | 4000 | 2019/06/20 | Bieber |
В этом примере мы используем orders.*, чтобы показать, что мы хотим выбрать все поля из таблицы orders, а затем мы выбираем поле last_name из таблицы customers.