«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов


Название«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов
страница14/18
ТипСамостоятельная работа
1   ...   10   11   12   13   14   15   16   17   18
select *

from left outer join

on =
Применяются объединения типа декартова произведения - cartesian-join. В этом случае отсутствует условие where и каждая запись table1 объединяется с каждой записью table2.

Множественное объединение - multi-join, когда объединяется более двух таблиц.

Самообъединение self-join, в этом случае таблица объединяется сама с собой.
О п е р а т о р i n s e r t

Оператор insert используется для добавления новых строк в таблицу или ее представление. Например:
insert into employee (emp_id, fio, salary)

values (10, "Petrov", 10000)
или можно вставлять в таблицу результирующий набор:
insert into <выражение select>
О п е р а т о р u p d a t e

Оператор update обновляет одну или несколько строк таблицы или ее представления.

Например:
update employee

set salary = 5000

where emp_id = 47
или
update employee

set salarry = salary * 1.05

where hiredate <"01-01-1995"
О п е р а т о р d e l e t e

Оператор delete используется для удаления строк из таблицы. Например:
delete from employee

where empid = 28

Примечание

1. В Delphi для компонента Query с помощью свойства RowsAffected можно узнать, сколько записей было изменено в операторе update или сколько записей было удалено в операторе delete.

2. При некорректной формулировке условия в выражении where оператора update может произойти непреднамеренное изменение многих строк в таблице. При этом Delphi никаких сообщений об ошибке не сгенирирует.

3. В InterBase при использовании оператора like для индексированного поля серверу не всегда удается использовать индекс, что замедляет поиск. В этом случае для организации поиска по началам строк вместо оператора like лучше использовать операторы starting with - "начинающийся с". Поиск ускоряется за счет использования индекса. Можно использовать также оператор containing - "содержащий".

4. При получении с помощью функций итогового значения по данным таблицы целесообразно создавать псевдоним для результата в случае, если к нему в дальнейшем в программе Delphi потребуется доступ. Псевдоним для результата создается с помощью ключевого слова as:
select min(salary) as minsalary, department

from employee

having min(salary) < 3000

3.2. РАБОТА С ПОЛЯМИ В DELPHI
В последующих разделах используется понятие набор данных (НД). Оно отличается от понятия набора, которое было рассмотрено выше. Под набором данных (НД) понимается группа записей из одной или нескольких таблиц базы данных (ТБД), доступная для использования с помощью компонентов-источников данных TTable, TQuery или TStoredProc.
В Delphi для работы с полями необходимо вызвать редактор полей.

Для вызова редактора полей нужно дважды щелкнуть по установленному на форме компоненту-источнику или щелкнуть по нему правой кнопкой мыши и выбрать Fields Editor.

Предварительно источник должен быть связан с нужной ТБД: в TTable должны быть определены свойства DatabaseName и TableName, в TQuery - DatabaseName и SQL (т. е. это поле должно содержать текст SQL-запроса, который создаст НД), в TStoredProc - DatadaseName и StoredProcName.
Чтобы добавить объекты-поля, необходимо щелкнуть по окну редактора правой кнопкой и выбрать Add Fields. В появившемся списке будут выделены поля, для которых еще не созданы объекты. Можно выбрать любую комбинацию полей в списке Add Fields и нажать кнопку OK. Для выбранных полей будут созданы объекты, а окно редактора будет содержать список этих полей.

Чтобы удалить определение какого-либо объекта, нужно выбрать соответствующее поле в окне редактора и нажать клавишу Delete.
Если необходимо изменить свойства конкретного поля или написать обработчик для какого-либо связанного с ним события, необходимо в редакторе полей выбрать нужное поле и, используя Инспектор Объектов, установить значение в свойство или определить обработчик события.
В Delphi имеется возможность использовать при работе с наборами данных (НД) или все поля, опреде¬ленные в реляционной таблице базы данных (ТБД), или только часть существующих полей.

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

По умолчанию для каждого компонента-набора доступны все поля НД. К полю в этом случае можно обращаться с помощью метода FieldByName компонента-набора:
function FieldByName(const FieldName: String): TField
или через его свойство
property Fields[Index]: TField.
Для удобства работы с конкретным полем можно создать объект-поле класса TField или одного из его специализированных потомков TStringField, TIntegerField, TBIobField и т. д.

Объект-поле создается на этапе конструирования программы с помощью редак¬тора полей. Если определен объект-поле, получить доступ к полю можно по имени этого объекта.

Редактор полей присваивает объектам-полям имена путем сцепления имени источника данных и имени поля. Если, например, источник Tablel связан с НД, у которого определен объект для поля Town, объекту будет присвоено имя Tablel Town, и мож¬но использовать прямое обращение к нему. Например, эти операторы эквивалентны:
Tablel.FieldByName('Town').AsString := 'Санкт-Питербург';

Tablel.Fields[0].AsString := ' Санкт-Питербург ';

TablelTown.AsString := ' Санкт-Питербург ';
Определить во время выполнения приложения, используются ли для набора дан¬ных все поля по умолчанию или только их часть, можно при помощи свойства
property DefaultFields: Boolean.
Значение True указывает, что используются поля по умолчанию; False - что используются поля, определенные при помощи редактора полей.
Если хотя бы для одного поля НД создан объект-поле, все поля НД, для которых такие объекты не определены, становятся недоступными. К «несуществующим» полям обратиться из данного НД нельзя. Такие попытки будут возбуждать исключительные ситуации с сообщением

Field <имя> not found.

Вновь вернуться к использованию всех полей НД можно только на этапе конструирования программы, удалив в редакторе полей все определенные ранее объекты или добавив с его помощью объекты для недостающих полей.
3.2.1. Типы полей
Поля в таблицах баз данных различаются по типу - символьные, целочисленные, логические, blob-поля и т.д. Для каждого типа данных есть соответствующий спе¬циализированный потомок. TField есть родительский тип, определяющий базовые свойства и методы для своих потомков - типизированных полей.
TField

TBIobField Большой двоичный объект.

TGraphicField Графическое поле (работает с содержимым blob-поля как с графическим изображением)

TMemoFieid Мемо-поле (интерпретирует BLOB-поле как большой текст).

TBooleanFieid Логическое поле.

TBinaryFieid Нетипизированное двоичное поле.

TBytesFieid Байтовые значения фиксированной длины.

TVarBytesFieid Байтовые значения переменной длины.

TDatefimeField Дата И Время.

TDateField ТОЛЬКО Дата.

TTimeField ТОЛЬКО Время.

TNumericField Числовые значения.

TBCDFieid ДСД-значения.

TFioaTField Вещественные значения.

TCurrencyFieid Денежные значения.

TintegerFieid Целочисленные значения.

TAutoincFieid Автоинкрементное целочисленное значение.

TSmallIntField Tипа SmallInt.

TWordField Типа Word.

TStringField Типа String.
К значению поля можно обратиться при помощи свойств Value и AsXXXX.

Свойство property Value: Variant возвращает значения следующих типов:
• Variant - Все компоненты

• String - TStringField, TBIobField

• Longint - TAutoincFieid, TintegerFieid, TSmallintField, TWordField

• Double - TBCDFieid, TCurrencyFieid, TFloatField

• Boolean - TBooleanFieid

• TDateTime - TDateField, TDateTimeField. TTimeField

Существуют следующие свойства AsXXXX для приведения типов полей:

• property AsBoolean: Boolean;

• property AsCurrency: Currency;

• property AsDateTime:TDateTime;

• property AsFloat: Double;

• property AsInteger: Integers;

• property AsInteger: String;

• property AsVariant: Variant;
Каждое из этих свойств приводит значение поля к соответствующему типу данных, означенному в названии свойства.

Например, если TablelNumber - поле TintegerFieid, для приведения его к типу String нужно воспользоваться свойством AsString:
Editl.Text := TablelNumber.AsString;
Tип поля должен быть совместимым с типом данных, к которому приводится значение поля. Например, если TablelSumma - поле TFloatField, попытка привести его к несовместимому типу Boolean приведет к ошибке.
Описание свойств, методов и событий класса TField приведено в приложении.
3.2.2. Проверка правильности введенных значений
Проверить введенное в поле значение на его соответствие некоторым ограничениям или условиям можно в обработчике события On Validate. Это событие наступает при изменении значения поля вручную или программно до выполнения метода Post набора данных, который запоминает изменения БД. Поэтому, если полю присвоено неверное значение, выполнение метода Post можно предотвратить, вызвав метод Abort или возбудив исключительную ситуацию.
3.2.3. Формирование текстового представления поля
Часто требуется некоторое дополнительное преобразование для более точного или более правильного представления хранящегося в поле значения. Для этих целей служит обработчик события OnGetText объекта-поля.

Обработчики выполняются только в работающей программе, поэтому на этапе конструирования не виден результат их работы.
3.2.3. СОЗДАНИЕ ВЫЧИСЛЯЕМЫХ ПОЛЕЙ
Создать вычисляемое (виртуальное) поле, значения которого не существуют в реальных ТБД, а вычисляются по значениям других полей, можно с помощью редактора полей. Для его вызова можно использовать контекстное меню (правой кнопкой мыши) и выбрать Field Editor. Для создания вычисляемых полей используется опция меню New Field.

В диалоговом окне New Field нужно выбрать переключатель Calculated, ввести имя создаваемого поля (Name), выбрать его тип (Type) и для строковых полей указать длину (Size).

Для нового поля будет создан компонент TField.

Чтобы вычислить значение нового поля, необходимо определить обработчик события OnCalcFields для компонента-источника, к которому оно принадлежит.
Событие OnCalcFields возникает всякий раз, когда курсор (указатель записи) перемещается в НД от записи к записи (например, после выполнения методов Next, Last и т. д. или при движении по записям в TDBGrid вручную. Это событие возникает и при инициализации НД (после открытия), а также после фильтрации записей в НД.

Если свойство AutoCalcFields набора данных содержит True, событие OnCalcFields наступает также и при модификации значений невычисляемых полей в режимах dslnsert и dsEdit данного НД или НД, с ним связанного.

Обработчик события OnCalcFields содержит реализацию алгоритма определения значения вычисляемого поля или группы полей. В этом обработчике значение может быть присвоено только вычисляемому полю и не может быть присвоено полю, определенному в структуре таблицы БД.
3.2.4. Поля выбора
Кроме обычных полей и вычисляемых полей, в Delphi имеется возможность созда¬ния полей выбора данных (lookup-полей).

Поле выбора данных одного НД содержит значения из другого набора данных, свя¬занного по ключу с НД, к которому принадлежит это поле. Будем называть первый НД родительским, а второй дочерним. Сразу же уточним, что поля выбора и специализи¬рованные компоненты выбора TDBLookupListBox, TDBLookupComboBox используют схожий механизм, основанный на реляционной связи двух НД, однако компоненты выбора не создают новых полей ни в одном наборе данных.
Для определения поля выбора данных, необходимо создать новое поле в редакторе полей и выбрать переключатель Lookup.

После выбора переключателя становятся доступными элементы группы Lookup definition, с помощью которых устанавливаются параметры связи наборов данных:
• DataSet Определяет имя родительского НД.

• Key Fields Определяет список ключевых полей родительского НД. По этим полям построен индекс для связи родительского НД с дочерним. Если в индексе имеется несколько полей, они разделяются точками с запятыми.

• Lookup Fields Определяет список ключевых полей дочернего НД. По этим полям постро¬ен индекс для связи дочернего НД с родительским. Если в индексе имеется несколько полей, они разделяются точками с запятыми.

• Result Field Поле дочернего НД, возвращаемое в качестве результата. Необходимо следить, чтобы типы вновь создаваемого поля и поля результата совпадали.
Перечисленным элементам окна New Field редактора полей соответствуют свойства LookupDataSet, KeyFields, LookupKeyFields и LookupResultField класса Tfield.
Поля выбора могут использоваться для показа дополнительной информации из дочернего НД при навигации по родительскому набору, если наборы связаны отношением один-к-одному, или для выбора значения записи дочернего НД из списка всех возможных значений родительского набора при связи один-ко-многим.
3.2.5.Поля TXXXFIELD
3.2.5.1. Строковые поля
Поле TStringField предназначено для хранения строк длиной до 255 символов.

Свойство

property Transliterate: Boolean
указывает, следует ли производить преобразование символов в кодировку ANSI при чтении строк из реальной ТБД и при записи строк обратно в ТБД в том случае, если строки в ТБД хранятся не в ANSI -кодировке или содержат расширенные ANSI символы. Когда в свойстве установлено значение True, для преобразования используются функции AnsiToNative и Native ToAnsi.

Для работы с TStringField предназначены компоненты TDBLabel и TDBEdit. Поле TMemoField предназначено для хранения множества строк неопределенной длины. Специфичные свойства TStringField:
• property BlobSize: Integer; - содержит размер поля в байтах.

• property Transliterate: Boolean; - смотрите описание свойства TStringField.Transliterate.
Специфичные методы:
procedure Clear; - очищает поле.

procedure LoadFromFile(const FileName: Strings); - загружает содержимое поля из файла.

procedure LoadFromStream (Stream: TStream) ; - загружает содержимое поля из потока.

procedure SaveToFile(const FileName: String); - сохраняет содержимое поля в файле.

procedure SaveToStream(Stream: TStream); - сохраняет содержимое поля в потоке.

Для работы с мемо-полями используются компоненты TDBMemo и TDBRichEdit.
3.2.5.2. Целочисленные поля
Целочисленные поля применяются для хранения целых чисел различной длины:

TIntegerField от -2 147 483 648 до +2 147 483 647 TSmallintField от -32 768 до +32 767

TWordField от О до 65 535
Свойства

property MaxValue: Longint

и

property MinValue: Longint
определяют максимальное и минимальное значение поля. По умолчанию содержат 0, что означает отсутствие ограничений. Если MaxValue > MinValue и при вводе в поле вводимое значение вышло из указанного диапазона, возникает исключительная ситуация. Свойство

property DisplayFormat: String
осуществляет форматирование данных перед их показом во всех режимах, кроме режима редактирования. Для него форматирование осуществляет свойство:

property EditFormat: String.
Оба свойства унаследованы полями от общего родителя TNumericField. Для описания формата в них могут использоваться следующие символы - cпецификаторы форматирования чисел:
• 0 - Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, если нет - выводится 0.

• # - Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, если нет - ничего не выводится.
1   ...   10   11   12   13   14   15   16   17   18

Похожие:

«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов iconМосква Издательство «Физическая культура»
Учебное пособие подготовлено коллективом авторов. Общее руководство и редакция – заведующий кафедрой философии и социологии, доктор...

«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов iconСоциология и социология спорта
Учебное пособие подготовлено коллективом авторов. Общее руководство и редакция – заведующий кафедрой философии и социологии, доктор...

«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов iconПример создания базы данных «Студенты» Постановка задачи. Выделение...
В окне «Базы данных» выбрать объект «Таблицы», выберите опцию «Создание таблицы в режиме конструктора»

«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов iconБазы данных
Для признания исключительного права на базы данных не требуется специальной регистрации (однако предпочтительно осуществлять государственную...

«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов iconУчебное пособие Под редакцией профессора Хомоненко А. Д. Санкт-Петербург...
...

«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов iconПояснительная записка к курсовой работе по дисциплине «Базы данных»
Метод исследования – моделирование базы данных в программе Microsoft Access 2013

«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов iconЛекция №2 по дисциплине «Базы данных»
Процесс проектирования, реализации и поддержания системы базы данных называется жизненным циклом базы данных (жцбд). Процедура создания...

«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов iconУрок с элементами деловой игры "Создание базы данных" Карасенко Татьяна Александровна
Место урока в теме – урок проводится в ходе изучения темы “Информационные системы”, после изучения понятий базы данных, видов баз...

«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов iconПрактическое задание Задана схема данных базы данных, содержащая...
По заданной схеме данных требуется создать компьютерную реализацию базы данных, выполнив следующие этапы работы: создать базовые...

«Базы данных» Электронное учебное издание Подготовлено коллективом авторов: А. И. Антонов iconБазы данных резюме в интернет сравнительный анализ
России стало быстро увеличиваться. Кадровые агентства начали создавать свои сайты и размещать на них вакансии. В интернет появились...

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск