MySQL 5 (+CD)

Максим Валерьевич Кузнецов

Оглавление Введение 1
Для кого и о чем эта книга 1
Благодарности 2
ЧАСТЬ I. ЗНАКОМСТВО С SQL 3
Глава 1. История развития баз данных. Понятие реляционной базы данных 5
1.1. История развития СУБД. Реляционные базы данных 6
1.1.1. Иерархические базы данных 6
1.1.2. Сетевые базы данных 8
1.2. Особенности реляционных баз данных 9
1.2.1. Первичные ключи 11
1.2.2. Нормализация базы данных 13
1.3. СУБД и сети 14
1.3.1. Централизованная архитектура 15
1.3.2. Архитектура "клиент-сервер" 16
1.3.3. Трехуровневая архитектура Интернета 17
1.3.4. Кластерная модель 19
1.4. Как работают базы данных и что такое SQL? 20
1.5. Версии MySQL 21
1.5.1. Что нового в MySQL 4.1? 23
1.5.2. Что нового в MySQL 5.0? 23
Глава 2. Установка MySQL 5 24
2.1. Получение дистрибутива 24
2.2. Установка на платформу Windows 25
2.3. Установка на платформу Linux 39
Глава 3. Работа с утилитами MySQL 43
3.1. Утилита mysql 44
3.2. Утилита mysqldump 63
Глава 4. Создание баз данных и таблиц. Типы данных 69
4.1. Создание базы данных 69
4.2. Создание таблицы 73
4.3. Типы данных 76
4.3.1. Числовые данные 77
4.3.2. Строковые данные 80
4.3.3. Календарные данные 83
4.3.4. Тип данных NULL 86
4.3.5. Выбор типа данных 88
4.4. Учебная база данных 89
Глава 5. Индексы 93
5.1. Первичный ключ 94
5.2. Обычный и уникальный индексы 98
Глава 6. Добавление данных 103
6.1. Однострочный оператор INSERT 103
6.2. Многострочный оператор INSERT 110
6.3. Отложенная вставка записей 111
6.4. Пакетная загрузка данных 111
6.5. Утилита mysqlimport 115
Глава 7. Выборка данных 118
7.1. Изменение количества и порядка следования столбцов 118
7.2. Условия 121
7.3. Сортировка 124
7.4. Ограничение выборки 128
7.5. Использование функций 129
7.6. Группировка записей 132
7.7. Объединение таблиц 138
7.8. Сохранение результатов во внешний файл 143
Глава 8. Многотабличные запросы 147
8.1. Перекрестное объединение таблиц 147
8.2. Объединение таблиц при помощи JOIN 159
Глава 9. Удаление данных 167
9.1. Оператор DELETE 167
9.2. Оператор TRUNCATE TABLE 168
9.3. Удаление из нескольких таблиц 169
Глава 10. Обновление данных 173
10.1. Оператор UPDATE 173
10.2. Многотабличный оператор UPDATE 178
10.3. Оператор REPLACE 181
ЧАСТЬ II. СЛОЖНЫЕ ВОПРОСЫ MYSQL 183
Глава 11. Типы и структура таблиц 185
11.1. MyISAM 185
11.2. MERGE 186
11.3. MEMORY (HEAP) 188
11.4. EXAMPLE 189
11.5. BDB (BerkeleyDB) 190
11.6. InnoDB 191
11.7. NDB Cluster 192
11.8. ARCHIVE 192
11.9. CSV 193
11.10. FEDERATED 194
11.11. BLACKHOLE 196
Глава 12. Создание таблиц и удаление таблиц 198
12.1. Оператор CREATE TABLE 198
12.1.1. Структура таблицы 199
12.1.2. Параметры таблицы 206
12.2. Оператор DROP TABLE 211
Глава 13. Редактирование структуры таблиц 213
13.1. Добавление и удаление столбцов 213
13.2. Изменение уже существующих столбцов 216
13.3. Добавление и удаление индексов 218
13.4. Преобразование параметров таблицы 220
Глава 14. Приведение типов 225
14.1. Ключевое слово BINARY 225
14.2. Функция CAST() 226
14.3. Функция CONVERT() 228
14.4. Поддержка кодировок 229
14.5. Преобразование кодировок 237
14.6. Применение ключевого слова COLLATE 238
Глава 15. Операторы и математические функции 240
15.1. Операторы 240
15.1.1. Арифметические операторы 240
15.1.2. Операторы сравнения 245
15.1.3. Логические операторы 257
15.1.4. Битовые операторы 259
15.1.5. Приоритет операторов 265
15.2. Математические функции 266
15.2.1. Функция ABS() 266
15.2.2. Функция ACOS() 267
15.2.3. Функция ASIN() 267
15.2.4. Функция ATAN() 267
15.2.5. Функция ATAN2() 268
15.2.6. Функция CEILING() 268
15.2.7. Функция COS() 269
15.2.8. Функция COT() 270
15.2.9. Функция CRC32() 270
15.2.10. Функция DEGREES() 270
15.2.11. Функция EXP() 271
15.2.12. Функция FLOOR() 271
15.2.13. Функция LOG() 272
15.2.14. Функция LOG2() 272
15.2.15. Функция LOG10() 273
15.2.16. Функция MOD() 273
15.2.17. Функция PI() 273
15.2.18. Функция POW() 273
15.2.19. Функция RADIANS() 274
15.2.20. Функция RAND() 274
15.2.21. Функция ROUND() 275
15.2.22. Функция SIGN() 276
15.2.23. Функция SIN() 277
15.2.24. Функция SQPT() 277
15.2.25. Функция TAN() 277
15.2.26. Функция TRUNCATE() 278
Глава 16. Функции даты и времени 279
16.1. Функция ADDDATE() 279
16.2. Функция ADDTIME() 285
16.3. Функция CONVERT_TZ() 286
16.4. Функция CURDATE() 286
16.5. Функция CURTIME() 287
16.6. Функция DATE() 287
16.7. Функция DATEDIFF() 288
16.8. Функция DATE_FORMAT() 288
16.9. Функция DAY() 291
16.10. Функция DAYNAME() 291
16.11. Функция DAYOFMONTH() 292
16.12. Функция DAYOFWEEK() 293
16.13. Функция DAYOFYEAR() 293
16.14. Функция EXTRACT() 293
16.15. Функция FROM_DAYS() 295
16.16. Функция FROM_UNIXTIME() 295
16.17. Функция GET_FORMAT() 297
16.18. Функция HOUR() 298
16.19. Функция LAST_DAY() 299
16.20. Функция MAKEDATE() 300
16.21. Функция MAKETIME() 301
16.22. Функция MICROSECOND() 301
16.23. Функция MINUTE() 302
16.24. Функция MONTH() 302
16.25. Функция MONTHNAME() 302
16.26. Функция NOW() 303
16.27. Функция PERIOD_ADD() 304
16.28. Функция PERIOD_DIFF() 304
16.29. Функция QUARTER() 305
16.30. Функция SECOND() 305
16.31. Функция SEC_TO_TIME() 305
16.32. Функция STR_TO_DATE() 306
16.33. Функция SUBDATE() 307
16.34. Функция SUBTIME() 307
16.35. Функция TIME() 308
16.36. Функция TIMEDIFF() 309
16.37. Функция TIMESTAMP() 309
16.38. Функция TIMESTAMPADD() 310
16.39. Функция TIMESTAMPDIFF() 311
16.40. Функция TIME_FORMAT() 312
16.41. Функция TIME_TO_SEC() 312
16.42. Функция TO_DAYS() 313
16.43. Функция UNIX_TIMESTAMP() 314
16.44. Функция UTC_DATE() 314
16.45. Функция UTC_TIME() 315
16.46. Функция UTC_TIMESTAMP() 315
16.47. Функция WEEK() 316
16.48. Функция WEEKDAY() 317
16.49. Функция WEEKOFYEAR() 317
16.50. Функция YEAR() 318
16.51. Функция YEARWEEK() 318
Глава 17. Строковые функции 320
17.1. Функция ASCII() 320
17.2. Функция BIN() 321
17.3. Функция BIT_LENGTH() 321
17.4. Функция CHAR() 321
17.5. Функция CHAR_LENGTH() 323
17.6. Функция CHARSET() 324
17.7. Функция COLLATION() 325
17.8. Функция COMPRESS() 325
17.9. Функция CONCAT() 327
17.10. Функция CONCAT_WS() 328
17.11. Функция CONV() 329
17.12. Функция ELT() 329
17.13. Функция EXPORT_SET() 330
17.14. Функция FIELD() 331
17.15. Функция FIND_IN_SET() 331
17.16. Функция FORMAT() 332
17.17. Функция HEX() 333
17.18. Функция INSERT() 333
17.19. Функция INSTR() 334
17.20. Функция LEFT() 335
17.21. Функция LENGTH() 335
17.22. Функция LOAD_FILE() 335
17.23. Функция LOCATE() 336
17.24. Функция LOWER() 337
17.25. Функция LPAD() 337
17.26. Функция LTRIM() 338
17.27. Функция MAKE_SET() 338
17.28. Функция MID() 338
17.29. Функция OCT() 340
17.30. Функция ORD() 340
17.31. Функция POSITION() 341
17.32. Функция QUOTE() 341
17.33. Функция REPEAT() 341
17.34. Функция REPLACE() 342
17.35. Функция REVERSE() 344
17.36. Функция RIGHT() 344
17.37. Функция RPAD() 345
17.38. Функция RTRIM() 345
17.39. Функция SOUNDEX() 346
17.40. Функция SPACE() 346
17.41. Функция SUBSTRING() 346
17.42. Функция SUBSTRING_INDEX() 348
17.43. Функция TRIM() 348
17.44. Функция UNCOMPRESS() 349
17.45. Функция UNCOMPRESSED_LENGTH() 350
17.46. Функция UNHEX() 351
17.47. Функция UPPER() 351
Глава 18. Безопасность и MySQL 352
18.1. Функции AES_ENCRYPT() и AES_DECRYPT() 352
18.2. Функции ENCODE() и DECODE() 355
18.3. Функции DES_ENCRYPT() и DES_DECRYPT() 355
18.4. Функция ENCRYPT() 356
18.5. Функция MD5() 357
18.6. Функция PASSWORD() 358
18.7. Функция SHA1() 359
Глава 19. Поиск и регулярные выражения 361
19.1. Оператор LIKE 361
19.2. Оператор NOT LIKE 366
19.3. Оператор SOUND LIKE 367
19.4. Оператор RLIKE (REGEXP) 367
19.5. Оператор NOT RLIKE 379
19.6. Функция STRCMP() 380
Глава 20. Полнотекстовый поиск 381
20.1. Индекс FULLTEXT 381
20.2. Конструкция MATCH (...) AGAINST (...) 383
20.3. Логический режим 388
20.4. Режим расширения запроса 395
Глава 21. Функции, применяемые вместе с конструкцией GROUP BY 397
21.1. Функция AVG() 397
21.2. Функция BIT_AND() 400
21.3. Функция BIT_OR() 401
21.4. Функция BIT_XOR() 402
21.5. Функция COUNT() 403
21.6. Функция GROUP_CONCAT() 406
21.7. Функция MIN() 408
21.8. Функция MAX() 409
21.9. Функция STD() 410
21.10. Функция STDDEV_SAMP() 411
21.11. Функция SUM() 412
21.12. Функция VAR_POP() 412
21.13. Функция VAR_SAMP() 413
21.14. Конструкция WITH ROLLUP() 413
Глава 22. Разные функции 417
22.1. Функции управления потоком выполнения 417
22.1.1. Функция CASE() 417
22.1.2. Функция IF() 418
22.1.3. Функция IFNULL() 420
22.1.4. Функция NULLIF() 421
22.2. Информационные функции 421
22.2.1. Функция BENCHMARK() 422
22.2.2. Функция CONNECTION_ID() 422
22.2.3. Функция CURRENT_USER() 423
22.2.4. Функция DATABASE() 423
22.2.5. Функция FOUND_ROWS() 424
22.2.6. Функция LAST_INSERT_ID() 425
22.2.7. Функция ROW_COUNT() 427
22.2.8. Функция USER() 429
22.2.9. Функция VERSION() 429
22.3. Разные функции 430
22.3.1. Функция DEFAULT() 430
22.3.2. Функция GET_LOCK() 432
22.3.3. Функция INET_ATON() 433
22.3.4. Функция INET_NTOA() 433
22.3.5. Функция IS_FREE_LOCK() 434
22.3.6. Функция IS_USED_LOCK() 435
22.3.7. Функция NAME_CONST() 435
22.3.8. Функция RELEASE_LOCK() 436
22.3.9. Функция SLEEP() 436
22.3.10. Функция UUID() 436
Глава 23. Переменные и временные таблицы 438
23.1. Переменные SQL 438
23.2. Временные таблицы 442
Глава 24. Вложенные запросы 446
24.1. Вложенный запрос как скалярный операнд 449
24.2. Вложенные запросы, возвращающие несколько строк 452
24.2.1. Ключевое слово IN 453
24.2.2. Ключевое слово ANY (SOME) 454
24.2.3. Ключевое слово ALL 456
24.3. Проверка на существование 458
24.4. Коррелированные запросы 461
24.5. Вложенные запросы, возвращающие несколько столбцов 461
24.6. Подзапросы в конструкции FROM 463
24.7. Вложенные запросы в операторе CREATE TABLE 466
24.8. Вложенные запросы в операторе INSERT 469
Глава 25. Внешние ключи и ссылочная целостность 473
Глава 26. Транзакции и блокировки 481
26.1. Транзакции 481
26.2. Блокировка таблиц 487
Глава 27. Управление учетными записями пользователей 490
27.1. Учетные записи СУБД MySQL 490
27.2. Оператор CREATE USER 493
27.3. Оператор DROP USER 495
27.4. Оператор RENAME USER 497
27.5. Оператор GRANT 498
27.6. Оператор REVOKE 508
ЧАСТЬ III. СРЕДСТВА АДМИНИСТРИРОВАНИЯ СУБД MYSQL 509
Глава 28. Администрирование СУБД MySQL 511
28.1. Параметры запуска сервера MySQL 511
28.2. Системные переменные сервера 519
28.3. Режим SQL-сервера 540
28.4. Журнальные файлы 544
28.4.1. Журнальные таблицы 544
28.4.2. Журнал ошибок 545
28.4.3. Общий журнал запросов 546
28.4.4. Бинарный журнал регистраций 546
28.4.5. Утилита mysqlbinlog 549
28.4.6. Журнал медленных запросов 551
28.5. Оператор CACHE INDEX 552
28.6. Оператор FLUSH 553
28.7. Оператор KILL 554
28.8. Оператор LOAD INDEX INTO CACHE 555
28.9. Оператор RESET 555
28.10. Утилита mysqladmin 556
Глава 29. Оператор SET 560
Глава 30. Оператор SHOW 573
30.1. Оператор SHOW CHARACTER SET 574
30.2. Оператор SHOW COLLATION 575
30.3. Оператор SHOW COLUMNS 576
30.4. Оператор SHOW CREATE DATABASE 579
30.5. Оператор SHOW CREATE TABLE 579
30.6. Оператор SHOW DATABASES 580
30.7. Оператор SHOW ENGINES 581
30.8. Оператор SHOW ENGINE 582
30.9. Оператор SHOW ERRORS 583
30.10. Оператор SHOW GRANTS 585
30.11. Оператор SHOW INDEX 586
30.12. Оператор SHOW PLUGIN 589
30.13. Оператор SHOW PRIVILEGES 589
30.14. Оператор SHOW PROCESSLIST 593
30.15. Оператор SHOW STATUS 596
30.16. Оператор SHOW TABLE STATUS 601
30.17. Оператор SHOW TABLES 604
30.18. Оператор SHOW VARIABLES 606
30.19. Оператор SHOW WARNINGS 607
30.20. Утилита mysqlshow 610
Глава 31. Предотвращение катастроф и восстановление 613
31.1. Оператор CHECK TABLE 613
31.2. Оператор ANALYZE TABLE 616
31.3. Оператор CHECKSUM TABLE 617
31.4. Оператор OPTIMIZE TABLE 619
31.5. Оператор REPAIR TABLE 620
31.6. Оператор BACKUP TABLE 622
31.7. Оператор RESTORE TABLE 623
31.8. Резервное копирование 625
31.9. Утилита mysqlcheck 627
Глава 32. Репликация в MySQL 630
32.1. Введение в репликацию 630
32.2. Детали реализации процесса репликации 631
32.2.1. Состояние потока репликации главного сервера 634
32.2.2. Состояние потока ввода/вывода подчиненного сервера 634
32.2.3. Состояние потока обработки ретрансляционных журналов подчиненного сервера 636
32.2.4. Журнал ретрансляции и файлы состояния 636
32.3. Настройка репликации 638
32.4. Совместимость репликации между версиями MySQL 641
32.5. Параметры запуска репликации 641
32.6. Операторы управления главным сервером 646
32.6.1. Оператор PURGE MASTER LOGS 647
32.6.2. Оператор RESET MASTER 647
32.6.3. Оператор SET SQL_BIN_LOG 647
32.6.4. Оператор SHOW BINLOG EVENTS 648
32.6.5. Оператор SHOW MASTER LOGS 648
32.6.6. Оператор SHOW MASTER STATUS 648
32.6.7. Оператор SHOW SLAVE HOSTS 649
32.7. Операторы управления подчиненными серверами 649
32.7.1. Оператор CHANGE MASTER TO 649
32.7.2. Оператор LOAD DATA FROM MASTER 651
32.7.3. Оператор LOAD TABLE FROM MASTER 652
32.7.4. Функция MASTER_POS_WAIT() 652
32.7.5. Оператор RESET SLAVE 653
32.7.6. Оператор SET GLOBAL SQL_SLAVE_SKIP_COUNTER 653
32.7.7. Оператор SHOW SLAVE STATUS 653
32.7.8. Оператор START SLAVE 656
32.7.9. Оператор STOP SLAVE 657
ЧАСТЬ IV. НОВОВВЕДЕНИЯ MYSQL 5.0 659
Глава 33. Хранимые процедуры 661
33.1. Хранимые процедуры и привилегии 662
33.2. Создание хранимой процедуры 662
33.2.1. Тело процедуры 664
33.2.2. Параметры процедуры 668
33.2.3. Работа с таблицами базы данных 671
33.2.4. Хранимые функции 679
33.3. Группа характеристик хранимых процедур 681
33.4. Операторы управления потоком данных 684
33.4.1. Оператор IF...THEN...ELSE 684
33.4.2. Оператор CASE 688
33.4.3. Оператор WHILE 691
33.4.4. Оператор REPEAT 696
33.4.5. Оператор LOOP 697
33.4.6. Оператор GOTO 698
33.5. Метаданные 700
33.5.1. Оператор SHOW PROCEDURE STATUS 700
33.5.2. Оператор SHOW CREATE 702
33.5.3. Извлечение информации из таблицы mysql.proc 703
33.6. Удаление хранимых процедур 706
33.7. Редактирование хранимых процедур 707
33.8. Обработчики ошибок 708
33.9. Курсоры 714
Глава 34. Триггеры 718
34.1. Оператор CREATE TRIGGER 718
34.2. Оператор DROP TRIGGER 722
Глава 35. Представления 723
35.1. Создание представлений 724
35.2. Удаление представлений 738
35.3. Редактирование представлений 739
35.4. Оператор SHOW CREATE VIEW 739
Глава 36. Информационная схема 741
36.1. Представление CHARACTER_SETS 742
36.2. Представление COLLATIONS 745
36.3. Представление COLLATION_CHARACTER_SET_APPLICABILITY 747
36.4. Представление COLUMN_PRIVILEGES 748
36.5. Представление COLUMNS 751
36.6. Представление KEY_COLUMN_USAGE 755
36.7. Представление ROUTINES 757
36.8. Представление SCHEMA_PRIVILEGES 761
36.9. Представление SCHEMATA 763
36.10. Представление STATISTICS 765
36.11. Представление TABLE_CONSTRAINTS 769
36.12. Представление TABLE_PRIVILEGES 770
36.13. Представление TABLES 772
36.14. Представление USER_PRIVILEGES 775
36.15. Представление VIEWS 776
ЧАСТЬ V. ВЗАИМОДЕЙСТВИЕ MYSQL С ЯЗЫКАМИ ПРОГРАММИРОВАНИЯ 779
Глава 37. Взаимодействие MySQL и C/С++ 781
37.1. Взаимодействие с MySQL в Linux 781
37.1.1. Типы данных 786
37.1.2. Функции интерфейса C 791
37.2. Взаимодействие с MySQL в Windows 815
Глава 38. Взаимодействие MySQL и Perl 838
Глава 39. Взаимодействие MySQL и PHP 844
39.1. Функция mysql_connect() 844
39.2. Функция mysql_close() 846
39.3. Функция mysql_select_db() 847
39.4. Функция mysql_query() 850
39.5. Функция mysql_result() 851
39.6. Функция mysql_fetch_row() 852
39.7. Функция mysql_fetch_assoc() 853
39.8. Функция mysql_fetch_array() 855
39.9. Функция mysql_fetch_object() 858
39.10. Функция mysql_num_rows() 859
39.11. Система регистрации 862
39.12. Система авторизации 871
39.13. Базовая HTTP-авторизация 873
39.14. Пользователи online 876
39.15. Постраничная навигация 879
39.16. Алфавитная навигация 883
39.17. Сортировка 885
39.18. Двойной выпадающий список 888
39.19. Удаление сразу нескольких позиций 894
39.20. Хранение MP3-файлов в базе данных 897
39.21. Хранение изображений в базе данных 901
Заключение 907
ПРИЛОЖЕНИЯ 909
Приложение 1. Пространственные расширения MySQL 911
П1.1. Геометрическая модель OpenGIS 912
П1.1.1. Класс Geometry 913
П1.1.2. Класс Point 914
П1.1.3. Класс Curve 915
П1.1.4. Класс LineString 915
П1.1.5. Класс Surface 916
П1.1.6. Класс Polygon 916
П1.1.7. Класс GeometryCollection 917
П1.1.8. Класс MultiPoint 917
П1.1.9. Класс MultiCurve 917
П1.1.10. Класс MultiString 918
П1.1.11. Класс MultiSurface 918
П1.1.12. Класс MultiPolygon 918
П1.2. Форматы пространственных данных 918
П1.2.1. Объект Point 919
П1.2.2. Объект LineString 921
П1.2.3. Объект Polygon 921
П1.2.4. Объект MultiPoint 922
П1.2.5. Объект MultiLineString 923
П1.2.6. Объект MultiPolygon 924
П1.2.7. Объект GeometryCollection 925
П1.3. Работа с геометрическими элементами в MySQL 926
П1.3.1. Функция PointFromText() 927
П1.3.2. Функция PointFromWKB() 929
П1.3.3. Функция Point() 930
П1.3.4. Функция LineFromText() 930
П1.3.5. Функция LineFromWKB() 931
П1.3.6. Функция LineString() 931
П1.3.7. Функция PolyFromText() 933
П1.3.8. Функция PolyFromWKB() 933
П1.3.9. Функция Polygon() 934
П1.3.10. Функция GeomFromText() 935
П1.3.11. Функция GeomFromWKB() 936
П1.3.12. Функция MPointFromText() 936
П1.3.13. Функция MPointFromWKB() 937
П1.3.14. Функция MultiPoint() 937
П1.3.15. Функция MLineFromText() 938
П1.3.16. Функция MLineFromWKB() 939
П1.3.17. Функция MultiLineString() 939
П1.3.18. Функция MPolyFromText() 940
П1.3.19. Функция MPolyFromWKB() 941
П1.3.20. Функция MultiPolygon() 941
П1.3.21. Функция GeomCollFromText() 942
П1.3.22. Функция GeomCollFromWKB() 943
П1.3.23. Функция GeometryCollection() 943
П1.4. Общие функции геометрических объектов 944
П1.4.1. Функция Dimension() 945
П1.4.2. Функция Envelope() 945
П1.4.3. Функция GeometryType() 948
П1.4.4. Функция SRID() 949
П1.5. Функции для работы с объектом Point 949
П1.5.1. Функция X() 949
П1.5.2. Функция Y() 950
П1.6. Функции для работы с объектом LineString 951
П1.6.1. Функция EndPoint() 951
П1.6.2. Функция StratPoint() 951
П1.6.3. Функция PointN() 952
П1.6.4. Функция NumPoints() 953
П1.6.5. Функция GLength() 953
П1.6.6. Функция IsClosed() 954
П1.7. Функции для работы с объектом MultiLineString 955
П1.7.1. Функция GLenght() 955
П1.7.2. Функция IsClosed() 956
П1.8. Функции для работы с объектом Polygon 957
П1.8.1. Функция Area() 957
П1.8.2. Функция ExteriorRing() 959
П1.8.3. Функция InteriorRingN() 960
П1.8.4. Функция NumInteriorRings() 961
П1.9. Функции для работы с объектом MultiPolygon 961
П1.9.1. Функция Area() 961
П1.10. Функции для работы с объектом GeometryCollection 962
П1.10.1. Функция GeometryN() 962
П1.10.2. Функция NumGeometries() 963
П1.11. Функции для проверки отношения минимальных ограничивающих прямоугольников 964
П1.11.1. Функция MBRContains() 964
П1.11.2. Функция MBRDisjoint() 964
П1.11.3. Функция MBREqual() 966
П1.11.4. Функция MBRIntersects() 967
П1.11.5. Функция MBROverlaps() 968
П1.11.6. Функция MBRTouches() 970
П1.11.7. Функция MBRWithin() 970
П1.12. Пространственные индексы 971
Приложение 2. Описание компакт-диска 973
Предметный указатель 975
XVI Оглавление XV Оглавление