ВЫРАЖЕНИЯ, ОПЕРАТОРЫ И ФУНКЦИИ В ЗАПРОСАХ
СОЗДАНИЕ ЗАПРОСОВ
Способы создания запросов:
1. Конструктор;
2. Мастер;
3. Режим SQL.
В режиме конструктора для создания запросов нужно указать следующие параметры:
Поле | Имя поля таблицы, запроса, данные из которого будут располагаться в этом столбце. |
Таблица | Имя таблицы или запроса, которому принадлежит данное поле. |
Сортировка | Способ вывода записей в данном столбце. Возможен вывод: по алфавиту (по возрастанию), по убыванию или отсутствует. |
Вывод на экран | Определяет, будут ли значения этого поля выводиться на экран при выполнении запроса. Тип - логическое поле (имеет вид переключателя). |
Условие отбора | Здесь в нескольких строках задаются условия отбора (ограничения на вывод информации) в данном поле. |
Групповая операция | Используется в перекрёстных и итоговых запросах, позволяет обработать значения данного поля при помощи определенной функции. |
При задании условий отбора необходимо соблюдать правила:
1. Перед вводимым значением текстового поля должен стоять знак =.
2. Вводимая строка символов должна заключаться в кавычки.
В строке "Условие отбора" можно задавать несколько условий, соединенных союзами and и оr.
Выражения - синтаксическая единица, определяющая способ вычисления некоторого значения. Выражения используются для проверки условий или арифметических вычислений. Выражение должно содержать, по крайней, мере одну операцию и по крайней мере одну константу, идентификатор (имя объекта) или функцию.
В некоторых случаях может потребоваться, например, найти сумму значений по определенному полю. Такое поле можно создать с помощью запроса. Поле, содержание которого является результатом расчета по содержимому других полей, называется вычисляемым полем
При составлении выражений надо помнить несколько простых правил:
1) выражение всегда имеет логический тип, то есть его значение должно принимать либо Да (Истина), либо Нет (Ложь);
2) существуют некоторые требования к синтаксису выражения: а) символьные константы заключаются в кавычки, константы типа дата заключаются в #; б) имя объекта базы данных отделяется от имени поля восклицательным знаком, причем имена заключаются в квадратные скобки Например, можно прочесть следующее условие [Студенты]![Фамилия]="Андреев" как значение поля "Фамилия" таблицы "Студенты" должно быть "Андреев", проще говоря, показать данные о студенте Андрееве; .
3) в бланке запроса обычно часть выражения, содержащая имя поля, опускается тогда, когда это выражение задастся в той же колонке. Знак равенства также не пишется, он понимается по умолчанию. Например, условие отбора [Группа]=103 может быть записано в строке "Условия отбора" столбца "Группа" как числовая константа, то есть число 103.
В Access используются следующие операторы: арифметические, присваивания и сравнения, логические, идентификации, конкатенации и другие операторы.
В таблице приведен список арифметические, присваивания и сравнения, логические операторов.
Знаки арифметических операций | Знаки операций сравнения | Логические операции |
+ сложение | > больше | And логическое И |
- вычитание | < меньше | Or логическое ИЛИ |
* умножение | = равенство (присвоение) | Not логическое отрицание НЕ |
/ деление | >= больше или равно | Xor исключающее ИЛИ |
^ возведение в степень | <= меньше или равно | |
\ целочисленное деление | <> не равно |
В строке "Условие отбора" возможно использование конкатенации значений символьных типов (&), а также следующие операторы, которые упрощают создание выражений для выборки записей в запросах;
Is - при использовании вместе с Null определяет, является ли значение Null или Not Null, например. Is Null означает значение поля пусто.
BETWEEN AND - позволяет задать диапазон значений. Например, условие >= 10 and <=20 можно записать так BETWEEN 10 and 20
IN - позволяет задать используемый для сравнения список значений. Например, выражение ''хлеб"' ог '"вода" ог "земля" можно записать так IN("хлеб","вода","земля").
LIKE - используется для организации поиска по шаблону. В шаблоне можно использовать следующие символы:
Символ | Шаблон обозначает | Условие | Access найдёт… |
* | Произвольное количество алфавитно-цифровых символов в произвольном месте | LIKE “*Мар*” | Ул. 8 Марта, 45-23; ул. Маршака, 180а-1; Мартин |
? | Любой одиночный алфавитно-цифровой символ в произвольном месте значения | LIKE“м?р”, “Т??я” | МУР, мир, мор, мер, Толя, Таня, Тоня, То1я, Тося, Тася |
# | Любая одиночная цифра в произвольном месте значения | LIKE “23#45”, LIKE“52-5#-4#” | 23545, 23145, 23745, 23945 52-55-45? 52-59-41 |
[ ] | Любой из перечисленных в скобках символ | LIKE “З[оаи]лин” | Зозулин, Зазулин, Зизулин. НО не найдёт Зезулин, Зузулин. |
! | Любой один символ, кроме, указанных в скобках | LIKE “ко[!рс]а” | Коза, кола, кома. НО не найдёт кора, коса. |
- | Любого одиночного символа из указанного интервала | LIKE “ко[к-м]а” | Кола, кома |
Рассмотрим следующий пример. Пусть нам необходимо найти все научные работы, выполненные студентами вуза, по теме "Базы данных". Ситуация осложняется тем, что мы не можем точно знать как сформулированы темы этих работ. С уверенностью можно сказать только, что в названии работы есть словосочетания "база данных", "базы данных" или "базами данных" или "баз данных" или же сокращения от этих слои - "БД". Если задать две маски "*баз* данных*" or "*БД*" для поиска в ноле "Название работы" (таблица "Научные работы Студентов"), получим список всех работ, в названии которых входят эти слова независимо от того, стоят ли они в начале, в конце или середине названия работы.
В Access определено около 140 различных функций. Все функции можно сгруппировать по назначению: функции даты и времени; текстовые функции, функции преобразования типов данных; математические и тригонометрические функции; финансовые функции и другие
Рассмотрим математические и тригонометрические функции:
Аbs(<число>) Возвращает абсолютное значение указанного числа.
Аtn(<число>) Возвращает арктангенс числа (в радианах).
Соs(<число>) Возвращает косинус угла (в радианах).
Ехр(<число>) Возвращает результат возведения числа е (основание натуральных логарифмов) в указанную степень.
Int(<число>) Fiх(<число>) Возвращают целую часть числа. Обе функции Int() и Fi.xQ отбрасывают дробную часть числа и возвращают целое значение. Различие между функциями JntQ и Fi\-() состоит в том, что для отрицательного значения аргумента число функция Int() возвращает ближайшее отрицательное целое число, ; меньшее либо равное указанному, a Fix() - ближайшее отрицательное целое число, большее либо равное указанному. На- : пример, Int{-8.4)=-9, a Fix(-8.4) =-8.
Log(<число>) Возвращает натуральный логарифм числа.
Rnd[(<число>)] Возвращает случайное число.
Sgn(<число>) Возвращает значение, соответствующее знаку числа. Если число больше нуля, то возвращает 1, если равно нулю, то 0, меньше нуля -1
Sqr(<Hoio>) Возвращает квадратный корень указанного числа.
Тап(<число>) Возвращает тангенс угла (в радианах).
Рассмотрим некоторые функции по обработке значений типа дата.
Date( ) Возвращает текущее системное время и дату
Date$() Возвращает как дату и как строку.
DateAdd (<интepвaл>;<количество>;<Дата2>) Возвращает дату, полученную добавлением к заданной дате числа интервалов.
DateDiff(<интервал>;<Дата1>;<Дата2>)озвращает интервал времени между указанными датами.
DatePert (<интервал>;<Дата>) Возвращает заданную часть даты.
Month(<Дата >); Определяет номер месяца (1 до 12) в дате.
Day(<Дата>); Определяет день (от 1 до 31) в дате.
Now() Возвращает дату и время системных часов компьютера.
Year(<Дата>); Определяет номер года (от 100 до 9999) в дате.
Рассмотрим некоторые функции по обработке текстовых данных:
Аsс(<строка>) Возвращает код символа для первого символа строки.
Сhг(<кодСимвола>) Возвращает символ, соответствующий указанному коду символа.
Str(<число>) Возвращает строковое представление числа.
Format (выражение[,формат[,…]]); Создание специальных строковых форматов. Возвращает значение, содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата. Действуют все символы формата, рассмотренные в пункте свойство "Формат поля".
InStr([<позиция>, ]<строка1>, <строка2>[, способ сравнения]) Возвращает значение, указывающее позицию первого вхождения одной строки внутри другой строки.
LCase(<cтpoкa>) Возвращает строку, преобразованную к нижнему регистру.
Left(<строка>, <количество>) Возвращает строку, содержащую указанное число первых символов строки.
Len(<строка>| <имяПеременной>) Возвращает значение, содержащее число символов в строке или число байт, необходимое для размещения переменной.
|
Mid((<строкa>, <начпоз>[, <количество>]) Возвращает строку, содержащую указанное число символов строки с начальной позиции.
Right(<строкa>, <количество>) Возвращает строку, содержащую указанное; число последних символов строки.
Sрасе(<число>)Возвращает строку, содержащую указанное число пробелов.
String(<число>, <символ>) Возвращает строку, содержащую повторяющуюся строку указанной длины.
UCase(<строка>) Возвращает строку, преобразованную к верхнему регистру.
Vа1(<строка>) Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа.
Функция iif(<выражение>, <выражение1>, <выражение2>) возвращает значение <выражение1>, если значение <выражение> равно True, и возвращает значение <выражение2>, если значение <выражение> равно False.
Функция Choose (<индекс>, <вариант1>, [<вариант2>,[<вариант n>]]) возвращает значение, соответствующее заданному положению в списке значений.