кодесурса
«MYSQL

MySQL оператор SELECT

script1adsense2code
script1adsense3code

Оператор SELECT

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

Синтаксис:

 ВЫБРАТЬ
[ВСЕ | DISTINCT | DISTINCTROW]
[ВЫСОКИЙ ПРИОРИТЕТ]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr ...]
[FROM table_references
[ГДЕ где_условие]
[GROUP BY {col_name | expr | позиция}
[ASC | DESC], ... [С РОЛЛУПОМ]]
[ИМЕЯ где_условие]
[ЗАКАЗАТЬ {col_name | expr | позиция}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET смещение}]
[ПРОЦЕДУРА имя_процесса (список_ аргументов)]
[INTO OUTFILE 'file_name' export_options
| INTO DUMPFILE 'имя_файла'
| INTO var_name [, var_name]]
[ДЛЯ ОБНОВЛЕНИЯ | LOCK IN SHARE MODE]]

Аргументы:

название Описания
ВЫБРАТЬ Оператор SELECT используется для извлечения строк или записей из одной или нескольких таблиц.
* , ВСЕ С указанием всех столбцов.
колонка Столбцы или список столбцов.
Таблица Указывает имя таблицы, из которой будут получены строки.
DISTINCT Предложение DISTINCT используется для извлечения уникальных строк из таблицы.
DISTINCTROW DISTINCTROW является синонимом DISTINCT.
ВЫСОКИЙ ПРИОРИТЕТ При использовании с SELECT связанный запрос получает более высокий приоритет, чем оператор обновления. Он запускается, даже если таблица, к которой применяется запрос, заблокирована запросом на обновление. Он может использоваться только с механизмами хранения MyISAM, MEMORY и MERGE. И может использоваться только в том случае, если связанный запрос выполняется очень быстро, а также выполняется сразу. Если операторы SELECT являются частью UNION, вы не можете использовать HIGH_PRIORITY вместе с.
STRAIGHT_JOIN Если используется с SELECT, связанные таблицы объединяются в том порядке, в котором они расположены в соответствующем предложении FROM. Это нельзя использовать для быстрого выполнения запроса, а также в списке table_references.
SQL_SMALL_RESULT Может использоваться с GROUP BY или DISTINCT. Он сообщает оптимизатору (компоненту системы DataBase, который определяет наиболее эффективный способ выполнения запроса), что результирующий набор мал, поэтому используйте быстрые временные таблицы для хранения результирующей таблицы вместо использования сортировки.
SQL_BIG_RESULT Может использоваться с GROUP BY или DISTINCT. Он сообщает оптимизатору (компоненту системы DataBase, который определяет наиболее эффективный способ выполнения запроса), что результирующий набор имеет много строк, поэтому при необходимости используйте дисковые временные таблицы и предпочитайте сортировку, чтобы использовать временную таблицу с ключ к элементам GROUP BY.
SQL_BUFFER_RESULT Это заставляет результат быть помещенным во временную таблицу. При использовании MySQL может освободить блокировки таблиц раньше, и отправка результирующего набора клиенту занимает меньше времени, что может занять много времени. Его нельзя использовать для подзапросов или после UNION.
SQL_CACHE Он сообщает MySQL сохранить результат в кеше запросов (системный компонент DataBase, в котором хранится текст оператора SELECT вместе с соответствующим результатом, отправленным клиенту), если он кешируется. Значение системной переменной query_cache_type равно 2 или DEMAND.
SQL_NO_CACHE Он говорит MySQL не хранить результат в кэше запросов (системный компонент DataBase, в котором хранится текст оператора SELECT вместе с соответствующим результатом, отправленным клиенту). Его также можно использовать для представлений, если он сопровождает оператор SELECT.
SQL_CALC_FOUND_ROWS Это говорит MySQL рассчитать количество строк в наборе результатов. При расчете строк таким способом предложение LIMIT игнорируется. Количество строк затем можно получить с помощью SELECT FOUND_ROWS ().
select_expr Выражение.
ОТ Это предложение используется после SELECT и предыдущих таблиц или подзапросов.
table_references Имя таблиц, используемых в операторе SELECT.
ГДЕ Условия поставляются после этого ключевого слова (в операторе выбора).
where_condition Условия размещены после ГДЕ.
ГРУППА ПО Если используется, результаты, возвращаемые из имени поля, использованного после предложения GROUP BY, группируются в наборе результатов.
col_name Имя столбца или столбцов или полей.
выраж Выражение.
позиция Относится к положению столбцов, начинающихся с 1.
ASC Если используется, результаты возвращаются в порядке возрастания.
DESC Если используется, результаты возвращаются в порядке убывания.
С РОЛЛУПОМ Этот модификатор можно использовать с предложением GROUP BY. Если используется, дополнительные строки добавляются к итоговому выводу.
HAVING Этот модификатор можно использовать с предложением GROUP BY и агрегатными функциями. Не может использоваться с предложением WHERE.
СОРТИРОВАТЬ ПО Предложение MySQL ORDER BY указывает порядок, в котором сортируются столбцы при извлечении данных в операторе SELECT.
ПРЕДЕЛ За ним всегда следуют один или два числовых аргумента. Первый аргумент - это смещение первой строки, которая будет возвращена, а второй аргумент - это максимальное количество строк, возвращаемых в наборе результатов.
ПРОЦЕДУРА В этом разделе указывается процедура, которая должна обрабатывать данные в наборе результатов.
В OUTFILE Делает резервную копию связанной таблицы в указанном файле.
В DUMPFILE Если используется вместо INTO OUTFILE, в файл записывается только одна строка. Полезно, если значения BLOB должны храниться в файле.
var_name Имя переменной для временного хранения данных.
ДЛЯ ОБНОВЛЕНИЯ Если используется с механизмом хранения, который использует блокировки страниц или строк, до конца транзакции строки, проверенные запросом, блокируются на запись.
LOCK IN SHARE MODE Если используется, общая блокировка устанавливается для строк, проверенных связанным запросом. Таким образом, другие транзакции могут читать проверенные строки, не могут обновлять или удалять эти строки.

Следующие пункты обычно используются в инструкциях SELECT:

  • Каждый select_expr указывает столбец, который вы хотите получить. Должен быть хотя бы один select_expr.
  • table_references указывает таблицу или таблицы, из которых можно извлечь строки.
  • Предложение WHERE, если оно задано, указывает условие или условия, которым должны удовлетворять строки. where_condition - это выражение, которое оценивается как true для каждой выбранной строки. Оператор выбирает все строки, если нет предложения WHERE (т.е. без каких-либо условий).
  • В выражении WHERE вы можете использовать любые функции и операторы, которые поддерживает MySQL, за исключением агрегатных функций.

SELECT также может использоваться для получения строк, вычисленных без ссылки на какую-либо таблицу.

Например:

 mysql> SELECT 5 - 3;
+ ------- +
| 5 - 3 |
+ ------- +
| 2 |
+ ------- +
1 ряд в наборе (0,00 сек)

Вы можете указать DUAL в качестве имени фиктивной таблицы, на которую нет ссылок на таблицы:

 mysql> ВЫБРАТЬ 5 - 3 ОТ ДВОЙНОГО;
+ ------- +
| 5 - 3 |
+ ------- +
| 2 |
+ ------- +
1 ряд в наборе (0,00 сек) 

DUAL предназначен исключительно для удобства людей, которые требуют, чтобы все операторы SELECT имели FROM и, возможно, другие предложения. MySQL может игнорировать пункты. MySQL не требует FROM DUAL, если на таблицы нет ссылок.

Как правило, используемые пункты должны быть приведены в том порядке, который указан в описании синтаксиса. Например, предложение HAVING должно идти после любого предложения GROUP BY и перед любым предложением ORDER BY. На последующих страницах учебника MySQL по w3resource вы найдете подробное обсуждение, сопровождаемое примерами (часто с кодами PHP) упомянутых аргументов оператора SELECT.

MySQL выбирает все данные

Оператор MySQL SELECT без каких-либо условий извлекает все записи из таблицы. Следующая инструкция SELECT извлечет все данные из таблицы издателя.

SELECT *
FROM publisher;


Выход:

 mysql> SELECT * FROM publisher;
+ -------- + ------------------------------ + --------- - + ----------- + ---------------- + -------------- + --- --------- +
| pub_id | pub_name | pub_city | страна | country_office | no_of_branch | есть |
+ -------- + ------------------------------ + --------- - + ----------- + ---------------- + -------------- + --- --------- +
| P001 | Публикация Jex Max | Нью Йорк | США | Нью Йорк | 15 | 1969-12-25 | 
| P002 | Публикация БПП | Мумбаи | Индия | Нью-Дели | 10 | 1985-10-01 | 
| P003 | Нью Гарролд Публикация | Аделаида | Австралия | Сидней | 6 | 1975-09-05 | 
| P004 | Ультра Пресс Инк | Лондон | Великобритания | Лондон | 8 | 1948-07-10 | 
| P005 | Горная публикация | Хьюстан | США | Сан Диего | 25 | 1975-01-01 | 
| P006 | Летняя ночь Публикация | Нью Йорк | США | Атланта | 10 | 1990-12-10 | 
| P007 | Pieterson Grp. издателей | Кембридж | Великобритания | Лондон | 6 | 1950-07-15 | 
| P008 | Роман Издатель ООО | Нью-Дели | Индия | Бангалор | 10 | 2000-01-01 | 
+ -------- + ------------------------------ + --------- - + ----------- + ---------------- + -------------- + --- --------- +
8 рядов в наборе (0,00 сек)

PHP скрипт

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>example-select-all-data - php MySQL examples | w3resource</title>
</head>
<body>
<?php
echo "<h2>List of the publishers with other detail : </h2>";
echo "<table border='1' style='border-collapse: collapse;border-color: silver;'>";
echo "<tr style='font-weight: bold;'>";
echo "<td width='200' align='center'>Publisher's ID</td><td width='200'align='center'>Publisher's Name</td><td width='200' align='center'>Publisher's City</td><td width='200' align='center'>Publisher's Country</td><td width='200' align='center'>Country Office</td><td width='200' align='center'>Number of branches</td><td width='200' align='center'>Date of Establishment</td>";
echo "</tr>";
include("../dbopen.php");
$result = MySQL_query("SELECT * FROM publisher");
while($row=MySQL_fetch_array($result))
{
echo "<tr>";
echo "<td align='center' width='200'>" . $row['pub_id'] . "</td>";
echo "<td align='center' width='200'>" . $row['pub_name'] . "</td>";
echo "<td align='center' width='100'>" . $row['pub_city'] . "</td>";
echo "<td align='center' width='100'>" . $row['country'] . "</td>";
echo "<td align='center' width='100'>" . $row['country_office'] . "</td>";
echo "<td align='center' width='100'>" . $row['no_of_branch'] . "</td>";
echo "<td align='center' width='100'>" . $row['estd'] . "</td>";
echo "</tr>";
}
echo "</table>";
?>
</body>
</html>

Посмотреть пример в браузере

MySQL SELECT конкретные строки

Когда пользователь хочет извлечь некоторые отдельные строки из таблицы, необходимо добавить предложение WHERE с оператором SELECT, после которого сразу следует условие.

Синтаксис:

 ВЫБРАТЬ * 
ОТ  
ГДЕ 
where_condition

Здесь * обозначает все столбцы.

Пример:

Этот следующий оператор SELECT будет извлекать те конкретные строки, где «страна» - США.

Код:

 ВЫБРАТЬ *
ОТ издателя
ГДЕ страна = 'США' 

Выход:

 mysql> SELECT * ОТ издателя
    -> ГДЕ страна = 'США';
+ -------- + -------------------------- + ---------- + - ------- + ---------------- + -------------- + ---------- - +
| pub_id | pub_name | pub_city | страна | country_office | no_of_branch | есть |
+ -------- + -------------------------- + ---------- + - ------- + ---------------- + -------------- + ---------- - +
| P001 | Публикация Jex Max | Нью Йорк | США | Нью Йорк | 15 | 1969-12-25 | 
| P005 | Горная публикация | Хьюстан | США | Сан Диего | 25 | 1975-01-01 | 
| P006 | Летняя ночь Публикация | Нью Йорк | США | Атланта | 10 | 1990-12-10 | 
+ -------- + -------------------------- + ---------- + - ------- + ---------------- + -------------- + ---------- - +
3 ряда в наборе (0,01 с)

MySQL SELECT конкретных строк с оператором AND

Оператор MySQL AND используется для объединения нескольких условий с целью извлечения записей, когда оба условия выполнены. Следующая инструкция SELECT будет извлекать те конкретные строки, в которых страна и город издателя - «США» и «Нью-Йорк».

Код:

SELECT *
FROM publisher
WHERE country='USA'
AND pub_city='New York';

Выход:

 mysql> SELECT * ОТ издателя
    -> ГДЕ страна = 'США'
    -> AND pub_city = 'Нью-Йорк';
+ -------- + -------------------------- + ---------- + - ------- + ---------------- + -------------- + ---------- - +
| pub_id | pub_name | pub_city | страна | country_office | no_of_branch | есть |
+ -------- + -------------------------- + ---------- + - ------- + ---------------- + -------------- + ---------- - +
| P001 | Публикация Jex Max | Нью Йорк | США | Нью Йорк | 15 | 1969-12-25 | 
| P006 | Летняя ночь Публикация | Нью Йорк | США | Атланта | 10 | 1990-12-10 | 
+ -------- + -------------------------- + ---------- + - ------- + ---------------- + -------------- + ---------- - +
2 ряда в наборе (0,00 сек)

MySQL SELECT конкретные столбцы

Чтобы извлечь записи из определенных столбцов, необходимо указать список столбцов, разделенных запятыми. Следующая инструкция MySQL возвращает название книги, идентификатор автора и цену книг из таблицы book_mast.


Код:

SELECT book_name,aut_id,book_price
FROM book_mast;

Выход:

 mysql> SELECT book_name, aut_id, book_price
    -> ОТ book_mast;
+ ------------------------------------- + -------- + - ---------- +
| book_name | aut_id | book_price |
+ ------------------------------------- + -------- + - ---------- +
| Введение в электродинамику | AUT001 | 85,00 | 
| Понимание стальных конструкций | AUT002 | 105,50 | 
| Руководство по сети | AUT003 | 200,00 | 
| Передача тепла и массы | AUT004 | 250,00 | 
| Концептуальная физика | AUT005 | 145,00 | 
| Основы жары | AUT006 | 112,00 | 
| Продвинутая 3d графика | AUT007 | 56,00 | 
| Анатомия человека | AUT008 | 50,50 | 
| Уход за психическим здоровьем | AUT009 | 145,00 | 
| Основы термодинамики | AUT010 | 225,00 | 
| Экспериментальный анализ кошек | AUT011 | 95,00 | 
| Природа Мира | AUT005 | 88,00 | 
| Окружающая среда - устойчивое будущее | AUT012 | 100,00 | 
| Концепции в здоровье | AUT013 | 180,00 | 
| Анатомия и физиология | AUT014 | 135,00 | 
| Сети и Телекоммуникации | AUT015 | 45,00 | 
+ ------------------------------------- + -------- + - ---------- +
16 рядов в наборе (0,01 с)

MySQL выбрать конкретные столбцы с отдельным оператором

Предложение DISTINCT используется для извлечения уникальных строк из таблицы. Следующая инструкция MySQL извлекает уникальные идентификаторы авторов из таблицы book_mast.

Код:

SELECT DISTINCT aut_id
FROM book_mast;

Выход:

 mysql> SELECT DISTINCT aut_id
    -> ОТ book_mast;
+ -------- +
| aut_id |
+ -------- +
| AUT001 | 
| AUT002 | 
| AUT003 | 
| AUT004 | 
| AUT005 | 
| AUT006 | 
| AUT007 | 
| AUT008 | 
| AUT009 | 
| AUT010 | 
| AUT011 | 
| AUT012 | 
| AUT013 | 
| AUT014 | 
| AUT015 | 
+ -------- +
15 рядов в наборе (0,01 с)

Примечание . Если вы посмотрите на таблицу book_mast, показанную под заголовком «Пример таблицы: book_mast», то обнаружите, что AUT005 (в столбце «aut_id») появлялся несколько раз. Используя предложение DISTINCT, мы избавились от этой избыточности.

MySQL SELECT конкретные столбцы с логическим оператором ИЛИ

Оператор ИЛИ извлекает записи из таблицы, если выполнено хотя бы одно из заданных условий. Следующая инструкция MySQL извлекает записи столбцов pub_name, country, pub_city из таблицы издателя, если в качестве страны (т.е. страны) издателя указано «США», или его города (т.е. pub_city) - «Нью-Йорк».

Код:

SELECT pub_name, country,pub_city
FROM publisher
WHERE country='USA' OR pub_city='New York';

Выход:

 mysql> ВЫБРАТЬ имя_баба, страна, pub_city
    -> ОТ издателя
    -> ГДЕ страна = 'США' ИЛИ pub_city = 'Нью-Йорк';
+ -------------------------- + --------- + ---------- +
| pub_name | страна | pub_city |
+ -------------------------- + --------- + ---------- +
| Публикация Jex Max | США | Нью Йорк | 
| Горная публикация | США | Хьюстан | 
| Летняя ночь Публикация | США | Нью Йорк | 
+ -------------------------- + --------- + ---------- +
3 ряда в наборе (0,00 сек)

MySQL сортировка строк в порядке возрастания

Предложение MySQL ORDER BY указывает порядок, в котором сортируются столбцы при извлечении данных в операторе SELECT. По умолчанию столбцы сортируются в порядке возрастания. Вы можете использовать ключевое слово ASC для достижения того же результата.

Примечание . В случае сортировки столбцов с символьным типом сортировка зависит от чувствительности к регистру. Порядок сортировки по умолчанию возрастает, это означает, что наименьшее значение идет первым. Для сортировки в обратном порядке необходимо использовать ключ DESC.

В следующем операторе MySQL все записи столбцов pub_name, country и pub_city таблицы издателя выбираются и сортируются по столбцу pub_name. Поскольку мы не указали ни одного ключевого слова заказа (ASC или DESC), по умолчанию оно сортируется в порядке возрастания.

Код:

SELECT pub_name, country,pub_city 
FROM publisher
ORDER BY pub_name;

Выход:

 mysql> ВЫБРАТЬ имя_баба, страна, pub_city
    -> ОТ издателя
    -> ЗАКАЗАТЬ ПО pub_name;
+ ------------------------------ + ----------- + ------ ----- +
| pub_name | страна | pub_city |
+ ------------------------------ + ----------- + ------ ----- +
| Публикация БПП | Индия | Мумбаи | 
| Публикация Jex Max | США | Нью Йорк | 
| Горная публикация | США | Хьюстан | 
| Нью Гарролд Публикация | Австралия | Аделаида | 
| Роман Издатель ООО | Индия | Нью-Дели | 
| Pieterson Grp. издателей | Великобритания | Кембридж | 
| Летняя ночь Публикация | США | Нью Йорк | 
| Ультра Пресс Инк | Великобритания | Лондон | 
+ ------------------------------ + ----------- + ------ ----- +
8 рядов в наборе (0,02 сек)

MySQL сортировка строк в порядке убывания

Следующая инструкция MySQL сортирует строки таблицы в порядке убывания, используя предложение ORDER BY.

Код:

SELECT pub_name, country,pub_city
FROM publisher
ORDER BY pub_name DESC;

Выход:

 mysql> ВЫБРАТЬ имя_баба, страна, pub_city
    -> ОТ издателя
    -> ЗАКАЗАТЬ pub_name DESC;
+ ------------------------------ + ----------- + ------ ----- +
| pub_name | страна | pub_city |
+ ------------------------------ + ----------- + ------ ----- +
| Ультра Пресс Инк | Великобритания | Лондон | 
| Летняя ночь Публикация | США | Нью Йорк | 
| Pieterson Grp. издателей | Великобритания | Кембридж | 
| Роман Издатель ООО | Индия | Нью-Дели | 
| Нью Гарролд Публикация | Австралия | Аделаида | 
| Горная публикация | США | Хьюстан | 
| Публикация Jex Max | США | Нью Йорк | 
| Публикация БПП | Индия | Мумбаи | 
+ ------------------------------ + ----------- + ------ ----- +
8 рядов в наборе (0,00 сек)

MySQL сортирует строки по нескольким столбцам

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

В следующем операторе MySQL все записи столбцов pub_name, country и pub_city таблицы издателя выбираются и сортируются по столбцам country и pub_city. Поскольку мы не указали ни одного ключевого слова заказа (ASC или DESC), по умолчанию оно сортируется в порядке возрастания.

Код:

SELECT pub_name, country,pub_city
FROM publisher
ORDER BY country,pub_city;

Выход :

 mysql> ВЫБРАТЬ имя_баба, страна, pub_city
    -> ОТ издателя
    -> ЗАКАЗАТЬ ПО СТРАНЕ, pub_city;
+ ------------------------------ + ----------- + ------ ----- +
| pub_name | страна | pub_city |
+ ------------------------------ + ----------- + ------ ----- +
| Нью Гарролд Публикация | Австралия | Аделаида | 
| Публикация БПП | Индия | Мумбаи | 
| Роман Издатель ООО | Индия | Нью-Дели | 
| Pieterson Grp. издателей | Великобритания | Кембридж | 
| Ультра Пресс Инк | Великобритания | Лондон | 
| Горная публикация | США | Хьюстан | 
| Публикация Jex Max | США | Нью Йорк | 
| Летняя ночь Публикация | США | Нью Йорк | 
+ ------------------------------ + ----------- + ------ ----- +
8 рядов в наборе (0,00 сек)

MySQL выберите со значением NULL

IS NULL, IS NOT NULL используется для выбора или проверки, если значение, хранящееся в таблице, равно NULL. При написании оператора MySQL ключевое слово NULL используется для указания нулевого значения.

Что такое значение NULL?

  • Значение NULL говорит о том, что значение неизвестно, неприменимо или будет добавлено позже.
  • Значение NULL не является пустым или нулевым значением.
  • Нет двух нулевых значений равных.
  • Поскольку значение NULL неизвестно, сравнение между двумя нулевыми значениями или между NULL и любым другим значением возвращает неизвестное.

Пример SELECT с NULL:

Код:

SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;

Выход:

 mysql> SELECT 1 = NULL, 1 <> NULL, 1 <NULL, 1> NULL;
+ ---------- + ----------- + ---------- + --------- +
| 1 = NULL | 1 <> NULL | 1 <NULL | 1> NULL |
+ ---------- + ----------- + ---------- + --------- +
| NULL | NULL | NULL | NULL | 
+ ---------- + ----------- + ---------- + --------- +
1 ряд в наборе (0,01 с)

Пример SELECT с IS NULL, не является NULL:

Код:

SELECT 1 IS NULL, 1 IS NOT NULL;

Выход:

 mysql> SELECT 1 IS NULL, 1 NOT NULL;
+ ----------- + --------------- +
| 1 НУЛЯЕТ | 1 НЕ НУЛЬ |
+ ----------- + --------------- +
| 0 | 1 | 
+ ----------- + --------------- +
1 ряд в наборе (0,00 сек)

Предыдущая: MySQL Удалить
Далее: MySQL UNION

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code