Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Диалект базы данныхНовые встроенные функции
В СУБД Firebird добавлены новые встроенные функции из стандарта SQL-99 — CASE, COALESCE и NULLIF. CASE является базовой для этого ряда функций и реализует условную выборку значений из таблиц, например: SELECT CASE O.TYPE WHEN 0 THEN 'Доход' ELSE 'Расход' END FROM OPERATIONS O или так SELECT CASE WHEN (O.TYPE = 0) THEN 'Доход' ELSE 'Расход' END FROM OPERATIONS O Следует отметить, что у функции CASE может быть любое количество аргументов, т.е. Она не ограничивается только простейшей проверкой типа 'ЕСЛИ-ИНАЧЕ', например: SELECT CASE O.TYPE WHEN 0 THEN 'Доход' WHEN 1 THEN 'Расход' ELSE '----' END FROM OPERATIONS O Функция COALESCE является упрощением CASE для проверки на NULL SELECT COALESCE(O.STATUS, '----') FROM OPERATIONS O Результатом COALESCE будет являться первый аргумент, если он не NULL, или второй аргумент в противном случае. Функция NULLIF также является упрощением CASE, но для иного случая SELECT NULLIF(O.STATUS1, O.STATUS2) FROM OPERATIONS O Результатом NULLIF будет являться NULL, если оба аргумента равны, или первый аргумент в противном случае.
Выбор диалекта базы данных для СУБД Firebird очень важен. Диалект 1 и Диалект 3 отличаются друг от друга следующими принципиальными особенностями: - Диалект 3 позволяет использовать расширенный набор типов данных, таких как типы для работы с большими целыми числами (ВigInt – 64 разряда), типы для работы с датой и временем DATE и TIME. - Диалект 3 различает регистр идентификаторов, если идентификатор заключён в двойные кавычки. Table1 и TABLE1 в обоих диалектах будут равнозначны, а вот “Table1” и “TABLE1” (TABLE1) сервер будет интерпретировать как разные идентификаторы. - Диалект 3 не поддерживает неявное приведение типов данных (как в диалекте 1). Это означает, что в Диалекте 1 выражение ‘25’+5 будет корректным, и в результате мы получим 30. В Диалекте 3 это выражение вызовет ошибку несоответствия типов. - В Диалекте 3 двойные кавычки применяются только для обозначения идентификаторов (названия таблиц), а одинарные – для строковых констант. В Диалекте 1 строковые константы можно заключать как в одиночные, так и в двойные кавычки. - В Диалекте 3 используются новые ключевые слова (зарезервированные слова): COLUMN, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, DAY, EXTRACT, HOUR, MINUTE, MONTH, SECOND, TIME, TIMESTAMP, WEEKDAY, YEAR, YEARDAY. - Арифметические операции в диалекте 3 взяты из стандарта SQL-92. Например, деление целого на целое в диалекте 3 возвращает усечённое целое, в то время как в диалекте 1 оно вернёт число с плавающей точкой двойной точности. - Генераторы в диалекте 3 могут иметь тип bigint (64-битовые целые числа), а в диалекте 1 генераторы – 32-битовые целые. Сам сервер не имеет диалекта – диалект базы данных является атрибутом базы данных. Он является интерфейсом клиента, который определяет, какой набор возможностей запрашивается у базы данных. Выбор диалекта, в котором будет создаваться база данных, важен по той причине, что переход между разными диалектами – занятие достаточно нетривиальное и трудоёмкое. Иными словами, если есть возможность, то лучше сразу выбрать верный диалект. В общем случае при выборе диалекта следует руководствоваться следующими правилами: - выбираем Диалект 3, если проектируется база данных для приложения, которое будет использовать только современные библиотеки прямого доступа к InterBase/FireBird, которые полностью поддерживают Диалект 3. - выбираем Диалект 1, если важна совместимость с более ранними библиотеками доступа к InterBase/FireBird, такими как BDE. Может возникнуть вопрос, почему диалекты бывают 1 и 3, а где же 2? Диалект 2 действительно существует, но используется в качестве промежуточного этапа при миграции с Диалекта 1 на Диалект 3.
Дата добавления: 2014-02-28; просмотров: 382; Нарушение авторских прав Мы поможем в написании ваших работ! |