Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по SQL http.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
671.74 Кб
Скачать

Комментарий

В SQL коде комментарий оформляется следующим образом.

/* много

строчный комментарий

*/

-- однострочный комментарий

Для MySQL после начала однострочного комментария пробел обязателен.

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

Идентификатор - последовательность символов и цифр, служащая для именавания различных объектов как таблицы, имена столбцов и т.д.

Допустимыми символами являются: 'A'-'Z', 'a'-'z','_', '0'-'9'. Цифры не могут быть первым символом. Регистр букв обычно значения не имеет.

По станадарту строка, заключенная в двойные кавычки, также является идентификатором. Причем в строку могут входить прочие символы, например, буквы русского алфавита и пробелы. В MysQL дополнительно поддерживаются идентификаторы в обратных одинарных кавычках `` (не апостроф, а кавычка где ~ или русская Ё, перед клавишей 1). А двойные кавычки могут использоваться только в режиме ANSI_QUOTES.

Обзор типов данных

Ниже приведен список основных типов данных для столбцов таблиц:

  • BOOLEAN - логический тип;

  • TINYINT - целочисленный тип размером в один байт;

  • SMALLINT - целочисленный тип размером в два байта;

  • INT,INTEGER - целочисленный тип размером в четыре байта;

  • BIGINT - целочисленный тип размером в восемь байт;

  • DEC, NUMERIC, DECIMAL - тип для вещественных чисел с фиксированной точкой;

  • FLOAT - тип для вещественных чисел с плавающей точкой малой точности;

  • DOUBLE PRECISION - тип для вещественных чисел с плавающей точкой двойной точности;

  • CHAR - строка фиксированного размера;

  • NCHAR - строка фиксированного размера с поддержкой национальных символов;

  • VARCHAR - строка переменного размера;

  • NVARCHAR - строка переменного размера с поддержкой национальных символов;

  • DATE - дата;

  • TIME - время;

  • TIMESTAMP - временная отметка;

  • INTERVAL - интервал времени;

  • BINARY LARGE OBJECT - двоичные данные больших размеров. В большинстве СУБД называется BLOB;

  • CHARACTER LARGE OBJECT - символьные данные больших размеров. Может называться как CLOB или TEXT.

В Oracle все числовые типы реализованы через собственный встроенный тип NUMBER. В некоторых базах как MySQL DOUBLE PRECISION можно заменить на просто DOUBLE. При определении вещественных типов возможны два параметра, определяющих общее число знаков в числе и число знаков после запятой, например DOUBLE PRECISION(10,2).

Строки также имеют параметр определяющие размер строки или максимальный размер строки.

Вместо ANSII типов VARCHAR и NVARCHAR в Oracle рекомендуется использовать типы VARCHAR2 и NVARCHAR2. Для символьных типов приставка N в Oracle подразумевает использование Unicode символов. MS Access всегда использует только Unicode символы (т.е. VARCHAR и NVARCHAR являются синонимами). В MySQL тип символов задается настройкой базы, или явным указанием используемой кодировки и таблицы сравнения строк без учета регистра.

В некоторых базах нет строгого разграничения между временными типами, и все имена типов являются синонимами.

Интервал времени

Синтаксис и реализация интервалов отличается на разных СУБД.

Oracle

Данный тип разделен на два: интервал по годам и интервал по дням. В первом случае можно указать точность интервала только до месяца (по умолчанию год). Во втором случае до различных долей секунды. Кроме этого указывается точность значения временных промежутков в количестве цифр. Если точность не совпадает, то выводится сообщение об ошибке.

-- годовые интервалы

-- интервал в 99 лет

INTERVAL '99' YEAR

-- интервал в 999 лет в скобках

-- указана точность для годов

INTERVAL '999' YEAR(3)

-- интервал в 999 лет и 3 месяца в скобках

-- после TO указывается точность самого промежутка

-- месяцы указываются через -

INTERVAL '999-3' YEAR(3) TO MONTH

-- интервал в 99 лет и два месяца

-- это отрицательный интервал

INTERVAL '-99-2' YEAR TO MONTH

-- дневные интервалы

-- интервал в 200 дней

INTERVAL '200' DAY(3)

-- интервал в 200 дней и 6 часов

INTERVAL '200 6' DAY(3) TO HOUR

-- интервал в 200 дней, 6 часов

-- и 10 минут

INTERVAL '200 6:10' DAY(3) TO MINUTE

-- интервал в 200 дней, 6 часов,

-- 10 минут и 7 секунд

INTERVAL '200 6:10:7' DAY(3) TO SECOND

-- интервал в 200 дней, 6 часов,

-- 10 минут, 7 секунд и 333 милисекунды

INTERVAL '200 6:10:7.333' DAY(3) TO SECOND(3)

-- пример интервала в запросе

-- выборка интервала в два дня

select INTERVAL '2' day from dual;

PostgreSQL

интервалы указываются в виде строки, в которой перечисляются значение и тип промежутка:

  • microsecond - микросекунды;

  • millisecond - милисекунды;

  • second - секунды;

  • minute - минуты;

  • hour - часы;

  • day - дни;

  • week - недели;

  • month - месяцы;

  • year - года;

  • century - век;

  • millennium - тысячелетие.

Слова можно употреблять и во множественном числе. Если интервал начинается с дней, то можно использовать короткий формат строки как в Oracle для дневных интервалов.

-- интервал в три года

INTERVAL '3 year'

-- интервал в три года и три дня

INTERVAL '3 years 3 day'

-- интервал в три года, три дня

-- и 3 минуты

INTERVAL '3 year 3 day 3 minute'

-- интервал в 3 дня, 7 часов,

-- 7 минут и 5 секунд

INTERVAL '3 7:07:05'

-- пример интервала в запросе

-- выборка интервала в два дня

select INTERVAL '2 day';

MySQL

Только сложные интервалы, состоящие из более одного типа промежутков, указываются в строке. Для этих целей введены дополнительные по сравнению с PostgreSQL имена для промежутков:

  • second_microsecond - секунды и микросекунды, формат строки 's.m';

  • minute_microsecond - минуты и микросекунды, формат строки 'm.m';

  • minute_second - минуты и секунды, формат строки 'm:s';

  • hour_microsecond - часы и микросекунды, формат строки 'h.m';

  • hour_second - часы, минуты и секунды, формат строки 'h:m:s';

  • hour_minute - часы и минуты, формат строки 'h:m';

  • day_microsecond - день и микросекунды, формат строки 'd.m';

  • day_second - дни, часы, минуты и секунды, формат строки 'd h:m:s';

  • day_minute - дни, часы и минуты, формат строки 'd h:m';

  • day_hour - дни и часы, формат строки 'd h';

  • year_month - года и месяцы, формат строки 'y-m'.

MySQL интервалы используются в выражениях с временными типами данных, использовать их в качестве конечного типа для столбцов запрещено.

-- интервал в три года

INTERVAL 3 year

-- интервал в 3 дня, 7 часов,

-- 7 минут и 5 секунд

INTERVAL '3 7:07:05' day_second

-- пример интервала в запросе

-- выборка интервала в два дня

-- ошибка, столбец не может быть типа INTERVAL

select INTERVAL '2 day';

-- правильно, к дате прибавляем интервал

select date '2009-01-01'+INTERVAL '3 7:07:05' day_second