Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

SELECT name, MAX(age) FROM people GROUP BY name ).




HAVING clause Аналог выражения WHERE, но выполняется над уже полученными из базы данными. С помощью HAVING хорошо выполняются агрегатные функции над относительно небольшими наборами даных. В этом случае будет идти работа не с целой таблицей, а только с выбранными данными

Упорядочение -- п о умолчанию порядок, в котором появляются результаты выборки, не определен. Можно потребовать от базы данных, чтобы выводимые результаты были упорядочены по некоторой колонке. Например, если указать, что запрос должен упорядочить результаты по полю last_name, то результаты будут выведены в алфавитном порядке по значению поля last_name. Упорядочение осуществляется с помощью предложения ORDER BY:

ORDER BY column [ASC |DESC][, column2 [ASC |DESC],... ] Сортирует возвращаемые данные по заданному столбцу (или столбцам). Если указать DESC, данные будут отсортированы по убыванию. По умолчанию принята сортировка в возрастающем порядке, который можно задать явно при помощи ключевого слова ASC.

П ример: SELECT name, age FROM people ORDER BY age DESC

В ORDER BY для ссылок на столбцы, выбранные для вывода информации, можно использовать либо имена столбцов, либо их псевдонимы, либо их позиции (местоположения). Нумерация позиций столбцов начинается с 1:

SELECT college, region, seed FROM tournament ORDER BY region, seed;

SELECT college, region AS r, seed AS s FROM tournament ORDER BY r, s;

SELECT college, region, seed FROM tournament ORDER BY 2, 3;

Functions -- MySQL предлагает богатый выбор встроенных функций. Также всегда можно с помощью команды CREATE FUNCTION добавить пользовательские функции (например, SELECT COS(angle) FROM triangle).

ROCEDURE name эта фраза позволяет указать процедуру, модифицирующую результаты запроса перед их возвратом клиенту.

Синтаксис оператора HANDLER

HANDLER tbl_name OPEN [ AS alias ]

HANDLER tbl_name READ index_name { = | >= | <= | < } (value1,value2,...)

[ WHERE... ] [LIMIT... ]

HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }

[ WHERE... ] [LIMIT... ]

HANDLER tbl_name READ { FIRST | NEXT }

[ WHERE... ] [LIMIT... ]

HANDLER tbl_name CLOSE

Оператор HANDLER обеспечивает прямой доступ к интерфейсу обработчика таблиц MyISAM.

Первая форма оператора HANDLER открывает таблицу, делая ее доступной для последовательности команд HANDLER... READ. Этот объект недоступен другим потокам и не будет закрыт, пока данный поток не вызовет HANDLER tbl_name CLOSE или сам поток не будет уничтожен.

Вторая форма выбирает одну строку (или больше - в соответствии с установкой в выражении LIMIT), для которой(ых) указанный индекс соответствует заданному условию и условие в выражении WHERE также выполняется. Если индекс состоит из нескольких частей (охватывает несколько столбцов), то составляющие его величины указываются в виде разделенного запятыми списка. Обеспечиваются величины только для нескольких первых столбцов.

Третья форма выбирает одну строку (или больше - в соответствии с установкой в выражении LIMIT), из таблицы; в порядке указания индексов в соответствии с условием WHERE.

Четвертая форма (без указания индексов) выбирает одну строку (или больше - в соответствии с установкой в выражении LIMIT), из таблицы, используя естественный порядок строк (как они хранятся в файле данных), в соответствии с условием WHERE. Эта форма работает быстрее, чем HANDLER tbl_name READ index_name, в тех случаях, когда желателен просмотр всей таблицы.

Оператор HANDLER... CLOSE закрывает таблицу, открытую оператором HANDLER... OPEN.

Оператор HANDLER представляет собой что-то наподобие низкоуровневой команды. Например, он не обеспечивает целостности таблицы. Т.е. HANDLER... OPEN НЕ делает моментального снимка таблицы и НЕ блокирует ее. Отсюда следует, что после вызова команды HANDLER...OPEN данные таблицы могут быть модифицированы (этим или любым другим потоком), а сами модификации в просмотрах таблицы при помощи HANDLER... NEXT или HANDLER... PREV могут появляться только частично.

Приемущества HANDLER вместо обычного SQL:

v Он быстрее чем SELECT, потому что:

Ø Выделенный код обработчика таблиц создается в потоке по вызову HANDLER open.

Ø Меньше синтаксического анализа.

Ø Нет нагрузки на оптимизацию и проверку.

Ø Таблицу не нужно блокировать между запросами.

v Этот интерфейс не обязан предоставлять целостный вид данных (скажем, грязное чтение допускается), что позволяет обработчику таблиц делать оптимизации которые SQL обычно не допускает.

v Гораздо легче переносить на MySQL приложения, которые используют интерфейс, подобный ISAM.

v Такой интерфейс позволяет просматривать базу данных способом, который не так легко (или в некоторых случаях и вовсе невозможно) реализовать с помощью SQL. Интерфейс HANDLER является более естественным способом получить данные, когда приходится иметь дело с интерактивными пользовательскими приложениями.

EXPLAIN SELECT statement -- Выводит информацию о структуре и порядке выполнения запроса SELECT. Это может быть полезно для определения эффективности использования ключей.

Пример

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...