FirebirdSQL logo

Идентификаторы

Все объекты базы данных имеют имена, которые иногда называют идентификаторами. Максимальная длина идентификатора составляет 63 символа. Существует два типа идентификаторов — имена, похожие по форме на имена переменных в обычных языках программирования, и имена с разделителями (delimited name), которые являются отличительной особенностью языка SQL.

Правила для обычных идентификаторов

  • Длина идентификатора не должна превышать 63 символа

  • Обычное имя должно начинаться с буквы латинского алфавита (первые 7 бит таблицы ASCII), за которой могут следовать буквы (латинского алфавита), цифры, символ подчёркивания и знак доллара. В имени нельзя использовать буквы кириллицы, пробелы, другие специальные символы. Такое имя нечувствительно к регистру, его можно записывать как строчными, так и прописными буквами. Следующие имена с точки зрения системы являются одинаковыми:

    fullname
    FULLNAME
    FuLlNaMe
    FullName
Синтаксис обычных идентификаторов
<name> ::=
  <letter> | <name><letter> | <name><digit> | <name>_ | <name>$

<letter> ::= <upper letter> | <lower letter>

<upper letter> ::= A | B | C | D | E | F | G | H | I | J | K | L | M |
                   N | O | P | Q | R | S | T | U | V | W | X | Y | Z

<lower letter> ::= a | b | c | d | e | f | g | h | i | j | k | l | m |
                   n | o | p | q | r | s | t | u | v | w | x | y | z

<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

docnext count = 4

Правила для идентификаторов с разделителями

  • Длина идентификатора не должна превышать 63 символа.

  • Имя должно быть заключено в двойные кавычки, например "anIdentifier".

  • Идентификатор может содержать любой символ из набора символов UTF-8, включая символы с диакритическими знаками, пробелы и специальные символы.

  • Идентификатор может быть зарезервированным словом.

  • Идентификаторы с разделителями чувствительны к регистру во всех контекстах.

  • Завершающие пробелы в именах с разделителями игнорируются, как и в случае любой строковой константы.

  • Идентификаторы с разделителями доступны только в Диалекте 3. Подробнее о диалектах см. Диалекты SQL

Синтаксис идентификаторов с разделителями
<delimited name> ::= "<permitted_character>[<permitted_character> ...]"
Note

Идентификатор с разделителями, например "FULLNAME", совпадает с обычными идентификаторами FULLNAME, fullname, FullName и т. д.Причина в том, что Firebird хранит обычные идентификаторы в верхнем регистре, независимо от того, как они были определены или объявлены. Идентификаторы с разделителями всегда сохраняются так как их определили или объявили. Таким образом, идентификатор "FullName" (в кавычках) отличается от FullName (без кавычек), который хранится в метаданных как FULLNAME.

Литералы

Литералы служат для непосредственного представления данных. Ниже приведены примеры стандартных литералов:

  • целочисленные — 0, -34, 45, 0X080000000;

  • числа с фиксированной точкой — 0.0, -3.14;

  • вещественные — 3.23e-23;

  • строковые — 'текст', 'don''t!', Q'{don’t!}';

  • двоичные строки — x'48656C6C6F20776F726C64';

  • дата — DATE '10.01.2014';

  • время — TIME '15:12:56';

  • временная отметка — TIMESTAMP '10.01.2014 13:32:02';

  • логические — TRUE, FALSE, UNKNOWN;

  • неопределённое состояние — null.

Подробней о литералах для каждого из типов данных см. Типы и подтипы данных.

Операторы и специальные символы

Существует набор специальных символов, используемых в качестве разделителей.

<special char> ::=
    <space> | " | % | & | ' | ( | ) | * | + | , | -
  | . | / | : | ; | < | = | > | ? | [ | ] | ^ | { | }

Часть этих символов, а так же их комбинации могут быть использованы как операторы (арифметические, строковые, логические), как разделители команд SQL, для квотирования идентификаторов, и для обозначения границ строковых литералов или комментариев.

Синтаксис операторов
<operator> ::=
    <string concatenation operator>
  | <arithmetic operator>
  | <comparison operator>
  | <logical operator>

<string concatentation operator> ::= "||"

<arithmetic operator> ::= * | / | + | - |

<comparison operator> ::=
    =  | <> | != | ~= | ^= | > | < | >= | <=
  | !> | ~> | ^> | !< | ~< | ^<

<logical operator> ::= NOT | AND | OR

Подробнее об операторах см. Выражения.

Комментарии

В SQL скриптах, операторах SQL и PSQL модулях могут встречаться комментарии. Комментарий — это произвольный текст заданный пользователем, предназначенный для пояснения работы отдельных частей программы. Синтаксический анализатор игнорирует текст комментариев.

В Firebird поддерживается два типа комментариев: блочные и однострочные.

Синтаксис
<comment> ::= <block comment> | <single-line comment>

<block comment> ::=
  /* <character>[<character> ...] */

<single-line comment> ::=
  -- <character>[<character> ...]<end line>

Блочные комментарии начинаются с символов /* и заканчиваются символам */.Блочные комментарии могут содержать текст произвольной длины и занимать несколько строк.

Однострочные комментарии начинаются с символов -- и действуют до конца текущей строки.

Example 1. Комментарии
CREATE PROCEDURE P(APARAM INT)
  RETURNS (B INT)
AS
BEGIN
  /* Данный текст не будет учитываться
     при работе процедуры, т.к. является комментарием
  */
  B = A + 1; -- Однострочный комментарий
  SUSPEND;
END