Использование констант в запросах SQL на практических примерах

Использование констант в SQL на примерах

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

INSERT INTO SALESREPS(EMPL_NUM, NAME, QUOTA, HIRE_DATE, SALES)

               VALUES(115, 'Dennis Irving', 175000.00,'2008-06-21', 0.00);

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

SELECT CITY

   FROM OFFICES

WHERE TARGET > (1.1 * SALES) + 10000.0;

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

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

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

21

-375

2000.00

+497500.8778

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

$0.75          $5000.00            $-567.89

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

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, например в SQL Server, допускаются строковые константы в двойных кавычках.

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

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

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

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

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

HIRE_DATE +30 DAYS

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

Таблица 1. Форматы даты и времени в SQL DB2

Формат

Формат даты

Пример даты

Формат времени

Пример времени

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

mm/dd/yyyy

5/19/1963

hh:mm am/pm

2:18 PM

Европейский

dd.mm.уууу

19.5.1963

hh.mm.ss

14.18.08

Японский

yyyy-mm-dd

1963-5-19

hh:mm:ss

14:18:08

ISO

уууу-mm-dd

1963-5-19

hh.mm.ss

14.18.08

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

March 15, 1990       Маr 15 1990      3/15/1990      3-15-90    1990 MAR 15

и констант времени:

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

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

15-MAR-90

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

SELECT NAME, AGE

    FROM SALESREPS

 WHERE HIRE_DATE = TO_DATE(’JUN 14 1990', 'MON DD YYYY');

В стандарте SQL2 определен формат констант даты и времени, совпадающий с форматом ISO в табл. 1, за исключением того, что в константах времени для раз­деления часов, минут и секунд используются двоеточия, а не точки. Стандартный тип данных SQL timestamp, не показанный в таблице, имеет формат yyyy-mm-dd-hh.mm.ss.nnnnnn — например, "1963-05-19-19.18.08.048632" представляет примерно 7 часов 18 минут пополудни 19 мая 1963 года.

 

Символьные константы

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

SELECT NAME, HIRE_DATE

   FROM SALESREPS

 WHERE HIRE_DATE > CURRENT_DATE;

В стандарте SQL1 определена только одна символьная константа (константа USER), но в большин­стве СУБД их количество гораздо больше. В общем случае именованную констан­ту можно применять в любом месте инструкции SQL, в котором разрешается ис­пользовать обычную пользовательскую константу того же типа. В стандарт SQL2 вошли наиболее полезные константы из различных реализаций SQL, в частности константы CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, а также USER, SESSION_USER и SYSTEM_USER.

В некоторых SQL-продуктах, включая SQL Server, доступ к системным значе­ниям обеспечивается с помощью не именованных констант, а встроенных функ­ций. Версия предыдущего запроса для SQL Server имеет такой вид.

SELECT NAME, HIRE_DATE

    FROM SALESREPS

 WHERE HIRE_DATE > GETDATE();

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

Вас заинтересует / Intresting for you:

Назначение языка SQL и необход...
Назначение языка SQL и необход... 1681 просмотров Ирина Светлова Mon, 28 Oct 2019, 05:40:06
Типы данных SQL: стандарт ANSI...
Типы данных SQL: стандарт ANSI... 142 просмотров Дэн Sat, 05 Jun 2021, 09:43:17
Правила именование объектов SQ...
Правила именование объектов SQ... 115 просмотров Дэн Sat, 05 Jun 2021, 09:02:07
Операции SQL в базе данных Ora...
Операции SQL в базе данных Ora... 4186 просмотров Antoni Wed, 11 Apr 2018, 12:22:28
Войдите чтобы комментировать