Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭУМКД_БД_2.doc
Скачиваний:
20
Добавлен:
23.09.2019
Размер:
6.01 Mб
Скачать

1.3.4. Константы

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

INSERT INTO SALESREPS (EMPL_NUM, NAME, QUOTA, HIRE_DATE, SALES) VALUES (115, 'Dennis Irving1, 17500.00, ‘21-JUN-90’, 0.00)

Здесь в предложении VALUES определено значение для каждого столбца в новой строке. Константы используются также в выражениях, как в приведённой ниже инструкции SELECT:

SELECT CITY FROM OFFICES WHERE TARGET > (1.1*SALES) + 10000.0

В стандарте ANSI/ISO определён формат числовых и строковых констант, или литералов, которые представляют конкретные значения данных. Этот формат используется в большинстве СУБД.

Числовые константы

Целые и десятичные константы (известные также под названием точных числовых литералов) в инструкциях SQL представляются в виде обычных десятичных чисел с необязательным знаком плюс (+) или минус (-) перед ними:

21 -375 2000.00 +497500.8778

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

$0.75 $5000.00 $-567.89

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

1.5ЕЗ -3.14159Е1 2.5Е-7 0.783926Е21

Символ Е читается как "умножить на десять в степени", так что первая константа представляет число "1,5 умножить на десять в степени 3", или 1500.

Строковые константы

В соответствии со стандартом ANSI/ISO строковые константы в SQL должны быть заключены в одинарные кавычки, как показано в следующих примерах:

‘Jones, John J.’ ‘New York’ ‘Western’

Если необходимо включить в строковую константу одинарную кавычку, вместо неё следует поставить две одинарные кавычки. Таким образом, следующая константа:

‘I can’’t’

представляет строку "I can’t".

В некоторых СУБД, например в SQL Server и Informix, строковые константы можно заключать в двойные кавычки:

"Jones, John J." "New York" "Western"

К сожалению, употребление двойных кавычек вызывает проблемы при переносе программ в другие СУБД.

В стандарте SQL2 имеется дополнительная возможность определять строковые константы на основе различных национальных алфавитов или пользовательских наборов символов. Но средства многоязыковой поддержки ещё не в полной мере внедрены в ведущие СУБД.

Константы даты и времени

В реляционных СУБД значения даты, времени и интервалов времени представляются в виде строковых констант. Форматы этих констант в различных СУБД отличаются друг от друга. Кроме того, способы записи даты и времени меняются в зависимости от страны.

Так, СУБД DB2 поддерживает несколько различных международных форматов для записи даты/времени (см. таблицу). Кроме того, в DB2 для представления интервалов времени используются специальные константы, как показано в следующем примере:

HIRE_DATE +30 DAYS

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

Форматы даты и времени в DB2

Формат

Формат значений типа DATE

Пример значения типа DATE

Формат значения типа TIME

Пример значения типа TIME

Американский

mm/dd/yyyy

5/19/1960

hh mm am/pm

2 18 PM

Европейский

dd.mm.yyyy

19.5.1960

hh mm ss

14 18 08

Японский

yyyy-mm-dd

1960-5-19

hh:mm:ss

14:18:08

ISO

yyyy-mm-dd

1960-5-19

hh mm.ss

14 18.08

Формат значений типа

TIMESTAMP

yyyy-mm-dd-hh.mm.ss.nnnnnn

Пример значения типа

TIMESTAMP

1960-05-19-14 18.08.048632

СУБД SQL Server также поддерживает различные форматы констант даты и времени. Ниже приведён ряд примеров констант даты, допустимых в SQL Server:

March 15, 2008 Mar 15 2008 3/15/2008 3-15-08 2008 MAR 15

А вот примеры допустимых в этой СУБД констант времени:

15:30:25 3:30:25 РМ 3:30:25 pm 3 РМ

Значения даты и времени в Oracle также записываются в виде строковых констант с использованием следующего формата:

15-MAR-08

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

Например:

SELECT NAME, AGE FROM SALESREPS WHERE HIRE_DATE = TO_DATE(‘JUN 14 2008’, ‘MON DD YYYY’)

В стандарте SQL2 определён формат констант даты и времени, совпадающий с форматом ISO, за исключением того, что в константах времени для разделения часов, минут и секунд используются двоеточия.

Именованные константы

Кроме пользовательских констант в SQL существуют специальные именованные константы, возвращающие значения, хранимые в самой СУБД. Например, значение константы CURRENT DATE, реализованной в ряде СУБД, всегда равно текущей дате. Эту константу можно использовать в таких запросах:

SELECT NАМЕ, HIRE_DATE FROM SALESREPS WHERE HIRE_DATE > CURRENT DATE

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]