
- •Вводный раздел
- •1. Информационные системы. Основные понятия
- •Моделирование информационных систем
- •2. Архитектуры распределенного приложения с базой данных. Функции клиента и сервера при различных вариантах расслоения. Типовые клиенты доступа к бд на основе различных технологий.
- •Модель Клиент – Сервер
- •Трехуровневая модель
- •Распределенная (многоуровневая) модель
- •4 Технологии программ расширений
- •Тема 1. Средства взаимодействия клиента и сервера бд
- •1.1 Сервисы сети Internet. Сетевая архитектура osi.
- •1.2 Протоколы прикладного уровня в стеке tcp/ip. Унифицированный локатор ресурса при работе с бд
- •1.3 Блоки данных в стеке протоколов
- •Тема 2. Удаленные базы данных
- •2.1 Понятие удаленных баз данных
- •2.2 Инструментальные средства проектирования структуры бд. Утилиты автоматизированного проектирования бд.
- •2.3 Характеристика субд удаленного доступа
- •Тема 3. Разработка и эксплуатация серверной части
- •3.1 Проектирование структуры базы данных (на самостоятельное изучение) Вопросы для самостоятельной работы
- •3.2 Создание баз данных, таблиц и индексов
- •Удаление баз данных, таблиц
- •Изменение структуры таблиц
- •3.3 Типы данных в MySql
- •Integer и его вариации
- •3.4 Методы заполнения полей базы данных Использование insert
- •Использование replace
- •Использование delete
- •Использование truncate
- •Использование update
- •Загрузка данных с помощью load data infile
- •Тема 4. Разработка и эксплуатация клиентской части.
- •4.1 Простые запросы
- •4.2 Выбор строк с помощью where
- •Удаление повторений с помощью distinct
- •Выбор групп с помощью having
- •Сортировка результатов поиска с помощью order by
- •Ограничение результатов поиска с помощью limit
- •4.4 Сложные запросы Объединение двух таблиц
- •Объединение нескольких таблиц
- •Самообъединение таблиц
- •Типы объединений
- •4.5 Создание подзапросов
- •4.6 Встроенные функции MySql
- •Операторы
- •Типы таблиц MySql
- •Тема 5. Язык html как средство внешнего представления данных.
- •5.1 Основные правила проектирования пользовательского интерфейса
- •5.2. Построение абзацев в гипертекстовом документе
- •5.3 Построение заголовков в гипертекстовом документе
- •Тема 6. Разработка бизнес-слоя и интерактивных компонентов
- •6.1 Perl как средство разработки программ –приложения
- •6.2 Типы данных в Рerl
- •Переменные
- •Скалярные переменные
- •Массивы
- •Ассоциативные массивы
- •6.3 Конструкции языка Рerl Простые и составные операторы
- •Условные операторы
- •Оператор unless
- •Оператор do
- •Циклы и ветвления
- •Цикл until
- •Циклы for и foreach
- •Оператор безусловного перехода goto
- •Генерация динамических выражений с помощью функции eval
- •6.4 Подпрограммы
- •Использование пакетов для изоляции подпрограмм
- •6.5 Операторы языка Perl .Операторы сравнения
- •Логические операторы
- •6.6 Работа с файлами и строками
- •Функция chop
- •Функция index
- •Функция length
- •Функция substr
- •Функция join
- •Функция split
- •Функции для обработки списков
- •Функция reverse
- •Функция sort
- •Функции работы с массивами
- •Функции push и pop
- •Функция shift
- •Функция unshift
- •Функция splice
- •Функция scalar
- •Функция grep
- •Функции обработки ассоциативных массивов
- •Функция keys
- •Функция values
- •Функция each
- •Функция delete
- •Пример скриптов для выполнения практического задания
- •1. Добавление информации в базу (на примере винного погреба -добавление страны)
- •Часть 1
- •Удаление информации из базы (удаление страны)
- •Часть 2
- •Часть 3
- •Поиск информации в базе данных
- •Занесение новой информации во все таблицы базы данных
- •Часть 1
- •Часть 2
4.6 Встроенные функции MySql
В MySQL предлагает широкий выбор встроенных операторов и функций, которые могут оказаться полезными при создании запросов. Большинство этих функций предназначено для использования в выражениях SELECT и WHERE. Существуют также некоторые специальные функции группировки для использования в выражении GROUP BY. Число доступных для использования функций очень велико, поэтому мы рассмотрим только наиболее полезные из них.
Здесь следует сделать одно важное замечание. В MySQL любое выражение, содержащее NULL, оценивается как NULL.
Операторы
В MySQL используются три главных типа операторов: знаки арифметических операций, операторы сравнения и логические операторы. Арифметические операции
В MySQL используются обычные арифметические операции: сложение (+), вычитание (-), умножение (*) и деление (/). Деление на нулевое значение дает безопасный результат NULL.
Операторы сравнения
При работе с операторами сравнения необходимо помнить о том, что, за исключением нескольких особо оговариваемых случаев, сравнение чего-либо со значением NULL дает в результате NULL.
Рассмотрим операторы сравнения. Наиболее часто используемые из них приведены в таблице
Логические
операторы
MySQL
поддерживает все обычные логические
операции, которые можно использовать
в выражениях объединения. Логические
выражения в MySQL
могут принимать
значения 1 (истина), 0 (ложь) или NULL.
Кроме того, MySQL
интерпретирует
любое ненулевое значение, отличное от
NULL,
как значение "истина".
Некоторые
из таблиц истинности, содержащие
значения NULL,
немного отличаются
от того, что можно было бы ожидать.
Логические операторы приведены в
таблице
Типы таблиц MySql
Проектирование системы управления базой данных, подобно многим другим задачам проектирования, подразумевает множество компромиссных решений. Например, многие задачи базы данных должны обеспечиваться решениями, предполагающими безопасность транзакций, но такие решения требуют больше времени для их выполнения, больше дискового пространства и памяти. Создатели MySQL делегировали выбор некоторых из компромиссных решений вам, разработчику базы данных, предложив на выбор несколько типов таблиц. В зависимости от приложения вы можете выбрать один из типов таблиц, обеспечивающих безопасность транзакций, или же с помощью другого типа обеспечить более высокую производительность, не гарантируя безопасность транзакций. Так или иначе, необходимо знать, какие компромиссы вы при этом допускаете.
Вы уже могли обратить внимание, что типы таблиц мы называли механизмами хранения. Это отражает тот факт, что некоторые из типов таблиц используют большие самостоятельные фрагменты программного кода со своими системами кэширования, индексации, блокировки и доступа к диску. Это отражает также суть назначения базы данных: хранение информации.
Представьте на минуту, что вы имеете дело с базой данных, содержащей информацию о банковских счетах. Если необходимо перевести 1000 долларов с одного счета на другой, вам потребуется как минимум два запроса SQL: один, чтобы снять 1000 долларов с одного счета, и еще один, чтобы добавить 1000 долларов ко второму счету. Существует опасность (например, в случае отключения электропитания), что один запрос завершит свою работу, а второй — нет. Было бы очень желательно, чтобы в подобных случаях завершиться успешно могли либо оба из пары запросов, либо ни один из них, чтобы данные в базе данных остались согласованными.
Чтобы обеспечить безопасность транзакций, таблицы должны предусматривать возможность указания того, что некоторый набор запросов должен трактоваться как одна неделимая единица — транзакция. Транзакция должна либо завершиться полностью, либо база данных должна выполнить откат, т.е. возвратиться к тому же состоянию, которое имело место до начала выполнения транзакции.
К типам таблиц, доступных в MySQL, относятся следующие:
ISAM
MylSAM
InnoDB
BerkeleyDB (BDB)
MERGE
HEAP
Безопасность транзакций обеспечивают таблицы InnoDB и BerkeleyDB. Остальные (ISAM, MylSAM, MERGE и HEAP) безопасность транзакций не обеспечивают.
Таблицы ISAM
Таблицы ISAM включены в MySQL исключительно для поддержки совместимости. Их функциональные возможности полностью поддерживаются таблицами MyISAM.
Таблицы ISAM предлагают быстрый, но не защищенный с точки зрения транзакций, механизм хранения данных. Практически все, что можно сказать о таблицах ISAM, будет верно и для таблиц MyISAM, но относящиеся к более старому стандарту таблицы ISAM имеют ряд ограничений.
Улучшения, предложенные в таблицах MyISAM, включают следующее.
Мобильность таблиц. Таблицы, сохраненные на диске или другом носителе, можно загрузить в другую систему, поддерживающую MySQL, независимо от платформы. Для таблиц ISAM это не так.
Поддержка очень больших таблиц. Размеры таблицы ISAM имеют жесткое ограничение — 4 Гбайт. MyISAM позволяет создавать таблицы настолько большие, насколько большими им позволяет быть операционная система, в которой выполняется MySQL. Это может оказаться важным небольшому числу пользователей, но это означает, что к выбору операционной (и файловой) системы следует отнестись весьма внимательно. Многие файловые системы имеют ограничение 2 Гбайт для размера файла. (Обратите внимание на то, что это ограничение можно на самом деле обойти, используя таблицы MERGE.)
Более эффективное использование дискового пространства. Сокращен объем пустого пространства и уменьшена фрагментация.
Меньшие ограничения на ключи. Таблицы ISAM допускают использование 16 ключей на таблицу и максимальную длину ключа по умолчанию 256 байт. Таблицы MyISAM допускают 64 ключа на таблицу и максимальную длину ключа по умолчанию 1024 байт.
Таблицы ISAM должны восприниматься как нежелательные.
Таблицы MyISAM
Таблицы MyISAM обеспечивают очень быстрый, но не защищенный с точки зрения транзакций, механизм хранения данных. Они обеспечивают высокую производительность в большинстве ситуаций даже при наличии ошибок в структуре базы данных
Таблицы MyISAM могут быть одного из трех типов: динамические, статические или сжатые. Таблица автоматически становится динамической или статической в зависимости от определения ее столбцов. Сжатые таблицы должны создаваться специально с помощью средства myisampack.
Таблицы со строками фиксированной длины будут статическими, а таблицы со строками переменной длины — динамическими.
Статическая таблица имеет целый ряд преимуществ. Она обеспечивает более быстрый поиск по сравнению с динамической или сжатой таблицей. Для базы данных очень легко извлечь конкретную запись на основе индекса, когда каждая запись находится на определенном расстоянии от начала файла. Данные проще кэшировать. Менее вероятно возникновение серьезных повреждений в случае отказа системы — возможности восстановления данных, как правило, легко обеспечивают восстановление всех строк, кроме одной поврежденной.
Недостатком статических таблиц является то, что размещение реальных данных в столбцах фиксированного размера, очевидно, не способствует экономии дискового пространства. Это может быть не слишком большой ценой для данных варьирующих в небольших пределах (например, для имен пользователей), но может оказаться неприемлемым для данных, которые сильно варьируют в размерах.
Динамические таблицы в рамках MySQL требуют более сложных методов управления. В этом случае и кэширование, и поиск, и восстановление записей для механизма хранения оказываются не такими простыми задачами. Причиной отчасти является то, что данные варьируют в размерах, но также и то, что они могут оказаться фрагментированными. Если строка изменяется и становится больше, часть данных останется на исходном месте, а часть может сохраниться в виде нового фрагмента где-нибудь в другом месте файла. Это значит, что сегмент файла, помещенный в кэш операционной системой, не обязательно будет содержать все части соответствующей строки. Могут возникнуть трудности и при восстановлении повреждений, поскольку в случае потери фрагментов или ссылок будет совсем не очевидно, каким строкам должны принадлежать распознанные части данных.
Таблицы InnoDB
Следующим типом таблиц, который мы будем обсуждать, является тип InnoDB. Данный тип представляет собой механизм хранения, обеспечивающий быструю работу и безопасность транзакций. Таблицы InnoDB предлагают следующие возможности.
Транзакции.
Блокировка на уровне строк. Это означает, что при выполнении запроса недоступной для других пользователей будет только строка, используемая в данном запросе. Большинство других механизмов хранения (за исключением BDB) предлагает блокировку на уровне таблиц — пока один процесс обновляет таблицу, таблица не доступна другим процессам.
Поддержка внешних ключей. Примеры из предыдущих глав, в которых используются внешние ключи, не будут работать с другими типами таблиц.
Согласованное неблокирующее чтение в операторах SELECT. (Эта идея позаимствована из Oracle.)
Механизм InnoDB имеет свои собственные опции настройки, отдельный каталог и свои особенности хранения данных. В то время как механизм MyISAM для хранения каждой таблицы использует отдельный файл, механизм InnoDB хранит все таблицы и индексы в специальном пространстве таблиц, и это означает, что содержимое одной таблицы может размещаться в нескольких файлах. Это дает возможность механизму InnoDB создавать очень большие таблицы, которые не обязаны подчиняться каким-либо ограничениям на размеры файлов, налагаемым операционной системой. Однако, следует учитывать то, что для хранения одного и того же объема полезной информации таблицы InnoDB используют значительно больше дискового пространства, чем таблицы MylSAM.
InnoDB является одной из самых быстрых систем, обеспечивающих безопасность транзакций, но обеспечение этой безопасности требует жертв. Для большинства реальных сценариев таблицы MyISAM будут быстрее, но разница, в общем, не будет слишком впечатляющей.