Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

9.5. Команды языка запросов sql

9.5.1. Запросы на выборку данных

Команда Select является мощным средством обработки запросов. Приведем ее предварительный синтаксис.

Select <что выводится>

From <откуда (источник)>

Into < куда выводится>

Where <каким условиям должно отвечать>

Group By <колонки, по которым выполняется группирование>

Having <условие группирования записей в одну строку>

Order By <в каком порядке выводить данные>

Запросы могут храниться в программе и в базе данных (хранимые процедуры или запросы) (п. 9.9.3).

Команда Select открывает нужные им базы данных и индексные файлы. Если необходимых для выполнения команды индексов нет, то они будут созданы, а по завершении команды уничтожены. Выполняются быстрее, легче сопровождаются.

Рассмотрим опции команды.

Указание результатов выборки и источников данных

Select [<предикат>] <выражение> [As [<псевдоним>] [, ...]

From <таблица> [<тип связи> Join <таблица> On <условие связи>],...

<предикат> - принимает следующие значения:

Distinct - выводятся только те записи, которые не совпадают с другими по всем выбранным колонкам;

Distinctrow - выводятся только те записи, которые не совпадают с другими по всем полям из всех исходных таблиц;

Top n [Percent] ‑ выбираются первые n записей (процент, если указан percent) из итоговой выборки.

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

Для связывания таблиц может использоваться фраза Join. Тип связи в новых версиях SQL задается словами: Left(в запрос входят все записи из левостоящей в запросе таблицы),Right(входят все записи из правостоящей таблицы),Inner(входят только записи с совпадающими ключами связи). Связи можно указать и во фразе Where.

Пример

Select Distinct Rus.*, RusGoal.*

From Rus Left Join RusGoal On Rus.Team=RusGoal.Team

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

В <выражении> могут быть использованы функции Visual Basic. Кроме того, здесь есть собственные специальные арифметические функ­ции, действующие “по вертикали”: среднее значение в группе (Avg), минимальное (Min), максимальное (Мax), сумма (Sum), значение в первой или в последней записи (First, Last), число записей в группе (Count); функция может иметь в качестве аргумента звездочку (Count (*)), что означает подсчет всех записей, попавших в выборку.

Критерий связи и отбора данных

Where [<условие связи>][And/Or <условие отбора>]‑ задаются условия связи, если выборка делается из нескольких связанных таблиц, и указываются критерии, которым должны отвечать поля связи и условия отбора записей в запрос. Связывание можно выполнить визуально, используя конструктор запросов (п. 9.10). В условиях допускается исполь­зование логических операторов And, Or, Not и круглых скобок. В условиях, кроме любых функций Visual Basic, могут содержаться следующие операторы SQL:

<выражение> Like <шаблон>позволяет построить условие сравнения по шаблону, набор символов: “_” (любой символ), “%” (любые символы), [n-k]% (любые символы из интервала от n до k, например: Like “[A-D]%”).Пример. Where [Othecvo] Like ‘Иван%’

<выражение> Between <нижнее значение.> And <верхнее значение>- проверяет, находится ли выражение в указанном диапазоне.

Пример. Where [datarogdenij] Between #1/1/45# And #1/1/70#

<выражение> In (<выражение>, <выражение>, ...) проверяет, находится ли выражение, стоящее слева от слова IN, среди перечисленных справа от него (Where [State] In (‘Сверд’,’Моск’)).