ВВЕДЕНИЕ 15
ЧАСТЬ I. ВВЕДЕНИЕ В MYSQL 17
1. РАБОТАЕМ С MYSQL 18
Немного истории 18
Особенности лицензирования 20
Развертывание сервера разработчика 20
Учетная запись "root" 22
Утилита командной строки 23
Создание базы данных 24
Кодовая страница символов 27
Изменение параметров БД 29
Удаление БД 30
2. ТИПЫ ДАННЫХ И ОПЕРАЦИИ С НИМИ 31
Числовые типы 32
Целые числа 33
Вещественные числа 34
Битовые последовательности 36
Логический тип 36
Дата и время 36
Строковые типы 37
Строки символов 37
Бинарные строки 39
Большие бинарные объекты и типы TEXT 39
Преобразование типов данных 40
Функция CONVERT 41
Функция CAST 42
Операции с данными 44
Операция присваивания 44
Арифметические операторы 44
Логические операторы 45
Операторы сравнения 46
Проверка на неопределенность NULL 46
Поразрядные логические операторы и операторы сдвига 47
Конкатенация строк 47
3. РЕЛЯЦИОННЫЕ ТАБЛИЦЫ 48
Формат таблиц 49
Правила именования таблиц 51
Создание таблицы 52
Понятие неопределенности NULL 52
Определение столбцов 53
Индексы 57
Внешние ключи и связи между таблицами 57
Временные таблицы 62
Клонирование и копирование таблиц 62
Модификация структуры таблицы 63
Изменения внешнего ключа 65
Переименование таблицы 66
Очистка таблицы 67
Удаление таблицы 67
4. ИНДЕКСЫ 68
Типы индексов 68
HASH 69
BTREE 70
Ограничения 73
Создание индексов средствами SQL 73
Удаление индекса 76
Модификация индекса 76
Получение информации об индексах 76
Правила назначения индексов 77
5. ВЫБОРКА ДАННЫХ - SELECT 78
Базовый синтаксис инструкции SELECT 78
Ограничение числа строк в выборке 80
Псевдонимы имен столбцов и таблиц 81
Порядок сортировки, ORDER BY 82
Условие выборки, WHERE 83
Сравнение 84
Попадание в диапазон, BETWEEN 85
Соответствие шаблону, LIKE 85
Проверка на неопределенность 87
Вложенные запросы и проверка существования 88
Подзапрос IN 88
Проверка существования EXISTS 89
Многократное сравнение 91
Агрегирующие функции 92
Группировка данных GROUP BY 93
Фильтрация группы строк, HAVING 94
Экспорт результатов запроса в файл 95
Многотабличные запросы SELECT 96
Внутреннее соединение WHERE 97
Соединение JOIN 98
Слияние UNION 105
Оптимизация запроса 106
6. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ 108
Операторы для регулярных выражений 108
Основы синтаксиса 109
Регулярные выражения в запросах 116
Сбои при работе c кодировкой UTF-8 117
7. ПРЕДСТАВЛЕНИЯ 118
Создание представления, CREATE VIEW 119
Алгоритм построения представления 123
Модифицируемые представления 124
Владение и доступ 125
Изменение представления, ALTER VIEW 125
Удаление представления, DROP VIEW 125
8. МАНИПУЛИРОВАНИЕ ДАННЫМИ 126
Вставка, инструкция INSERT 126
Модификатор IGNORE 128
Модификаторы LOW_PRIORITY и HIGH_PRIORITY 129
Модификатор DELAYED 129
Ключ ON DUPLICATE KEY UPDATE 130
Замена, инструкция REPLACE 130
Модификация, инструкция UPDATE 131
Удаление, инструкция DELETE 132
9. ПРОЦЕДУРНЫЙ SQL 134
Хранимые процедуры и функции 135
Вызов хранимой процедуры, CALL 138
Особенности работы с функциями 138
Изменение процедур и функций 140
Удаление процедур и функций 140
Базовые конструкции процедурного SQL 140
Комментарии 140
Переменные 141
Составной оператор BEGIN…END 145
Условные операторы 146
Циклы 149
10. ТРИГГЕРЫ 156
События триггера MySQL 156
Особенности синтаксиса 157
Контекстные переменные 159
Примеры триггеров 159
Исследование триггеров 165
Чего не стоит делать в триггере? 165
11. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ В MYSQL 166
Классификация ошибок в MySQL 167
Числовой код ошибки ERROR 168
Код состояния SQLSTATE 168
Обработка исключительных ситуаций 169
Принудительный вызов исключения 171
Диагностика ошибок 173
12. КУРСОРЫ 176
Управление курсором 176
Ограничения курсора в MySQL 178
Примеры работы с курсором 179
13. ПЛАНИРОВАНИЕ СОБЫТИЙ 184
Запуск и остановка планировщика 184
Создание событий 185
Однократный вызов события 186
Периодический вызов события 189
Модификация события 191
Удаление события 191
14. ТРАНЗАКЦИИ И БЛОКИРОВКИ 192
Проблемы совместного доступа 193
Требования к изоляции транзакций в стандарте SQL 194
Выяснение текущего уровня изоляции транзакций 195
Многовариантность и блокировки 196
Согласованное чтение и чтение с блокировкой 197
Блокировки в InnoDB 199
Соответствие операторов DML и блокировок 200
Решение проблемы взаимной блокировки 201
Метод двухфазной блокировки 201
Автоматическое управление транзакцией 202
Явное управление транзакцией 203
Точки сохранения 206
15. УЧЕТНЫЕ ЗАПИСИ ПОЛЬЗОВАТЕЛЕЙ 208
Структура учетной записи MySQL 209
Идентификация текущего пользователя 210
Создание, редактирование и удаление учетной записи 210
Особенность хранения пароля 212
Изменение параметров учетной записи 212
Удаление учетной записи 215
Управление привилегиями 215
Наделение привилегиями, GRANT 216
Лишение привилегий, REVOKE 221
Просмотр привилегий пользователя 222
ЧАСТЬ II. ТЕХНОЛОГИЯ FIREDAC 224
16. КОНЦЕПЦИЯ ПРИЛОЖЕНИЯ FIREDAC 225
Клиентские библиотеки 227
Проводник данных Data Explorer 228
Утилита FireDAC Explorer 229
Состав приложения FireDAC для MySQL 230
Соединение с БД 231
Наборы данных 231
Источник данных 233
Визуальные элементы управления данными 234
17. СОЕДИНЕНИЕ С СЕРВЕРОМ БД 236
Компонент-соединение TFDConnection 236
Соединение с сервером 237
Аутентификация пользователя 245
Поддержка соединения во время визуального проектирования 249
Управление транзакциями 250
Опции модификации данных 252
Особенности выборки строк отношения 253
Менеджер соединений, TFDManager 257
18. ВЫПОЛНЕНИЕ ПРОСТЫХ КОМАНД SQL 262
Подготовка инструкции SQL 263
Статический и динамический SQL 265
Выполнение инструкции SQL 268
Состояние команды 269
Реакция на события 270
Обработка набора строк 272
19. КОМПОНЕНТ БЫСТРОЙ РАЗРАБОТКИ TFDTABLE 275
Программирование без кода 275
Особенности подключения к БД 277
Отношение между главной и подчиненной таблицами 278
20. НАБОР ДАННЫХ 281
Функционал набора данных 282
Подключение к объектам БД 283
Транзакции 283
Открытие и закрытие набора данных 284
Обновление набора данных 286
Настройка опций получения данных 287
Перемещение по строкам набора 289
Механизм закладок 291
Состояние набора данных 295
Модификация строк в наборе 297
События модификации данных 300
Повышение производительности 303
Работа в режиме отложенных обновлений 304
Доступ к полям набора данных 309
Вычисляемые поля 312
Фильтрация набора данных 313
Поиск строки в наборе 315
Экспорт и импорт данных в файл и поток 319
Реакция на события 321
Взаимодействие с визуальными элементами управления 323
21. ПОЛЕ НАБОРА ДАННЫХ 325
Тип обслуживаемых данных 328
Функциональное назначение 329
Обращение к полю 330
Доступ к значению поля 330
Преобразование типа данных 331
Режим кэширования обновлений 333
Размер поля 334
Значение по умолчанию 335
Ограничения на ввод данных 336
Маска ввода 337
Индексные поля 338
Отображение данных 339
Обработка событий 341
Искусственные поля 342
Поля подстановки 343
Вычисляемые поля 348
Числовые поля 351
Поля целых чисел 353
Поля вещественных чисел 353
Текстовое поле 354
Логическое поле 354
Поля даты и времени 355
Поля BLOB 355
22. НАБОР ДАННЫХ В ПАМЯТИ 359
Описание структуры таблицы 359
Коллекция определений полей TFieldDefs 360
Копирование таблицы 364
Получение данных из потока или файла 365
Импорт данных 366
Локальный SQL 367
Адаптер подключения TFDTableAdapter 367
23. ИНДЕКСЫ НАБОРА ДАННЫХ 370
Работа TFDDataSet с индексами 371
Ограничение диапазона значений 373
Хранилище индексов TFDIndexes 375
Индекс TFDIndex 376
Хранилище метаописаний, TIndexDefs 379
Метаописание индекса, TIndexDef 381
24. SQLITE 382
Пример проекта SQLite 382
Создание таблиц 384
Манипулирование данными 386
SQLite в клиент-серверных БД 390
Локальный SQL, TFDLocalSQL 393
25. ЗАПРОСЫ И ХРАНИМЫЕ ПРОЦЕДУРЫ 398
Запрос TFDQuery 398
Услуга быстрого ввода 401
Вызов процедуры, TFDStoredProc 402
Доступ к функциям 405
Хранимые процедуры на основе SELECT 406
Живые запросы, TFDUpdateSQL 408
26. РАБОТА КЛИЕНТА С ТРАНЗАКЦИЯМИ 411
Параметры транзакции 411
Поведение курсора при выполнении транзакции 415
Явное управление транзакцией 415
События TFDTransaction 419
27. МЕХАНИЗМ УВЕДОМЛЕНИЙ 420
События в InterBase и FireBird 420
Реакция клиента, TFDEventAlerter 421
28. РАБОТАЕМ СО СКРИПТАМИ SQL 425
Формируем скрипт БД 425
Выполнение скриптов, TFDScript 426
Проверка скрипта 428
Запуск скрипта 429
Прерывание скрипта 431
Состояние скрипта 431
Используем параметры 432
Контроль за событиями 432
Диалог обработки скриптов, TFDGUIxScriptDialog 433
29. ИМПОРТ И ЭКСПОРТ ДАННЫХ 435
Чтение данных 436
Компонент TFDBatchMoveSQLReader 436
Компонент TFDBatchMoveDataSetReader 437
Компонент TFDBatchMoveTextReader 437
Запись данных 439
Компонент TFDBatchMoveSQLWriter 439
Компонент TFDBatchMoveDataSetWriter 440
Компонент TFDBatchMoveTextWriter 440
Преобразования данных, TFDBatchMove 441
Особенности работы с текстовым источником 442
Настройка столбцов-получателей данных 443
Особенности управления транзакцией 444
Ведение протокола преобразования 444
Пример многопоточного импорта/экспорта 445
30. СБОР СИСТЕМНОЙ ИНФОРМАЦИИ 447
Сбор метаданных и TFDConnection 448
Сбор метаданных и TFDMetaInfoQuery 449
Сбор метаданных и TFDManager 451
Характеристики клиентского компьютера 452
Состояние процессора 452
Использование памяти 454
Параметры экрана 454
31. ОБРАБОТКА ИСКЛЮЧЕНИЙ 456
Реакция на сбои при соединении с БД 456
Базовые классы исключений FireDAC 458
Класс EFDException 459
Класс EFDDBEngineException 459
Отображение сведений об ошибке, диалог TFDGUIxErrorDialog 462
Обработка ИС силами TApplication 462
Настройка среды проектирования 464
32. ИНСТРУМЕНТАРИЙ МОНИТОРИНГА 465
Мониторинг клиента, TFDMoniFlatFileClientLink 465
Удаленный мониторинг 468
Утилита мониторинга FireDAC Monitor 469
Удаленный клиент, TFDMoniRemoteClientLink 470
33. МНОГОПОТОЧНЫЙ ДОСТУП К БД 471
Класс TThread 472
Запуск запроса SQL в отдельном потоке 474
Параметры соединения в многопоточном проекте 476
Управление соединениями, TFDManager 477
34. РАЗРАБОТКА БИБЛИОТЕК 479
Создание проекта DLL 480
Объявление и экспорт функций 481
Как научить в DLL соединяться c БД? 482
Пример выполнения запроса в DLL 483
Пример хранения форм в библиотеке 485
Вызов библиотеки из приложения 487
Явное подключение DLL 487
Неявное подключение DLL 489
ЧАСТЬ III. ПРОЕКТИРОВАНИЕ ИНТЕРФЕЙСА 491
35. ТРЕБОВАНИЯ К ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ 492
Сколько людей столько и мнений 492
Пользовательские критерии качества интерфейса 493
Рекомендации по проектированию 494
36. ИНТЕРФЕЙС РУКАМИ ПОЛЬЗОВАТЕЛЯ 497
Стили оформления приложения 497
Менеджер стилей TStyleManager 499
Настройка интерфейса во время выполнения приложения, диалог
TCustomizeDlg 502
Настройка горячих клавиш THotKey 506
Системный реестр, TRegIniFile 507
37. КОМПОНЕНТЫ DATA CONTROLS 510
Источник данных, TDataSource 510
Общие черты компонентов Data Controls 512
Сетка TDBGrid 513
Одновременный выбор нескольких строк 515
Колонки сетки 516
Обработка событий 523
Статический текст TDBText 528
Строка ввода TDBEdit 529
Многострочный редактор TDBMemo 531
Изображение TDBImage 532
Список TDBListBox 532
Комбинированный список TDBComboBox 533
Группа переключателей TDBRadioGroup 534
Кнопка выбора TDBCheckBox 534
Многопанельный редактор TDBCtrlGrid 535
Списки с полями подстановки 538
Список подстановки TDBLookupListBox 539
Комбинированный список TDBLookupComboBox 540
Навигатор TDBNavigator 540
38. ИЕРАРХИЧЕСКИЕ ДАННЫЕ 543
Дерево TTreeView 543
Пример работы с рекурсивными таблицами 545
Сбор данных 547
Новая запись 549
Редактирование записи 551
Удаление записи 553
Сортировка узлов 554
Переподчинение узлов 555
39. НЕСТАНДАРТНОЕ ПРЕДСТАВЛЕНИЕ ДАННЫХ 561
Компоненты списки 561
Список с флажками выбора TCheckListBox 563
Сетка строк TStringGrid 565
Пример работы с сеткой строк 569
Развитие примера 571
Список просмотра TListView 574
Хранение данных, коллекция TListItems 574
Элемент списка TListItem 575
Стиль представления данных 576
Особенности работы со стилем vsReport 576
Выбор элементов списка 578
Упорядочивание элементов 579
Поиск элементов 580
Группировка элементов 580
Пример работы со списком просмотра 581
40. ДИАГРАММЫ И ГРАФИКИ 588
Диаграмма TChart 588
Хранение графиков в диаграмме 589
Базовый класс графиков, TChartSeries 591
Легенда диаграммы TChartLegend 599
Координатные оси диаграммы TChartAxis 600
Масштабирование 603
Многостраничные диаграммы 606
Экспорт диаграмм 607
Печать диаграммы 607
Упорядочивание графиков в диаграмме 609
Обеспечение объемного вида диаграммы 609
Пример работы с TChart 610
Особенности диаграммы TDBChart 614
ПРИЛОЖЕНИЕ 1. МОДЕЛЬ БД "СКЛАД" ДЛЯ MYSQL 618
ПРИЛОЖЕНИЕ 2. ИНФОРМАЦИОННЫЕ ФУНКЦИИ MYSQL 619
ПРИЛОЖЕНИЕ 3. ПРИВИЛЕГИИ В MYSQL 620
ПРИЛОЖЕНИЕ 4. АРХИВ С ПРИМЕРАМИ 622
ЛИТЕРАТУРА 623