
Базы данных.pptx
- Количество слайдов: 136
Базы данных
Основные понятия • База данных - совокупность данных структурированных определенным образом хранимых в памяти вычислительной системы и отображающая состояние объектов и их взаимосвязей в рассматриваемой предметной области. • Система управления базами данных (СУБД) совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных
В состав языковых средств современных СУБД входят • Язык описания данных - предназначенный для описания логической структуры данных. • Язык манипулирования данных – обеспечивающий выполнение основных операций над данными – ввод, модификацию выборку • Язык структурированных запросов SQL (Structured Query Language) – обеспечивает управление структурой БД и манипулирование данными, а также является стандартным средством доступа к удаленным БД • Язык запросов по образцу (QBE – Query by Example) – обеспечивает визуальное конструирование запросов к БД
Требования к информации в БД • Непротиворечивость • Неизбыточность • Целостность
Типы СУБД • Локальные – все части СУБД располагаются на одном компьютере пользователя БД (Paradox, d. Base, Microsoft Access). • Сетевые – существует сервер на котором хранится БД. Пользователь с клиентского компьютера посылает запрос по сети на данные и сервер возвращает запрашиваемые данные (My. SQL, MS SQL, Firebird, Oracle).
Архитектура СУБД
Модель данных (МД) Это формальная теория представления и обработки данных. • Иерархическая МД представляет собой дерево, состоящее из объектов различных уровней. • Сетевая МД представляет собой граф вершинами которого являются хранимые объекты предметной области. • Реляционная МД представляет собой набор связанных таблиц. • Объектная ориентированная МД представляет собой набор взаимосвязанных объектов.
Иерархическая МД
Сетевая МД
Основные понятия • Таблица – состоит из строк и столбцов. На пересечении строки и столбца хранится одно значение. Данные в столбцах имеют только один тип. • Первичный ключ – одно поле (простой) или несколько полей (сложный) однозначно идентифицирующих каждую запись в таблице • Внешний ключ – поле в таблице, берущее значение из первичного ключа другой таблицы. • Индекс – структура обеспечивающая ускорение поиска по полям и сортировки данных
Реляционная МД
Таблица БД ПК_Студент Имя Фамилия Отчество ВК_Группа 1 Иванович 1 2 Петр Вавилов Александрович 2 3 Алексей Петров Антонович 1 ПК_Группа Название ВК_Факультет ПК_Факультет Название 1 МТ 07 -10 1 1 МТФ 2 МТ 08 -10 1 2 АТФ 3 АТ 10 -10 2
Объектно-ориентированная МД
Модель сущность-связь (Entityrelationship model, ER-модель) • ER-модель представляет собой высокоуровневую концептуальную модель данных, которая была разработана Ченом (Chen) в 1976 году с целью упрощения задачи проектирования базы данных. Данная модель представляет собой набор концепций, которые описывают структуру базы данных и связанные с ней транзакции обновления и извлечения данных.
Основная цель создания ERмодели • Создание модели пользовательского восприятия данных и согласование большого количества технических аспектов, связанных с проектированием базы данных. • Концептуальная модель данных не зависит от конкретной СУБД или аппаратной платформы, которая используется для реализации БД.
Концепции ER-модели • ER-модель представляет собой набор концепций состоящий из типы сущностей, типы связей и атрибуты представленных в графическом виде.
Типы сущностей (entry type) • Объект или концепция характеризующаяся в данной предметной области как имеющая независимое существование. • Это множество объектов реального мира с одинаковыми свойствами. • объект характеризующийся независимым существованием и может быть объектом с физическим (реальным) существованием или объектом с концептуальным (абстрактным) существованием
Примеры сущностей с физическим и концептуальным существованием • Физическое (работник, объект недвижимости, клиент, деталь, поставщик, изделие) • Концептуальное (осмотр объекта недвижимости, инспекция объекта недвижимости, продажа объекта недвижимости, рабочий стаж)
Сущность • Экземпляр типа сущности, который может быть идентифицирован уникальным образом. • Каждый тип сущности идентифицируется именем и списком свойств. • Типы сущности могут быть слабыми (существование которого зависит от какого-то другого типа сущности) и сильными (существование не зависит от какого-то другого типа сущности)
Способы представления типов сущностей на диаграмме Сильные – прямоугольник с именем сущности внутри него Слабые – прямоугольник с именем сущности внутри него но с двойным контуром
Атрибуты • Свойство типа сущности или типа связи. • Атрибуты сущности содержат значения описывающий каждую сущность. Значения атрибутов представляют основную часть сведений, сохраняемых в базе данных.
Домен атрибута • Набор значений, которые могут быть присвоены атрибуту. • Домен определяет все потенциальные значения, которые могут быть присвоены атрибуту. • Различные атрибуты могут использовать один и тот же домен.
Атрибуты • Делятся на просты и составные. • Простой атрибут – атрибут, состоящий из одного компонента с независимым существованием. Пример: зарплата, название. • Составной атрибут – атрибут, состоящий из нескольких компонентов характеризующихся независимым существованием. Пример: адрес, ФИО.
Атрибуты • Также делятся на однозначные, многозначные, производные. • Однозначные – атрибут который содержит одно значение для одной сущности. Пример: Пол, зарплата, имя. • Многозначные – атрибут содержащий несколько значений для одно сущности. Пример: телефон. • Производные атрибут: атрибут который представляет значение производное от значения связанного с ним атрибут или некоторого множества атрибутов, принадлежащих некоторому (не обязательно данному) типу сущности.
Ключи • Это элемент данных который позволяет уникально идентифицировать отдельные экземпляры некоторого типа сущности. • Существуют потенциальные, первичные и составные ключи.
Представление атрибутов на диаграммах • На диаграммах атрибуты изображаются в виде эллипсов, присоединенных линией к соответствующей сущности и помеченных именем атрибута. • Эллипс окружен пунктирной линией, если атрибут является производным, и двойным контуром, если атрибут является многозначным. • Если атрибут является составным, его атрибуты-компоненты изображаются в виде присоединенных к нему элипсов.
Представление атрибутов на диаграммах • Первичный ключи обозначается эллипсом c подчеркнутым текстом. • На диаграммах все атрибуты должны иметь одинаковый размер и текст должен быть одинакового размера
Атрибуты (графическое представление)
Типы связей • Тип связи (relationship type) осмысленная ассоциация между сущностями разных типов. • Каждому типу связи присваивается имя которое описывает его функцию. Например сущность «Завод» связана с сущностью «Печное изделие» посредством связи «Производит»
Связь • Ассоциация между сущностями, включающая по одной сущности из каждого участвующего в связи типа сущности. • Связи указывают на отдельные экземпляры сущностей, объединяемые ими.
Связи • На диаграммах изображается в виде ромба с указанным на нем именем связи. • Ромбик имеет двойной контур, если связь соединяет слабую сущность с сильной сущностью. • На диаграммах связей не отображаются все атрибуты а отображаются только первичные ключи
Связи
Степень связи • Количество сущности которые охвачены данной связью. • Бывают унарные (связь одного тип сущности с собой - рекурсивная), бинарные (связь двух типов сущности), тернарная (связь трех типов сущностей), кватернарная (связь четырех типов сущностей).
Примеры связей
Примеры связей
Ролевые имена • Ролевые имена определяют назначения каждой сущности в связи и также используются когда две сущности связаны двумя различными связями.
Примеры связей
Две сущности связаны двумя связями
Атрибуты связей • Атрибуты могут также принадлежать связям, например сущность «Товар» может связна с «Склад» с помощью связи «Хранение» и у нее есть атрибут «количество» .
Атрибуты связей
Структурные ограничения • Ограничения накладываемые на сущности участвующие в некоторых связях, являются отражением определенных требований реального мира • Показатель кардинальности – описывает количество возможных связей для каждой из сущности. • Наиболее распространенными бинарными связями являются с показателями кардинальности «один к одному» , «один ко многим» и «многие ко многим» .
Связь один к одному
Связь один ко многим
Связь многие ко многим
Требование к информации в БД • Быстрый доступ к данным • Отсутствия дублирования (повторения) данных • Целостность данных
Нормализация данных • Это процесс проектирования БД с использованием метода нормальных форм и заключается в последовательном переводе по определенным правилам отношений из первой нормальной формы к нормальным формам более высокого порядка.
Нормальные формы (НФ) • • 1 НФ 2 НФ 3 НФ Усиленная третья нормальная форма (нормальная форма Бойса-Кодда) • 4 НФ • 5 НФ
Требования к 1 НФ • Поля содержат неделимую (атомарную) информацию. • В таблице отсутствуют повторяющиеся группы полей
Требования к 2 НФ • Таблица должна удовлетворять первой нормальной формы • Любое не ключевое поле должно однозначно идентифицироваться ключевыми полями
Требования к 3 НФ • Таблица должна удовлетворять требованиям второй нормальной формы • Ни одно из не ключевых полей не должно однозначно идентифицироваться значением другого не ключевого поля
Методика преобразования ERмодели в реляционную • Преобразованием ER-модели в реляционную идет поэтапно т. е. сначала преобразуются типы сущностей, а потом преобразуются типы связей.
Преобразование типов сущностей с различными видами атрибутов
Преобразование связей один к одному
Преобразование связей один к одному
Преобразование унарной связи
Преобразование бинарной связи один ко многим
Преобразование бинарной связи многие ко многим
Преобразование тетрарной связи
Преобразование кватернарной связи
Физическая модель данных • Физическая модель данных описывает данные средствами конкретной СУБД. • Физическая модель строится на основании логической модели данных. • СУБД бываю локальные (Microsoft Access, Paradox, d. Base) и клиент серверные (Oracle, MS SQL Server, My. SQL). • Реляционная модель состоит из таблиц.
Таблицы MS SQL(правила именования) • могут содержать буквы английского алфавита, цифры и _; • не могут содержать пробелы; • не могут повторять существующие имена других таблиц в этой же директории; • должны быть мнемоническими (т. е. отражать содержание таблицы). • Примеры именования таблиц: users, products, seasons, customers, tp_sclad.
Поля таблиц MS SQL • могут иметь длину до 25 символов; • не должны содержать пробелы; • могут содержать буквы английского алфавита, цифры и _; • не могут повторять имя другого поля в этой же таблице; • должны отражать содержание поля. • Примеры названия полей: ID_User, Name, Caption, FK_user
Типы данных MS SQL • VARCHAR - алфавитно-цифровые (символьные) поля. Могут содержать буквы; Поле может быть от 1 до 255 символов; • TEXT – большой текст до 65399 символов • INT– хранят целы числа. Диапазон зависит от свойства размер поля • MONEY - денежные поля. В точности похожи на числовые поля, но округляются до 4 символов после запятой; • BIT – содержит значения Да или Нет, True или False • DATETIME - поля даты. Могут содержать любые допустимые даты между 1 января 100 года и 31 декабря 9999 года. • FLOAT – вещественный тип
Создание связей между таблицами • Контекстное меню – отношения – добавить.
Создание первичного ключа • Контекстное меню – Задать первичный ключ • Для обеспечения автоматического назначения требуется в свойствах поля указать:
Архитектуры доступа к данным • Borland Database Engine (BDE) – движок доступа к БД от корпорации Borland • Open Database Connectivity (ODBC) – программный интерфейс доступа к БД • Active. X Data Objects (ADO) - интерфейс программирования приложений для доступа к данным основанный на технологии компонентов Active. X и др.
Схема доступа к данным через ADO - Компоненты Delphi обеспечивающие подключение к БД, функциональность наборов данных, работу с транзакциями и др. OLE DB - — набор интерфейсов, основанных на COM, которые позволяют приложениям обращаться к данным, хранимым в разных источниках информации или хранилищах данных с помощью унифицированного доступа.
Компонент TADOConnection • Компонент TADOConnection предназначен для управления соединением с объектами хранилища данных ADO. • Connection. String: Wide. String; - хранит строку подключения к БД; • Connected: boolean; - определяет соединен ли компонент с БД
Создание строки подключения • Щелкаем по свойству Connection. String, появляется окно.
Создание строки подключения • Щелкаем по кнопке Build – создать и выбираем поставщика OLE DB (Microsoft OLE DB Provider for SQL Server). Нажимаем далее.
Создание строки подключения • Результат: • Provider=SQLOL EDB. 1; Integrated Security=SSPI; Pe rsist Security Info=False; Initial Catalog=fondbase ; Data Source=ICEBER GPCSQLEXPRE SS
Наборы данных ADO
Наборы данных • Копия одной или нескольких таблиц, хранящаяся в памяти для быстрого доступа. • TData. Set – базовый класс для всех наборов данных; • TCustom. ADODataset – базовый класс для наборов данных ADO; • TADOTable – позволяет загружать в память и манипулировать данными одной таблицы БД • TADOQuery – осуществляет реляционный доступ к одной или нескольким таблицам • TADOStored. Proc – выполняет хранимые процедуры в клиент-серверных СУБД
Архитектура приложения БД
Свойства TADOTable • Connection – компонент соединения с базой данных. • Table. Name – название таблицы, которая будет отображаться в наборе данных. • Activity – определяет открыт ли набор данных или нет.
Источник данных (TData. Source) • Компонент являющийся посредником между набором данных (TData. Set) и компонентами отображающими данные (Data. Controls). • Главное свойство Data. Set указывает набор данных с которым связан источник данных.
Визуальные компоненты • Позволяют выводить и редактировать в визуальном режиме данные из источника данных. Связываются с набором данных (TData. Set) посредством источника данных (TData. Source) с помощью свойства Data. Source. • DBGrid – сетка строк, осуществляет вывод целой таблице; • DBNavigator – компонент позволяющий осуществлять основные операции с набором данных (переход с записи на запись, добавление, редактирование и удаление записи, подтверждение и отмена изменений)
Визуальные компоненты • DBText – осуществляет вывод не редактируемого текста из одного поля набора данных. Аналог Label. Свойство Fieldname определяет название поля отображаемого в компоненте. • DBEdit – осуществляет вывод редактируемого текста из одного поля набора данных. Аналог Edit. Свойство Fieldname определяет название поля отображаемого в компоненте. • DBMemo – выводит многострочный текст из одного поля набора данных. • DBImage – выводит изображение из поля базы данных, поля должно иметь тип Graphic.
Создание вычисляемых полей • Вычисляемое поля позволяет вычислять значения поля определенной записи на основании других данных. • Для создания вычисляемого поля необходимо два раза щелкнуть по набору данных, вызвать контекстное меню и выбрать пункт «New field» , в котором необходимо указать следующие параметры: • Name – имя поля; • Type – тип поля; • Size – размер поля, если поле строкового типа; • Field. Type – тип поля, необходимо указать Calculated.
Окно создания вычисляемого поля
Создание поля подстановки • Поле подстановки позволяет установить значение внешнего ключа в одной таблице, значением первичного ключа другой таблице, при этом пользователь увидит значения главной таблице. • Для создания вычисляемого поля необходимо два раза щелкнуть по набору данных, вызвать контекстное меню и выбрать пункт «New field» , в котором необходимо указать следующие параметры:
Параметры поля подстановки • • • Name – имя поля; Type – тип поля; Size – размер поля, если поле строкового типа; Field. Type – тип поля, необходимо указать Lookup. Key fields – имя внешнего ключа таблицы; Data. Set – набор данных, данные которого будут отображаться в списке выбора; • Lookup Keys – имя первичного ключа таблицы; • Result Field – имя поля таблицы, данные которого будут отображаться в списке выбора
Окно создание подстановочного поля
Программный доступ к записям набора данных • Набор данных (TData. Set) позволяет осуществлять навигацию по записям их поиск и редактирование а так же программную обработку действий совершаемых над набором данных с помощью свойств, методов и событий.
Навигация по набору данных (НД) • Осуществляется с помощью курсора НД, указывающего на текущую запись в НД. Для навигации используются следующие свойства и методы: • EOF: boolean – свойство равное True если курсор находится на последней записи НД; • BOF: boolean – свойство равное True если курсор находится на первой записи НД; • Next – перемещает курсор на следующую запись; • Last – перемещает курсор на последнюю запись; • Prior – перемещает курсор на предыдущую запись; • First – перемещает курсор на первую запись;
Последовательная навигация по записям // В обратном порядке // В прямом порядке With t. Users do Begin First; Last; while not BOF do while not EOF do begin // делаем какие либо действия Prior; Next; end Еnd
Доступ к значениям записей • Доступ можно осуществлять по имени и по номеру поля, для доступа к данным необходимо указывать их тип. • t. Users. Name. As. String • t. Users. Fields[0]. As. Integer • t. Users. Field. By. Name('Name'). As. Float • Можно и без указания типа, тогда тип будет автоматически указываться компилятором. • t. Users[‘Name’]: =‘Иван’;
Редактирование записей • Записи можно вставлять, изменять, удалять, делается это с помощью следующих методов: • Insert, Append – добавляет новую запись в НД • Update – редактирует текущую запись НД; • Post – подтверждает внесение новой записи или изменение существующей; • Cansel – отменяет внесение новой записи или изменение существующей; • Delete – удаляет текущую запись
Примеры редактирование записей //Вставка t. Users. Append; t. Users. Name. asstring: =‘Иван’; t. Users. Second. Name. asstring: =‘Петров’; t. Users. Sallary. as. Float: =20000; t. Users. Post; //Изменение t. Users. Edit; t. Users. Name. asstring: =‘Иван’; t. Users. Second. Name. asstring: =‘Петров’; t. Users. Sallary. as. Float: =20000; t. Users. Post; //Удаление if Message. Dlg('Вы действительно хотите удалить текущую запись', mt. Warning, [mb. Yes, mb. No], 0)=mr. Yes then begin t. Users. Delete; end;
Состояния НД • ds. Inactive - НД закрыт • ds. Browse - Данные отображаются но не редактируются • ds. Edit - Активная запись редактируется • ds. Insert - В НД вставлена новая запись • ds. Set. Key - Происходит установка ключа для поиска данных с помощью метода Set. Key • ds. Calc. Fields - Происходит вычисление, вычисляемых полей в НД • ds. Filter - Происходит фильтрация записей • ds. Opening – НД открывается
Использование закладок Var Save. Place: TBookmark; begin with TUsers do begin { Получение закладки } Save. Place : = Get. Bookmark; try // Что то делаем // Переходим к ранее установленной закладки Goto. Bookmark(Save. Place); finally // Освобождаем закладку Free. Bookmark(Save. Place); end;
Поиск записей в наборе данных • Метод Locate ищет первую запись удовлетворяющую условию и если такая запись найдена, делает её текущей. • function Locate(const Key. Fields: string; const Key. Values: Variant; Options: TLocate. Options): Boolean; • Key. Fields – поле по которому происходит поиск записи • Key. Values – искомое значение • Options – настройки поиска (lo. Case. Insensitive – неучитывает разницу в регистре значений; lo. Partial. Key – поиск по частичному соответствию) • Cust. Table. Locate('Company; Contact; Phone', Var. Array. Of(['Sight Diver', 'P', '408 -431 -1000']), [lo. Partial. Key, lo. Case. Insensitive ]);
Метод Lookup • Метод Lookup ищет запись в НД и в случае если её находит не делает текущей, а возвращает одно или несколько значений записи. • function Lookup(const Key. Fields: string; const Key. Values: Variant; const Result. Fields: string): Variant; • Result. Fields – результирующие поля • Пример: Var V: Variant; C: Integer; A: String; begin V : = Table 1. Lookup('Company; State', Var. Array. Of(['Blue Sports', 'OR']), 'Cust. No; Addr 1'); if not (Var. Type(V) in [var. Null]) then begin C : = V[0]; A : = V[1]; Show. Message(Int. To. Str(C) + ‘ ’ + A); end else Show. Message('Search unsuccessful!'); end;
Фильтрация записей • Отображение записей согласно определенного условия или нескольких условий. За фильтрацию отвечают, следующие свойства: • Filter: string; – определяет условия фильтрации; • Filtered: boolean; - определяет отфильтрован ли набор данных или нет. • Пример фильтрации: • Table 1. Filter: =‘State = ‘+Quoted. Str(‘CA’)+' or State =‘+ Quoted. Str('MA‘); • Table 1. Filter: =‘(Custno > 1400) AND (Custno < 1500)’;
События TData. Set • События НД позволяют реагировать на различные операции с набором данных: фильтрацию, открытие, закрытие набора данных; вставку, изменение, удаление, изменение текущей записи; вычисление полей и др.
Событие On. Filter. Record • Возникает при установки значения True в свойстве Filtered и имеет следующее определение: • Procedure On. Filter. Record(Data. Set: TData. Set; var Accept: Boolean); • Data. Set – ссылка на НД где происходит фильтрация данных; • Accept – переменная определяющая попадет ли запись в отфильтрованный набор данных или нет.
Пример использования On. Filter. Record procedure TSummary. Filter(Dataset: TData. Set; var Accept: Boolean); begin Accept: =Ansi. Contains. Text(Dataset. fieldbyname( ‘Name’). As. String, ’Иван’); Accept: =Data. Set['Amount. Of. Purchase'] > Str. To. Int(Edit 1. Text); Accept: =Ansi. Contains. Str(Dataset. fieldbyname(‘F amily’). As. String, ’Иванов’); end;
События отвечающие за отклик на операции с записями
Событие On. Calc. Fields • Возникает при вычислении полей, которое происходит при открытие НД и отображение ранее не видимых записей в DBGrid. • Пример вычисления поля. Procedure Table 1 On. Calc. Fields(Data. Set: TData. Set); Begin if Table 1 Sex. As. Boolean then Table 1 Calc. Sex. As. String: =‘Мужской’ else Table 1 Calc. Sex. As. String: =‘Женский’; end
Поиск по индексированным полям • Осуществляется с помощью метода Set. Key, Goto. Key. Table 1. Active : = False; // Закрываем НД Table 1. Index. Name : = ’City. Index’; // Определяем индекс по которому происходит поиск Table 1. Active : = True; // Открываем НД Table 1. Set. Key; // Включаем режим установки искомого ключа Table 1. Field. By. Name(’City’). As. String : = Edit 1. Text; // Устанавливаем искомое значение Table 1. Goto. Key; // Перемещаемся к искомой записи, если она есть
Поиск на ближайшее соответствие • Осуществляется с помощью метод Find. Nearest Table 1. Active : = False; // Закрываем НД Table 1. Index. Name : = ’City. Index’; // Определяем индекс по которому происходит поиск Table 1. Active : = True; // Открываем НД Table 1. Find. Nearest([Edit 1. Text]); //Поиск по ближайшему соответствию
Язык SQL • SQL является, прежде всего, информационнологическим языком, предназначенным для описания хранимых данных, для извлечения хранимых данных и для модификации данных. SQL не является языком программирования. • Изначально, SQL был основным способом работы пользователя с базой данных и представлял собой небольшую совокупность команд (операторов) допускающих создание таблиц, добавление в таблицы новых записей, извлечение записей из таблиц (в соответствии с заданным условием), удаление записей и изменение структур таблиц. В связи с усложнением язык SQL стал более языком прикладного программирования, а пользователи получили возможность использовать визуальные построители запросов.
Операторы языка SQL Язык SQL представляет собой совокупность операторов. Операторы SQL делятся на: • операторы манипуляции данными (Data Manipulation Language, DML) • операторы определения данных (Data Definition Language, DDL) • операторы определения доступа к данным (Data Control Language, DCL) • операторы управления транзакциями (Transaction Control Language, TCL)
История развития SQL Год Название Изменения 1986 SQL-86 Первый вариант стандарта, принятый институтом ANSI и одобренный ISO в 1987 году. 1989 SQL-89 Немного доработанный вариант предыдущего стандарта. 1992 SQL-92 Значительные изменения (ISO 9075); уровень Entry Level стандарта SQL-92 был принят как стандарт FIPS 127 -2. 1999 SQL: 1999 Добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности.
История развития SQL Год Название Изменения 2003 SQL: 2003 Введены расширения для работы с XMLданными, оконные функции (применяемые для работы с OLAP-базами данных), генераторы последовательностей и основанные на них типы данных. 2006 SQL: 2006 Функциональность работы с XML-данными значительно расширена. Появилась возможность совместно использовать в запросах SQL и XQuery. 2008 SQL: 2008 Улучшены возможности оконных функций, устранены некоторые неоднозначности стандарта SQL: 2003
Преимущества SQL • Независимость от конкретной СУБД - Несмотря на наличие диалектов и различий в синтаксисе, в большинстве своём тексты SQL-запросов, содержащие DDL и DML, могут быть достаточно легко перенесены из одной СУБД в другую. • Наличие стандартов - Наличие стандартов и набора тестов для выявления совместимости и соответствия конкретной реализации SQL общепринятому стандарту только способствует «стабилизации» языка. • Декларативность - С помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать. То, каким образом это сделать, решает СУБД непосредственно при обработке SQLзапроса.
Недостатки SQL • Несоответствие реляционной модели данных • Высокая избыточность • Сложность • Отступления от стандартов • Сложность работы с иерархическими структурами
Оператор Insert • Insert into <tablename> (<field 1>, <field 2>…<field. N>) • Values(<value 1>, <value 2>…<value. N>) • Пример • Insert into students (name, family, birthday, fk_group) • Value (‘Иван’, ’Иванов’, 23. 02. 2000, 1)
Оператор Update • Update <tablename> set <field 1>=<fieldname 1>, <field 2>=<fieldname 2>… • Where <условие обновления> • Пример • Update students set name=‘Иван’, family=‘Иванов’ where id=5
Оператор Delete • Delete from <tablename> where <условие> • Delete from students where Name=‘Иван’ • = • > • <= • >= • <>
Таблица БД Students ID_Students First. Name Second. Name Sallary Fk_groups 1 Иванов 2000 1 2 Петр Вавилов 3000 2 3 Алексей Петров 1000 1 4 Александр Сидоров 1500 1 5 Петр Сидоренко 0 null Groups Id_groups caption 1 МТ 07 -10 2 МТ 08 -10 3 АТ 10 -10
Оператор Select • • • Select <поле 1>, <field 2>…<fieldn> from <table 1>, <table 2>…<table. N> Where <условие отбора> Order by <условия сортировки> Group by <группировка данных> Having <дополнительно условие отбора> • Union <объединение запросов>
Оператор Select • Простой запрос Select id_students, firstname, secondname, sallary from students ID_Students First. Name Second. Name Sallary 1 Иванов 2000 2 Петр Вавилов 3000 3 Алексей Петров 1000 4 Александр Сидоров 1500 5 Петр Сидоренко 0
• Запрос из нескольких таблиц Select * from groups, students where students. fk_groups=groups. id_groups Select * from students s Inner join groups g on s. fk_groups=g. id_groups ID_Stu First. N dents ame Second. N Sallary ame Fk_grou ps Ig_groups caption 1 Иванов 2000 1 1 МТ 07 -10 2 Петр Вавилов 3000 2 2 МТ 08 -10 3 Алекс ей Петров 1000 1 1 МТ 07 -10 4 Алекс андр Сидоров 1500 1 1 МТ 07 -10
Оператор Select • Сортировка записей Select id_student, firstname, secondname, sallary from students order by secondname, firstname ID_Students First. Name Second. Name Sallary 2 Петр Вавилов 3000 1 Иванов 2000 3 Алексей Петров 1000 4 Александр Сидоров 1500 5 Петр Сидоренко 0
• Сортировка в обратном порядке Select id_student, firstname, secondname, sallary from students order by sallary desc ID_Students First. Name Second. Name Sallary 2 Петр Вавилов 3000 1 Иванов 2000 4 Александр Сидоров 1500 3 Алексей Петров 1000 5 Петр Сидоренко 0
Оператор Select • Отбор по диапазону Select id_student, firstname, secondname, sallary from students where sallary between 1500 and 3000 ID_Students First. Name Second. Name Sallary 1 Иванов 2000 2 Петр Вавилов 3000 4 Александр Сидоров 1500
Оператор Select • Выбор записей значения полей которых начинается с определенной букв Select id_student, firstname, secondname, sallary from students where secondname like “Ив%” ID_Students First. Name Second. Name Sallary 1 Иванов 2000
Оператор Select • Выбор записей значения полей которых содержит определенную букву Select * from students where firstname like “%кс%” ID_Students First. Name Second. Name Sallary Fk_groups 3 Алексей Петров 1000 1 4 Александр Сидоров 1500 1
Оператор Select • Выбор записей с определенными значениями полей Select * from students where id_students in (1, 3, 4) ID_Students First. Name Second. Name Sallary Fk_groups 1 Иванов 2000 1 3 Алексей Петров 1000 1 4 Александр Сидоров 1500 1
Оператор Select • Псевдонимы таблиц Select g. caption, s. firstname, s. secondname, s. sallary from students s, groups g where s. fk_groups=g. id_groups caption First. Name Second. Name Sallary МТ 07 -10 Иванов 2000 МТ 08 -10 Петр Вавилов 3000 МТ 07 -10 Алексей Петров 1000 МТ 07 -10 Александр Сидоров 1500
Оператор Select • Агрегатные функции: Avg – среднее значение аргумента Count – количество вхождений аргумента Max – максимальное значение аргумента Min – минимальное значение аргумента Sum – суммарное значение аргумента
Оператор Select • Select avg(sallary) from students 1562, 5 Select count(*) as countg from groups countg 3
Оператор Select • Группировка записей Select g. caption, sum(sallary) from students s, groups g where s. fk_groups=g. id_groups group by g. caption Sallary МТ 07 -10 4500 МТ 08 -10 3000
Оператор Select • Выбор записей с неповторяющимися значениями полей Select distinct s. firstname from students s First. Name Иван Петр Алексей Александр
• Использование дополнительного условия отбора Select g. caption, sum(sallary) from strudents s, groups g where s. fk_groups=g. id_groups group by g. caption having sum(sallary) > 3000 caption Sallary МТ 07 -10 4500
Оператор Select • Выбор записей с неустановленными значениями полей Select * from students s where fk_groups is null ID_Students First. Name Second. Name Sallary Fk_groups 5 Петр Сидоренко 0 null
• Выбор записей с установленными значениями полей Select * from students s where fk_groups not null ID_Students First. Name Second. Name Sallary Fk_groups 1 Иванов 2000 1 2 Петр Вавилов 3000 2 3 Алексей Петров 1000 1 4 Александр Сидоров 1500 1
• Объединение запросов select id_groups, caption, 0 as typerec from groups union select id_students, secondname, 1 as typerec from students Типы полей должны совпадать Id_groups caption Typerec 1 МТ 07 -10 0 2 МТ 08 -10 0 3 АТ 10 -10 0 1 Иванов 1 2 Вавилов 1 3 Петров 1 4 Сидоров 1 5 Сидоренко 1
• выбор записей с использованием подзапросов • Select * from students where sallary>(select avg(sallary) from students) ID_Students First. Name Second. Name Sallary Fk_groups 1 Иванов 2000 1 2 Петр Вавилов 3000 2 4 Александр Сидоров 1500 1
Свойства TADOQuery • Connection – компонент соединения с базой данных. • SQL – содержит SQL запрос выбирающий данные в набор данных • Activity – определяет открыт ли набор данных или нет.
Методы TADOQuery • Open – открывает набор данных, выполняя при этом запрос возвращающий значение (Select); • Exec. SQL – Выполняет SQL-запрос не возвращающий набор данных (Insert, Update, Delete)
Статический запрос with Query 1 do begin Close; // Закрываем набор данных SQL. Clear; // Очищаем текст SQL-запроса SQL. Add(‘select * from groups'); //Устанавливаем SQL запрос Open; //Выполняем SQL запрос и при этом запрос возвращает набор данных end;
Динамический запрос with Query 1 do begin Close; // Закрываем набор данных SQL. Clear; // Очищаем текст SQLзапроса SQL. Add(‘select * from groups where caption=‘+Quoted. Str(Edit 1. text)); //Устанав ливаем SQL запрос Open; //Выполняем SQL запрос и при этом запрос возвращает набор данных end;
Параметрический запрос with Query 1 do begin Close; // Закрываем набор данных SQL. Clear; // Очищаем текст SQL-запроса SQL. Add('insert into groups (name, fk_faculty) values (: name, : fk_faculty)'); //Устанавливаем SQL запрос Param. By. Name('name'). As. String: ='07 -15‘; // Устанавливаем значение параметра по имени Params[1]. As. Integer: =1; // Устанавливаем значение параметра по номеру Exec. SQL; //Выполняем SQL запрос end;
DBGrid • Компонент отображающий сетку строк. • Свойства: – Data. Source – источник данных откуда будут отображаться данные – Columns – коллекция содержащая столбцы набора данных. У каждого столбца есть следующие свойства • Field. Name – название поля откуда будут браться данные для отображения • Caption – отображаемый заголовок столбца For i: =0 to DBGrid. Columns. count-1 do Begin List. Box. Items. Add(DBGrid. Columns[i]. title. caption); End Fieldname: =DBGrid. Columns[List. Box 1. itemindex]. Field name;
Базы данных.pptx