Программирование >>  Программный интерфейс приложений 

1 ... 207 208 209 [ 210 ] 211 212 213 ... 264


2LECT

,ЕСТ

[ select options] select list

[INTO OUTFILE file naine export option] [FROM tbl list [WHERE where expr] [GROUP BY coluinn list] [HAVING where expr]

[ORDER BY {unsigned integer col naine formula}

[ASC I DESC) , . . . ] [LIMIT [offset,] rows] [PROCEDURE procedure naine] ]

Делает выборку строк из определенных таблиц. Практически все элементы синтаксиса этого оператора, за исключением ключевого слова select и предложения select list, являются необязательными, что позволяет использовать этот оператор для расчета выражений:

select one plus one , 1+1

Предложение select options может содержать следующие опции.

all; distinct; distinctrow. Эти ключевые слова определяют, будут ли возвращаться строки с дублирующими значениями. Слово all приводит к возврату всех строк и используется по умолчанию. Ключевые слова distinct и distinctrow определяют, что дублирующие строки исключаются из результирующего набора.

high PRI0RITY. Добавление ключевого слова high priority дает оператору больший приоритет. Если другие операторы, такие, например, как insert или update, ожидают перед записью в определенную оператором select таблицу, пока пользователи не перестанут считывать данные таблицы, то слово high priority позволяет оператору select получить более высокий по сравнению с ними приоритет. Это ключевое слово следует использовать только для операторов select, которые исполняются быстро и должны быть выполнены немедленно, поскольку выполнение операторов записи или обновления значительно замедлится. Ключевое слово high PRI0RITY впервые появилось в MySQL версии 3.22.9.

sql big result; sql small result. Эти ключевые слова определяют, что результирующий набор будет большим или, наоборот, малым, что позволяет средству оптимизации более эффективно обработать запрос. Ютючевое слово sql small result впервые появилось в MySQL версии 3.22.12, а sql big result - MySQL 3.23.

straight J0IN. Заставляет таблицы объединяться в порядке, определенном в предложении from. Это ключевое слово могут зада-



вать пользователи в том случае, если, на их взгляд, средство оптимизации самостоятельно не осуществит лучший выбор.

В предложении selectjist определяются имена возвращаемых столбцов, разделенных запятыми. Эти столбцы могут быть ссылками на столбцы таблицы или выражения. Каждому такому столбцу можно присвоить псевдоним, используя синтаксис as allasjmme. Этот псевдоним впоследствии становится именем столбца в выводимых данных и может использоваться для ссылки в предложениях group by, order by и having. Нельзя использовать этот псевдоним в предложении where.

Специальный символ * означает все столбцы из таблицы, указанной в предложении from , а запись tbl name.* - все столбцы из таблицы tbljiame .

Результат выполнения оператора select можно с помощью предложения into filename outfile записать в файл filename. Для этого необходимо обладать привилегиями file, а файл с таким именем существовать не должен. Имя файла интерпретируется таким же образом, как при считывании нелокальных файлов оператором load data. Синтаксис предложения exportoptions аналогичен синтаксису предложения importoptions для оператора load data.

В предложении from приводятся имена одной или нескольких таблиц, из которых извлекаются строки. MySQL поддерживает следующие типы объединения join в операторах select:

tbljist

tbl name

tblJist, tbljname tbljist [CROSS] JOIN tbljname tbl list INNER JOIN tbl name tbljist STRAIGHT JOIN tbl name

tbljist LEFT [OUTER] JOIN tbl name ON conditional expr tbljist LEFT [OUTER] JOIN tbl name USING (columnjist) tbljist NATURAL LEFT [OUTER] JOIN tbl name

{ oj tbl list LEFT OUTER JOIN tbl name ON conditional expr )

Типы соединения помогают извлекать строки из названных таблиц, как отражено в представленных описаниях. Хотя реально возвращаемые строки могут еще офаничиваться предложениями where, having или limit.

Если в операторе select указана одна таблица, сервер извлекает строки из нее.

Если же через запятую определены имена сразу нескольких таблиц, оператор select возвращает все возможные комбинации строк из них. В качестве альтернатив запятым могут выступать ключевые слова join, cross join или inner join. Подобную функцию выполняет и слово straight J0IN, однако ОНО заставляет средство оптимизации объединять таблицы в порядке их перечисления. Как уже отмечалось ранее, эту особенность можно применять в случаях, когда, по мнению пользователя, средство оптимизации не сделает наилучший выбор.



Ключевое слово left join также приводит к выборке строк из свя-iaHHHX таблиц, однако сопровождается генерированием строки для каждой строки левой таблицы, даже если в правой таблице соответствующие ей записи отсутствуют. Когда такие записи отсутствуют, столбцы с правей таблицы возвращаются со значениями null. Выборка строк осуществляется в соответствии с условиями, определенными в предложениях on cofiditionalexpr шк using (columnjist). Форма выражения conditionalexpr мфжет использоваться и в предложении where. Список column list может содержать как одно имя столбца, так и несколько разделенных запятыми имен. Каждое определенное имя указывает на столбец, который есть во всех объединенных таблицах. Предложение left outer join аналогично предложению left join. То же можно сказать и о синтаксисе, начинающемся со слова oj (который добавлен для совместимости с ODBC).

Предложение natural left join является аналогом предложения left join using (co/am foO , Где СПИСОК со/ишп паше содержит имена столбцов, входящих во все указанные таблицы.

Используя синтаксис tbljtame alias пате или tblname as aliasjtame, таблицам можно присваивать псевдонимы в предложении from. Впоследствии ссылки на такие столбцы в операторе select необходимо выполнять только с помощью псевдонимов.

Предложение where определяет выражение, которое применяется к извлеченным из таблиц (заданных в предложении from) строкам. Все строки, не удовлетворяющие заданному критерию, отвергаются. Впоследствии результирующий набор можно еще больще ограничить предложениями having И limit.

Предложение group by column list группирует строки результирующего набора в соответствии с перечисленными в списке столбцами. Это предложение особенно полезно при определении таких функций, как count () ИЛИ мах () в предложении selectJist. Ссылаться на эти столбцы можно либо по имени, либо по псевдонимам, либо по позиции внутри списка select Jist Позиции столбцов нумеруются, начиная с 1.

Предложение having задает второе выражение, которое ограничивает результирующий набор после проверки на условия предложения where. Строки, не соответствующие условиям предложения having, также отбрасываются. Предложение having эффективно используется в выражениях с агрегатными функциями, которые нельзя проверить с помощью предложения where. Однако если какое-либо условие можно задать как в предложении where, так и в предложении having, лучще разместить его в первом. В этом случае условие будет проанализировано средством оптимизации.

Предложение order by определяет порядок сортировки результирующего набора. Так же, как и в предложении group by, ссылаться на столбцы можно с помощью имени, псевдонима или позиции внутри списка столбцов. Выводимые столбцы по умолчанию сортируются в возрастающем порядке. Чтобы самостоятельно определить порядок сортировки



1 ... 207 208 209 [ 210 ] 211 212 213 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика