Select from mysql что значит

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

SELECT оператор MySQL

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

Описание

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

Синтаксис

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

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

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

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, выборка из таблиц MySQL

Все SELECT запросы строятся по одному шаблону:

То есть сначала указывается что должно быть получено в результате (все содержимое таблицы или, например, определенная колонка), потом — указывается имя таблицы или таблиц, в завершение условие которому должен удовлетворять результат.

Продолжаем работать с базой данных REAL_ESTATE_AGENCY и первой таблицей REAL_ESTATE.

Уже приводившаяся команда со * выведет все содержимое таблицы:

Теперь немного усложним запрос добавив условие, по которому производится выборка. В частности выведем все записи для которых в качестве значения колонки city задано Moskow

SELECT * FROM REAL_ESTATE WHERE city=’Moskow’;

+————+———+————+————+————-+————+——-+
| type | city | floorspace | district | street | rentorsale | PRICE |
+————+———+————+————+————-+————+——-+
| Appartment | Moskow | 56 | Center | Tverskaya | Rent | 50000 |
| Appartment | Moskow | 42 | Himki | Bolshaya | Rent | 18000 |
| Appartment | Moskow | 36 | Hamovniki | Sportivnaya | Rent | 15000 |
+————+———+————+————+————-+————+——-+
3 rows in set (0.00 sec)

На этом этапе замечаем, что в названии российской столицы опечатка — обновляем значение трех записей, затем продолжаем разбираться с SELECT запросами

UPDATE REAL_ESTATE SET city=’Moscow’ WHERE city=’Moskow’;

Query OK, 3 rows affected (0.01 sec)
Rows matched: 3 Changed: 3 Warnings: 0

SELECT * FROM REAL_ESTATE WHERE city=’Moscow’;

+————+———+————+————+————-+————+——-+
| type | city | floorspace | district | street | rentorsale | PRICE |
+————+———+————+————+————-+————+——-+
| Appartment | Moscow | 56 | Center | Tverskaya | Rent | 50000 |
| Appartment | Moscow | 42 | Himki | Bolshaya | Rent | 18000 |
| Appartment | Moscow | 36 | Hamovniki | Sportivnaya | Rent | 15000 |
+————+———+————+————+————-+————+——-+
3 rows in set (0.00 sec)

Операторы AND и OR в SELECT запросах

выборка из таблиц MySQL выполняется по условиям, которые могут быть простыми как в примере выше или могут состоять из нескольких частей. Может проверяться как полное соответствие значению в ячейке таблицы, так и численное значение в представлении «больше»/»меньше»/»равно» и их комбинации

SELECT * FROM REAL_ESTATE WHERE rentorsale=’Rent’ and PRICE >=’25000′;

+————+———+————+———-+————+————+——-+
| type | city | floorspace | district | street | rentorsale | PRICE |
+————+———+————+———-+————+————+——-+
| Appartment | Moscow | 56 | Center | Tverskaya | Rent | 50000 |
+————+———+————+———-+————+————+——-+
1 row in set (0.00 sec)

Запрос вывел данные по единственному объекту недвижимости в таблице, который сдается за сумму большую, чем 25 тысяч рублей.

Усложним запрос добавив в подходящие нам результаты объекты, в поле «PRICE» для которых указано 15000, также ограничимся городом Краснодаром.

SELECT * FROM REAL_ESTATE WHERE rentorsale=’Rent’ AND (PRICE >=’25000′ OR PRICE =’15000′) AND city=’Krasnodar’;

+————+————+————+————+————+————+——-+
| type | city | floorspace | district | street | rentorsale | PRICE |
+————+————+————+————+————+————+——-+
| Appartment | Krasnodar | 44 | Leninskiy | Atamannaya | Rent | 15000 |
+————+————+————+————+————+————+——-+
1 row in set (0.00 sec)

Объекты выборки в MySQL

До настоящего момента указывалась *, что означает необходимость вывода всей информации из таблицы. Обычно это не требуется и достаточно значений одной или двух колонок

Для примера получим площадь квартиры в Краснодаре, которая сдается в аренду и стоимость в базе для которой равна 15000 или больше 25000.

SELECT floorspace FROM REAL_ESTATE WHERE rentorsale=’Rent’ AND (PRICE >=’25000′ OR PRICE =’15000′) AND city=’Krasnodar’;

+————+
| floorspace |
+————+
| 44 |
+————+
1 row in set (0.00 sec)

Здесь также допустимо любое количество значений — выберем по тем же условиям площадь объекта недвижимости и улицу, на которой он расположен

SELECT floorspace, street FROM REAL_ESTATE WHERE rentorsale=’Rent’ AND (PRICE >=’25000′ OR PRICE =’15000′) AND city=’Krasnodar’;

+————+————+
| floorspace | street |
+————+————+
| 44 | Atamannaya |
+————+————+
1 row in set (0.00 sec)

SELECT DISTINCT и выборка из таблиц MySQL

Часто возникает необходимость избавится от дублирующихся значений в результатах, дубли могут появиться например в результате такого запроса

SELECT floorspace FROM REAL_ESTATE WHERE city=’Yekaterinburg’ AND PRICE =’15000′;

+————+
| floorspace |
+————+
| 44 |
| 44 |
+————+
2 rows in set (0.00 sec)

Фактически это 2 разных квартиры, результат идентичен. В других условиях возможно полное совпадение. Чтобы избавиться от дублей нужно использовать DISTINCT, с которым SELECT будет работать до первого найденного совпадения

SELECT DISTINCT floorspace FROM REAL_ESTATE WHERE city=’Yekaterinburg’ AND PRICE =’15000′;

+————+
| floorspace |
+————+
| 44 |
+————+
1 row in set (0.00 sec)

Сортировка при выборке из таблиц

Сортировка в MySQL производится при помощи директивы ORDER BY

SELECT * FROM REAL_ESTATE WHERE city=’Moscow’ ORDER BY PRICE;

+————+———+————+————+————-+————+——-+
| type | city | floorspace | district | street | rentorsale | PRICE |
+————+———+————+————+————-+————+——-+
| Appartment | Moscow | 36 | Hamovniki | Sportivnaya | Rent | 15000 |
| Appartment | Moscow | 42 | Himki | Bolshaya | Rent | 18000 |
| Appartment | Moscow | 56 | Center | Tverskaya | Rent | 50000 |
+————+———+————+————+————-+————+——-+
3 rows in set (0.00 sec)

По умолчанию производится сортировка по возрастанию

Добавив в запрос DESC можно получить сортировку по возрастанию

SELECT * FROM REAL_ESTATE WHERE city=’Moscow’ ORDER BY PRICE DESC;

+————+———+————+————+————-+————+——-+
| type | city | floorspace | district | street | rentorsale | PRICE |
+————+———+————+————+————-+————+——-+
| Appartment | Moscow | 56 | Center | Tverskaya | Rent | 50000 |
| Appartment | Moscow | 42 | Himki | Bolshaya | Rent | 18000 |
| Appartment | Moscow | 36 | Hamovniki | Sportivnaya | Rent | 15000 |
+————+———+————+————+————-+————+——-+
3 rows in set (0.00 sec)

Шаблоны в запросах на выборку данных

Выборка из таблиц MySQL часто требует не точного совпадения, а совпадения по определенной маске

Поиск частичного совпадения производится SELECT запросом с оператором LIKE

SELECT * FROM REAL_ESTATE WHERE street LIKE ‘B%’;

+————+————-+————+————-+————+————+——-+
| type | city | floorspace | district | street | rentorsale | PRICE |
+————+————-+————+————-+————+————+——-+
| Appartment | Novosibirsk | 33 | Oktabriskiy | Belinskogo | Rent | 17000 |
| Appartment | Moscow | 42 | Himki | Bolshaya | Rent | 18000 |
+————+————-+————+————-+————+————+——-+
2 rows in set (0.00 sec)

LIKE может работать с регулярными выражениями, в качестве любого количества символов используется ‘%’, для одного произвольного символа ‘_’

SELECT * FROM REAL_ESTATE WHERE street LIKE ‘B_l_n%’;

+————+————-+————+————-+————+————+——-+
| type | city | floorspace | district | street | rentorsale | PRICE |
+————+————-+————+————-+————+————+——-+
| Appartment | Novosibirsk | 33 | Oktabriskiy | Belinskogo | Rent | 17000 |
+————+————-+————+————-+————+————+——-+
1 row in set (0.00 sec)

Регулярные выражения MySQL будут рассмотрены в следующем материале из цикла. Они используются не менее редко, чем шаблоны

Источник

Оцените статью