|
Программирование >> Создание клиентов mysql
Предложение WHERE задает условия, в соответствии с которыми из таблицы произведения отбираются строки. Если в предложении FROM была указана одна таблица, то условие отбора является критерием фильтрации ее строк. Если же выполняется операция объединения, то в предложении WHERE указываются правила сопоставления столбцов объединяемых таблиц. В листинге 13.39 создается то же самое объединение, что и в листинге 13.38, но на этот раз с использованием предложения WHERE. SELECT player .Name, team.Name FROM player, team WHERE player.Team = team.ID Аргументом предложения WHERE является булево выражение. В него может входить произвольное число выражений сравнения, объединяемых с помощью логических раторов. В листинге 13.40 показана более сложная форма предложения WHERE. SELECT р.Name, t.Name FROM player p, team t WHERE p.Team = t.ID AND (p. Position = Catcher OR p.Position = Pitcher Предложение GROUP BY содержит правило группировки строк по одному или нескольким столбцам. Это позволяет применять к столбцам статистические функции (см. главу 12, Встроенные функции ). Статистические функции разрешены в списке возвращаемых столбцов и в предложении HAVING, но не в предложении WHERE, поскольку оно вычисляется раньше, чем GROUP BY, т.е. до того, как формируются группы записей. Запрос, показанный в листинге 13.41, группирует записи по идентификатору команды и возвращает число в каждой команде при условии, что таковых более девяти. SELECT t.Name AS Team FROM player p, team t WHERE p.Team = t.ID AND p. Position = Pitcher GROUP BY t.ID HAVING Pitchers > 9 ORDER BY Pitchers DESC В предложении GROUP BY можно ссылаться на столбцы по имени или по номеру. Столбце! нумеруются слева направо, а нумерация начинается с единицы. Разрешается также группировать записипо не указанным в предложении SELECT. Такие столбцы, естественно, не имеют номера. Полный список инструкций 239 В предложение WING указывается такое же булево выражение, как и в предложении WHERE. Оно задает условия отбора групп. Поскольку предложение HAVING проверяется после предложений WHERE и GROUP BY, в нем можно использовать псевдонимы столбцов и статистические функции. Разрешается сстлаться только на те столбцы, которые указаны в списке возвращаем1х столбцов. Предложение ORDER BY задает правило сортировки строк возвращаемой таблица:. Разрешается сортировать результаты запроса по любому элементу списка возвращаемых столбцов. Как и в случае предложения GROUP BY, на столбцы можно ссылаться по номерам. По умолчанию столбцы сортируются по возрастанию, т.е. флаЗС указывать не обязательно. Для сортировки по убыванию предназначен флаг DESC. Предложение LIMIT позволяет отобрать из возвращаемой таблицы требуемое подмножество строк. Если в качестве аргумента указано одно число, возвращаются строки с первой по заданную. Если присутствуют два числа, то первое определяет начальный номер строки, а второе - число возвращаем1х строк. Предложение PROCEDURE предназначено вызова процедуры, которая выполняется над таблицей результатов запроса перед тем, как эта таблица посьлается клиенту. В MySQL естшь одна такая процедура: analyse) (см. главу 12, Встроеннте функции ). ля совместимости с Oracle разрешается сстлаться на виртуальный столбец rowid (псевдоним первичного ключа). Еще один виртуальный столбец - - позволяет находить последнюю вставленную строку таблицы, содержащей столбец-счетчик. Соответствующая проверка выглядит так: WHER ent coliHnn IS NULL Инструкция SET меняет значения опций и переменных. Ее синтаксис таков: SET [OPTION] параметр=значение[, параметр=значение] . . . Устанавливаемые значения действительны лишь в течение текущего сеанса и по его завершении сбрасываются. Ниже описаны возможные варианты спецификаций. ©переменная = значение Эта спецификация предназначена для задания значений переменных. О переменных рассказывалось в главе 10, Типы данных, переменные и выражения . AUTOCOMMI {0 1} Опция AUTOCOMMIT определяет, должна ли программа MySQL немедленно фиксировать изменения, вносимые запросами, или не обходимо дожидаться завершения транзакции. О транзакциям ычалось в главе 9, Транзакции и параллельные вычисления . По умолчаниюданная опция включена. CHARACTER SET { имя DEFAULT} Эта опция задает используемый набор символов (листинг 13.42). Ключевое слово DEFAULT восстанавливает стандартный набор. В MySQL входит лишь один набор символов-cpl2 5 l koi 8, но можно создавать и собственные наборы, как описано в глав1, Расширение возможностей MySQL . SET CHARACTER SET cpl251 koi8 Обратите внимание на то, что, в отличие от других опций, здесь не используется знак равенства. INSERTJD= число Эта опция задает следующее значение поля-счетчика. LASTJNSERTJD= число Эта опция задает значение, возвращаемое функцией ERT ID() (см. главу 12, Встроенные функции ). PASSWORD = PASSWORD(пapoль) Эта опция позволяет текущему пользователю задать свой пароль. Зашифрованный пароль хранится в файле mysql .user. PASSWORD FOR пользователь = PASSWORD(пapoль) С помощью этой опции можно задать пароль произвольного пользователя. Для этого необходимо иметь право записи в базу данных mysql. Пользователи указываются так же, как и в инструкции GRANT. SQL AUTO IS NULL= {О 1} Эта опция задает использование виртуального столбца Если таблица содержит поле-счетчик, то последняя добавленная в нее строка будет содержать значение NULL в данном столбце (листинг 13.43). SELECT * FROM team WHERE auto increment со1гш1п IS NULL Эта опция включена по умолчанию. SQL BIG SELECT {0 1} Если эта опция отключена, то инструкции SELECT со слишком большим числом объединений не будут выполняться. Предельное число объединений хранится в серверной переменной maxjoin size.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |