- •Разработка баз данных средствами MySql
- •Содержание
- •Введение
- •1. Основы работы в субд MySql
- •Системы управления базами данных
- •Основные характеристики MySql
- •Команда create database
- •Работа с таблицами
- •Синтаксис команды create table
- •Удаление таблиц
- •Синтаксис команды drop table
- •Типы данных
- •Числовые данные
- •Строковые данные
- •Календарные данные
- •Тип данных null
- •Выбор типа данных
- •1 Вариант.
- •2 Вариант.
- •3 Вариант.
- •2. Работа с таблицами. Ввод, извлечение, поиск и удаление данных Запись данных в таблицы
- •Заполните таблицу employee_data 5-10 записями. Запрос данных из таблицы MySql
- •Выборка данных с помощью условий
- •Операторы больше и меньше
- •Поиск текстовых данных по шаблону
- •Предложение group by и having
- •Удаление записей из таблицы
- •Задание 1
- •Задание 2
- •Задание 3
- •3. Логические операции в MySql
- •Операторы in и between
- •Упорядочивание данных
- •Ограничение количества извлекаемых данных
- •Извлечение подмножеств
- •Ключевое слово distinct
- •Изменение записей
- •Задание 1
- •Задание 2
- •Задание 3
- •Вычисление среднего значения
- •Именование столбцов
- •Подсчет числа записей
- •Группировка данных
- •5. Математические функции в MySql. Строковые функции. Работа с датой Математические функции MySql
- •Строковые функции
- •Ascii(строка)
- •Concat(строка1, строка2, ...)
- •Особенности типа данных Date
- •Операции с датами
- •Определение диапазонов
- •Использование Date для сортировки данных
- •Выбор данных с помощью Date
- •Текущие даты
- •Тип столбца Null
- •Задание 1
- •Задание 2
- •Задание 3
- •6. Переменные и временные таблицы. Многотабличные запросы
- •7. Вложенные запросы в MySql
- •8. Хранимые процедуры и функции
- •9. Курсоры в MySql. Представления. Конструкции управления потоком данных
- •10. Анализ и моделирование предметной области
- •1. Выбор и текстовое описание предметной области
- •2. Разработка концептуальной er-модели предметной области
- •3. Определение функциональных требований
- •11. Проектирование базы данных
- •1. Создание логической реляционной модели базы данных
- •2. Нормализация логической реляционной модели базы данных
- •1Нф (Первая Нормальная Форма)
- •2Нф (Вторая Нормальная Форма)
- •3Нф (Третья Нормальная Форма)
- •12. Проектирование физической модели бд и ее реализация
- •1. Создание физической модели базы данных
- •2. Реализация физической модели базы данных в коде
- •13. Наполнение и тестирование бд
- •1. Наполнение базы данных
- •2. Тестирование базы данных
- •14. Создание приложения к бд в среде delphi 7, с использованием AnyDac framework 1.7.0
- •1. Начало работы
- •2. Связь с таблицами
- •3. Отображение таблицы на форме
- •4. Компонент adQuery
- •5. Экспорт данных в Excel
- •6. Работа с внешними ключами
- •Рекомендуемая литература
- •Разработка баз данных средствами MySql
- •460844, Г. Оренбург, ул. Советская, 19
2. Связь с таблицами
Для связи с таблицами из вашей базы данных среди палитры AnyDAC есть специальный компонент: ADTable.
Для работы необходимо поменять свойства компонента, которые можно редактировать в окошке Object Inspector:
Active – true или false. Очень часто, если данные не отображаются в DBGrid’е, то первым делом надо проверить это свойство.
Connection – используемое подключение.
table_name – самое важное свойство - название таблицы, доступ к которой будем получать через этот компонент. При нажатии вызывает диалог подключения, если база еще не подключена.
Если необходимо изменить названия колонок или добавить новые поля, в том числе и из других таблиц, дважды щелкните по нужному компоненту, появится маленькое пустое окошко. Нажмите правую кнопку мыши и выберите пункт add all fields, в окошке должны появиться все названия полей выбранной таблицы.
Выбираем нужное поле, далее в Object Inspector’е можно редактировать следующие свойства:
DisplayLabel – отображаемый заголовок поля: то есть фактически название не меняется, но при отображении в DBGrid’е название поля будет меняться;
DisplayWidth – ширина колонки;
Visible – отображается поле или нет. Полезно, например, для скрытия от пользователя ID номеров.
Также можно создать новое поле: нажать правую кнопку мыши и выбрать New field, появится форма создания поля. Это удобно, например, для отображения вместо внешних ID номеров - данные из других таблиц. На этой форме необходимо указать имя нового поля (Name), тип данных нового поля (Type), тип поля (Field Type, в нашем случае Lookup, т.е. смотреть из другой таблицы), а также ключ внешнего поля в нашей таблице (Key Fields), просматриваемый ключ другой таблицы (Lookup Keys), имя компонента, в котором находятся просматриваемые данные (Dataset) и имя поля другой таблицы, которое должно отображаться в нашей. Например для того чтобы создать поле, отображающее название профиля необходимо ввести следующие значения:
Перед добавлением новых полей необходимо, чтобы для каждой таблицы из вашей БД был свой компонент ADTable. (на рисунке в компоненте ADTable2 свойство table_name=school25_db.profiles)
3. Отображение таблицы на форме
На форму надо добавить следующие компоненты:
Datasource – находится на вкладке Data Access – источник данных, в свойстве DataSet надо выбрать необходимый компонент (ADTable, ADQuery).
DBGrid – находится на вкладке Data Controls и в свойстве DataSource выбрать имя нужного компонента DataSource.
Пример:
У нас есть
ADTable1.table_name=school25_db.classes
DataSource1.DataSet= ADTable2
DBGrid1.DataSource= DataSource1
После того, как мы поставим ADTable1.Active=true, данные из этой таблицы сразу же отобразятся в DBGrid’е.
Примечание:
При работе в Delphi подключение происходит только один раз, поэтому, если данные должны были измениться, но это не отображается, попробуйте переподключить БД: поставьте ADConnection.Connected=false при этом у всех компонентов, зависящих от этого подключения свойство Active станет равным false, затем снова поставьте ADConnection.Connected=true, после этого придется вручную поставить у всех зависимых компонентов Active=true.
ADTable1 DataSource1
DBGrid1
Форма
Если необходимо вручную задать отображаемую ширину полей, то можно обработать событие DataSourceDataChange в котором будет проводится проверка типа данных в поле и для них изменять ширину.
Пример.
procedure TForm1.DataSource8DataChange(Sender: TObject; Field: TField);
var i:integer;
begin
for i:=0 to dbgrid8.Columns.Count-1 do
begin
if dbgrid8.Columns.Items[i].Field.DataType=ftstring then
dbgrid8.Columns.Items[i].Width:=160;
if dbgrid8.Columns.Items[i].Field.DataType=ftinteger then
dbgrid8.Columns.Items[i].Width:=32;
end;
end;
Также можно попробовать редактировать столбцы в свойстве DBGrid.Columns, но если количество столбцов меняется, то лучше это свойство не трогать.