русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

С_Number C_Code С_Move C_Date


Дата добавления: 2014-04-30; просмотров: 770; Нарушение авторских прав


5 3 270 25.05.08

6 4 200 26.05.08

5 3 270 27.05.08

6 4 200 27.05.08

 

Отметим, что рассмотренные выше операции between и in также реализуют логические операции:between логическоеи,ain —логическоеили.

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

 

Группирование записей автоматически исключает повтор значений в полях, за­данных для группирования, т. к. записи с совпадающими значениями этих по­лей объединяются в одну группу.

Пример запроса с группированием записей:


SELECT C_Date, COUNT(C_Date)

FROM Cards

WHERE C_Date BETWEEN "01.06.2008" AND "03.06.2008"

GROUP BY C_Date

Для каждой даты из указанного периода выводится количество записей, в кото­рых она встречается. Если не выполнить группирование, то в набор данных по­падут все записи, а при использовании группирования все даты для получен­ного набора данных уникальны.

Функция count выводит для каждой группы (сформированной по полю даты) число записей в группе. Полученный набор данных может иметь следующий вид:

С_Date COUNT(С_Date)

01.06.08 20

02.06.08 17

03.06.08 8
В этом примере поле даты С_Date использовано в операторе SELECT трижды, в общем случае можно использовать различающиеся поля.

Совместно с операндом group by можно использовать операнд having, с по­мощью которого задаются дополнительные условия группирования записей.

Рассмотрим пример запроса:

^ SELECT C_Date, COUNT(C_Date)

FROM Cards

GROUP BY C_Date

HAVING.COUNT(C_Date) > 50

Здесь отбираются данные для дат, когда движение товара было интенсивным – общее число записей в соответствующей группе превышало 50. Так как не ука­зан ограничивающий период времени, то при отборе в набор данных будут учи­тываться записи таблицы Cards с любыми датами.



 

3.1.3 Последовательная навигация по записям

 

Для выполнения действий по последовательному перебору записей, начиная от некоторой стартовой записи и до конца набора данных, используют цикл while...do или repeat...until:

with Tablel do begin

First;

while not EOF do begin

{Какие-либо действия над очередной записью} Next; end; {while} end; {with}

with Tablel do begin

First;

repeat

{Какие-либо действия над очередной записью} until not FindNext; end; {with}

Точно так же можно перемещаться от конца НД к его началу:

with Tablel do begin

Last;

while not BOF do begin

{Какие-либо действия над очередной записью} Prior; end; {while} end; {with}

with Tablel do begin

Last;

repeat

{Какие-либо действия над очередной записью} until not FindPrior; end; {with}

Если НД допускает вызов записи по ее номеру (его свойство IsSequenced в этом случае должно содержать значение True), можно использовать цикл for. Например, следующий обработчик события TForm. On Act ivate поместит все значения строкового поля BName НД Books в многострочное текстовое поле Memol:

procedure TForml.FormActivate(Sender: TObject); var

RecNo: Integer; begin

if Books.IsSequenced then

for RecNo := 1 to Books.RecordCount do

begin

Books.RecNo := RecNo; Memol.Lines.Add(Tablel['BName1]) end; end;

Замечу, что для компонентов TTable и TQuery, связанных с файл-серверными таблицами БД, свойство IsSequenced всегда содержит значение True. В клиент-серверной архитектуре оно зависит от используемого сервера БД. Свойство RecNo набора данных определяет порядковый номер обрабатываемой записи (нумерация начинается с 1), а его свойство RecordCount — количество записей.

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

with Tablel do while not EOF do begin

Delete; Next; end;

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

with Tablel do while not EOF do

Delete;

 

3.2 Запросы на изменение данных в БД

3.2.1 Обеспечение целостности, достоверности и непротиворечивости данных

 

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

Обеспечение целостности БД – система мер, направленных на поддержание правильности данных в БД в любой момент времени.

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

Ограничения целостности – это набор определенных правил, которые устанавливают допустимость данных и связей между ними. Ограничения целостности могут относиться к разным объектам БД: атрибутам (полям), записям, отношениям, связям между ними.

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

1. Тип и формат поля автоматически допускают ввод только данных определенного типа.

2. Задание диапазона значений, как правило, используется для числовых полей. Диапазон значений может быть ограничен с двух сторон (закрытый диапазон), а может с какой-то одной: верхней или нижней (открытый диапазон).

3. Недопустимость пустого поля. Позволяет избежать появления в БД недописанных записей, в которых пропущены какие-либо обязательные атрибуты.

4. Задание списка значений, позволяет избежать излишнего разнообразия данных, если его можно ограничить.

5. Проверка на уникальность значения какого-либо поля, позволяет избежать появления записей-дубликатов.



<== предыдущая лекция | следующая лекция ==>
Запрос UPDATE и условие WHERE | Ограничения для связей


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.043 сек.