|
Программирование >> Программный интерфейс приложений
Преобразование ошибочных значений и значений, лежащих вне диапазона в этом случае работает принцип: мусор на входе, мусор на выходе . Если данные не проверяются при их вводе, нет никакой гарантии, что будут получены верные данные. Определим детально основные принципы обработки ошибочных значений и значений, лежаших вне допустимого диапазона. Если оба оператора являются целыми числами, они сравниваются как целые числа. Все строковые типы (за исключением типов enum и set) при вводе слишком длинных строк усекаются Допустимые значения для типов enum и set перечислены в момент объявления столбца. При попытке присвоить значение, которое отсутствует в этом списке, столбцу присваивается значение, сигнализирующее об ошибке (т.е. пустая строка, соответствующая в этом случае нулевому значению). При присвоении столбцу, объявленному как set, отсутствующего в списке значения, это значение игнорируется, и столбцу присваивается значение из оставшегося множества. При присвоении ошибочных календарных значений столбцам присваиваются соответствующие нулевые значения для типа (см. табл. 2 11). При присвоении значений, не попадающих в допустимый для этого типа диапазон, столбцам всех календарных типов (исключая time) может быть присвоено нулевое значение, пустое или любое другое значение (другими словами, результаты трудно предсказать). Возникновение таких ситуаций при выполнении операторов alter table, load data, update И Оператора insert в операции многострочного добавления обязательно диагностируется. В программе mysql эта информация выводится в строке состояния после выполнения запроса. При программировании запроса средствами языка программирования эту информацию можно получить другими способами. При работе с помощью интерфейса MySQL С API для получения этой информации можно вызвать функцию mysql inf о {). При работе с помощью интерфейса Perl DBI API для получения этой информации можно воспользоваться атрибутом mysql info, задаваемым в момент подключения к базе данных. Выдается информация о номере предупреждения. Просмотреть, какие строки подвергались изменениям, можно с помощью запроса select ... into outfile. Синтаксис и использование языка SQL Для работы с MySQL необходимо отличное знание языка SQL. Оно необходимо не только для интерактивной работы с клиентской программой mysql, являющейся передатчиком операторов SQL с кпиента на сервер. Знание SQL необходимо и при создании профамм, работающих через интерфейс СУБД MySQL с языками профаммирования и базой данных. И в этом случае происходит взаимодействие с сервером и посылка запросов. В главе 1 уже были продемонстрированы многие возможности СУБД MySQL. Эта глава посфоена другим образом. В ней мы проведем более глубокое и детальное изучение многих аспектов диалекта языка SQL, нащедщего применение в СУБД MySQL. Здесь описаны правила обращения к элементам базы данных, правила присвоения имен и офаниче-ния, накладываемые наличием чувствительности к регисфу. Здесь приведено описание многих операторов SQL, выполняющих создание и удаление баз данных, таблиц и индексов; выборку данных с использованием объединения, операторов, предоставляющих информацию о базах данных и таблицах. Описаны некоторые дополнения к языку SQL, сделанные в СУБД MySQL. Глава 3. Синтаксис и использование языка SQL 185 СУБД MySQL: преимущества и недостатки Как показано на рис. 3.1, все операторы SQL, нашедшие применение в СУБД MySQL, можно сфуппировать по категориям. В этой главе рассмотрим операторы из первых четырех категорий. Некоторые утилиты СУБД MySQL обеспечивают интерфейс с операторами SQL через командную строку. Например, утилита mysqlshow является интерфейсом с оператором show columns. Эти взаимосвязи также описаны в этой главе. Функциональные возможности других операторов описаны в других главах. Например, операторы grant и revoke, устанавливаюшие привилегии пользователям, описаны в главе 11, Обшее администрирование MySQL . Синтаксис вызова операторов приведен в приложении Г, Синтаксис SQL . Кроме того, дополнительную информацию по синтаксису операторов можно найти в справочном руководстве по СУБД MySQL. Особенно это касается изменений, сделанных в последних версиях СУБД MySQL. Последний раздел этой главы освешает возможности, имеюшиеся в остальных СУБД, но отсутствуюшие в СУБД MySQL. Это вложенные выборки, транзакции, ссылочная целостность, триггеры, хранимые процедуры и курсоры. Значит ли их отсутствие, что СУБД MySQL не настояшая СУБД? Да, есть такое мнение. Но имеет место и другой факт: отсутствие этих возможностей не останавливает потенциальных пользователей. И популярность СУБД MySQL растет. Наверное, это происходит потому, что такие возможности для многих приложений и не требуются. Во многих случаях эти недостатки очень просто обойти. Отсутствие каскадного удаления, например, можно сымитировать дополнительными запросами. Отсутствие поддержки транзакций можно обойти, если возможности группировки операторов для непрерывного выполнения, имеюшейся в СУБД MySQL (операторы lock tables и unlock tables), будет достаточно. Недостатком СУБД MySQL является не отсутствие поддержки транзакций или возможности создавать курсоры, а отсутствие механизма автоматического отката в случае, когда выполнение оператора приводит к ошибочным результатам. Так что, если перед приложением ставится задача производить сложные финансовые вычисления, требуюшие выполнения нескольких взаимоблокирующих операторов, которые либо должны выполняться вместе, либо не должны выполняться совсем, лучше рассмотреть возможность применения базы данных с возможностями отката (Postgres, например). Некоторые возможности отсутствуют просто потому, что они еще не разработаны и будут разработаны позже. Например, в версии 3.24, которая, может быть, к моменту, когда вы читаете эту книгу, уже будет существовать, будет предусмотрена возможность создавать вложенные выборки.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |