SELECT оператор MySQL

В этом учебном материале вы узнаете, как использовать MySQL оператор SELECT с синтаксисом и примерами.

Описание

MySQL оператор SELECT используется для извлечения записей из одной или нескольких таблиц в MySQL.

Синтаксис

Простой синтаксис для оператора SELECT в MySQL:

SELECT expressions
FROM tables
[WHERE conditions];

Полный синтаксис для оператора SELECT в MySQL:

SELECT [ ALL | DISTINCT | DISTINCTROW ]
[ HIGH_PRIORITY ]
[ STRAIGHT_JOIN ]
[ SQL_SMALL_RESULT | SQL_BIG_RESULT ] [ SQL_BUFFER_RESULT ]
[ SQL_CACHE | SQL_NO_CACHE ]
[ SQL_CALC_FOUND_ROWS ]
expressions
FROM tables
[WHERE conditions]
[GROUP BY expressions]
[HAVING condition]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT [offset_value] number_rows | LIMIT number_rows OFFSET offset_value]
[PROCEDURE procedure_name]
[INTO [ OUTFILE 'file_name' options
| DUMPFILE 'file_name'
| @variable1, @variable2, ... @variable_n]
[FOR UPDATE | LOCK IN SHARE MODE];

Параметры или аргументы

ALL - необязательный. Возвращает все совпадающие строки
DISTINCT - необязательный. Удаляет дубликаты из набора результатов. Подробнее о DISTINCT.
DISTINCTROW - необязательный. Синоним DISTINCT. Удаляет дубликаты из набора результатов.
HIGH_PRIORITY - необязательный. Он сообщает MySQL, что он запускает SELECT перед любыми операторами UPDATE, ожидающими того же ресурса. Он может использоваться с таблицами MyISAM, MEMORY и MERGE, которые используют блокировку на уровне таблицы.
STRAIGHT_JOIN - необязательный. Он сообщает MySQL о соединении таблиц в том порядке, в котором они перечислены в предложении FROM.
SQL_SMALL_RESULT - необязательный. Использует быстрые временные таблицы для хранения результатов (используется с DISTINCT и GROUP BY).
SQL_BIG_RESULT - необязательный. Предпочитает сортировку, а не временную таблицу для хранения результатов (используется с DISTINCT и GROUP BY).
SQL_BUFFER_RESULT - необязательный. Использует временные таблицы для хранения результатов (не может использоваться с подзапросами).
SQL_CACHE - необязательный. Сохраняет результаты в кеше запросов.
SQL_NO_CACHE - необязательный. Не сохраняет результаты в кеше запросов.
SQL_CALC_FOUND_ROWS - необязательный. Вычисляет, сколько записей находится в результирующем наборе (не принимая во внимание атрибут LIMIT), который затем можно получить с помощью функции FOUND_ROWS.
expressions - столбцы или вычисления, которые вы хотите получить. Используйте *, если вы хотите выбрать все столбцы.
tables - таблицы, из которых вы хотите получить записи. Должна быть хотя бы одна таблица, перечисленная в предложении FROM.
WHERE conditions - необязательный. Условия, которые должны быть выполнены для выбранных записей.
GROUP BY expressions - необязательный. Он собирает данные по нескольким записям и группирует результаты по одному или нескольким столбцам. Подробнее о GROUP BY.
HAVING condition - необязательный. Он используется в сочетании с GROUP BY, чтобы ограничить группы возвращаемых строк только теми, чье условие TRUE. Подробнее о HAVING.
ORDER BY expression - необязательный. Он используется для сортировки записей в вашем результирующем наборе. Подробнее о ORDER BY.
LIMIT - необязательный. Если LIMIT указан, то он контролирует максимальное количество извлекаемых записей. Максимальное количество записей, заданных number_rows, будет возвращено в результирующем наборе. Первая строка, возвращаемая LIMIT, будет определяться значением offset_value.
PROCEDURE - необязательный. Если указано, то - это имя процедуры, которая должна обрабатывать данные в результирующем наборе.
INTO - необязательный. Если указан, это позволяет вам записать результирующий набор в файл или переменную.

Значение Пояснение
INTO OUTFILE
'filename' options
"Записывает результирующий набор в файл с именем filename на хосте сервера. Для параметров вы можете указать:
FIELDS ESCAPED BY 'character'
FIELDS TERMINATED BY 'character' [ OPTIONALLY ENCLOSED BY 'character' ]
LINES TERMINATED BY 'character'
где character - символ, отображаемый как символ ESCAPE, ENCLOSED или TERMINATED. Например:
SELECT supplier_id, supplier_name
FROM suppliers
INTO OUTFILE 'results.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '""'
LINES TERMINATED BY '\n';"
INTO DUMPFILE
'filename'
Записывает одну строку набора результатов в файл с именем filename на хосте сервера. С помощью этого метода не происходит прерывания столбца, не прерывается линия или обработка перехода.
INTO @variable1,
@variable2,
... @variable_n
Записывает набор результатов в одну или несколько переменных, как указано в параметрах @ variable1, @ variable2, ... @variable_n

FOR UPDATE - необязательный. Записи, затронутые запросом, блокируются, пока транзакция не завершится.
LOCK IN SHARE MODE - необязательный. Записи, затронутые запросом, могут использоваться другими транзакциями, но не могут быть обновлены или удалены этими и другими транзакциями.

Пример - ВЫБОРКА ВСЕХ ПОЛЕЙ ИЗ ОДНОЙ ТАБЛИЦЫ

Давайте посмотрим, как использовать MySQL оператор SELECT для выбора всех полей из таблицы.

В этом MySQL примере SELECT мы использовали * для обозначения того, что мы хотим выбрать все поля из таблицы order_details, где количество больше или равно 100. Результирующий набор сортируется по quantity в порядке убывания.

Пример - ВЫБОРКА ОТДЕЛЬНЫХ ПОЛЕЙ ИЗ ОДНОЙ ТАБЛИЦЫ

Вы также можете использовать MySQL оператор SELECT для выбора отдельных полей из таблицы.
Например:

В этом MySQL примере SELECT возвращает только поля order_id, quantity и unit_price из таблицы order_details, где количество меньше 300. Результаты сортируются по quantity в порядке возрастания, а затем unit_price в порядке убывания.

Пример - ВЫБОРКА ПОЛЕЙ ИЗ НЕСКОЛЬКИХ ТАБЛИЦ

Вы также можете использовать MySQL оператор SELECT для извлечения полей из нескольких таблиц.

В этом MySQL примере SELECT соединяет вместе две таблицы, чтобы выдать набор результатов, который отображает поля order_id и customer_name, где значение customer_id совпадает как в таблице customers, так и в таблице order_details. Результаты сортируются по полю order_details.order_id в порядке возрастания.

Пример - запись в файл

Вы также можете использовать MySQL оператор SELECT для записи набора результатов в файл.
Например:

В этом MySQL примере SELECT возвращает только поля order_id, quantity и unit_price из таблицы order_details, где quantity меньше 300. Результаты сортируются по quantity в порядке возрастания и записываются в файл с именем result.txt.