Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Базовая конструкция SQL-запроса

Основной операцией для описания запроса к БД в языке SQL является конструкция вида:

 

Select <список атрибутов>
From <список отношений>
Where <условие>

 

Эта операция представляет собой композицию реляционных операторов проекции, соединения и выбора. Проекция берется для указанного списка атрибутов, соединение выполняется для указанного списка отношений, выбор определяется условием отбора записей where.

В результате выполнения операции соединения данные из указанных в списке отношений представляются одной таблицей. В этой таблице из всех имеющихся столбцов исходных отношений списка отношений остаются только те столбцы, которые указаны в списке атрибутов, и только те строки, которые удовлетворяют условию where.

 

Предположим, мы работаем с таблицей Туристы.

select * from Туристы;

В результате возвращаются все записи из таблицы «Туристы».

 

Данный запрос извлекал все столбцы таблицы. Если необходимо выбрать только столбец «Фамилия», запрос необходимо модифицировать следующим образом:

select Фамилия from Туристы;

 

Для вывода определенного количества записей используем следующий запрос:

select top 3 Фамилия from Туристы;

Извлекаются первые три записи поля «Фамилия», расположенные в самой таблице «Туристы».

 

Обратим внимание на то, что фамилии расположены не в алфавитном порядке, а в порядке, в котором они были сохранены в базе данных.

Добиться алфавитного порядка можно с помощью предложения order by, содержащего список атрибутов, после каждого из которых стоит либо ключевое слово asc (сортировка по возрастанию), либо ключевое слово dec (сортировка по убыванию). Теперь предыдущий запрос может выглядеть так:

select top 3 Фамилия from Туристы order by Фамилия asc;

Агрегирующие функции языка SQL

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

Агрегирующие функции производят вычисление одного «собирающего» значения (суммы, среднего, максимального, минимального значения и т. п.) для заданных групп строк таблицы. Группы строк определяются различными значениями заданного поля (полей) таблицы. Разбиение на группы выполняется с помощью предложения group by.

Рассмотрим перечень агрегирующих функций.

- count определяет количество записей данного поля в группе строк.

- sum вычисляет арифметическую сумму всех выбранных значений данного поля.

- avg рассчитывает арифметическое среднее (усреднение) всех выбранных значений данного поля.

- max находит наибольшее из всех выбранных значений данного поля.

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

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

select count (*) from Туристы;

Отметим, что результатом запроса является одно число, содержащееся в поле с отсутствующим именем.

А если мы захотим посчитать однофамильцев (то есть разбить набор записей-результатов запроса на группы с одинаковыми фамилиями), то запрос будет выглядеть так:

select Фамилия, count (Фамилия) from Туристы group by Фамилия;

 

Если значение поля может быть незаполненным, то для обращения к таким полям необходимо использовать оператор null. Отметим, что величина null не означает, что в поле стоит число 0 (нуль) или пустая текстовая строка. Существует два способа образования таких значений:

1) Microsoft SQL Server автоматически подставляет значение null, если в значение поля не было введено никаких значений и тип данных для этого поля не препятствует присвоению значения null;

2) или если пользователь явным образом вводит значение null.

 

Пример

Имеется таблица игроков различных спортивных клубов Player в базе данных date.

 

Необходимо произвести группировку игроков по клубам – какое количество игроков какого клуба представлено в данной таблице.

 

Создадим приложение. Разместим на форме компонент DataGridView1 для отображения таблицы Player, компонент DataGridView2 для результата группировки. Настроим компонент DataGridView1 для связи с таблицей Player.

Чтобы настроить связь с данными для таблицы DataGridView2 надо создать запрос с помощью SQL –инструкции.

Для этого выделить в обозревателе решений набор данных dateDataSet.xsd и выбрать строку Открыть в конструкторе.

 

Откроется конструктор.

 

Щелкнуть правой кнопкой мыши на свободном месте в конструкторе и выбрать Добавить – TableAdapter.

 

В конструкторе будет создана заготовка новой таблицы:

 

 

Далее подключается мастер настройки адаптера таблицы:

Поскольку соединение с базой данных уже установлено, нажимаем Далее.

Запрос будем формировать с помощью SQL – инструкции, поэтому нажимаем Далее.

 

Будем работать с Построителем запросов.

 

Добавим таблицу Player.

Выберем поле Клуб.

Впишем в окно построителя запросов текст

SELECT Клуб, COUNT(*) AS количество

FROM Player

GROUP BY Клуб

 

Нажмем ОК.

Нажмем Готово.

Подключить DataGridView2 к полученному запросу (нажать черную стрелку в правом верхнем углу):

Последнее изменение этой страницы: 2016-03-15; Просмотров: 112; Нарушение авторского права страницы


lektsia.com 2007 - 2017 год. Все права принадлежат их авторам! (0.006 с.) Главная | Обратная связь