Интерактивный и встроенный SQL

Существуют и используются две формы языка SQL: интерактивный SQL и встроенный SQL.

Интерактивный SQL используется для непосредственного ввода SQL-запросов пользователем и получения результата в интерактивном режиме.

Встроенный 5QL состоит из команд SQL, встроенных внутрь программ, которые обычно написаны на некотором другом языке (Паскаль, С, С++ и др.). Это делает программы, написанные на таких языках; более мощными, гибкими и эффективными, обеспечивая их применение для работы с данными, хранящимися в реляционных базах. При этом, однако, требуются дополнительные средства обеспечения интерфейса SQL.с языком, в который он встраивается.

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

 

Составные части SQL

И интерактивный, и ватроеныый SQL подразделяются нв следущие составные части.

Язык Определения Данных - DDL (Data Definition Language):

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

К числу дополнительных функций DDL могут быть отнесены средства определения ограничений целостности данных, определения по- рядка структур хранения данных, описания элемёнтов физического уровня хранения данных.

Язык Обработки Данных — DML (Data Manipulation Language): предоставляет возможность выборки информации из базы данных и ее преобразования.

Тем не менее это не:два различных языка, а:комлоненты.единого SQL/

 

Типы данных

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

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

1.5.1.Тип данных"строка символов".Тип данныхCHARACTERили СНARпредставляет символьные строки фиксированной длины. Его синтаксис имеет вид;

СНАRАСТЕR[(<длийа>)] или

СНАR[(<длийа>)].

Текстовые значения:поля таблицы, для которого определен тип CHAR, имеют фиксированную длину, которая определяется параметром <длина>. Этот параметр может принимать значения от 1 до 255, т.е, строка может содержать до 255 символов. Если во вводимой в поле текстовой константе фактическое число символов меньше числа; определенного параметром <длина>, то эта константа автоматически дополняется справа пробелами до заданного числа символов. Квадратные скобки указывают на то, что значение параметра <длина> может не указываться явно. В этом случае-длина строки нолагается равной одному символу.

Тип данных для строк переменной длины может обозначаться ключевыми словами VARCHAR, CHARACTER VARYING или CHAR VARYING. Он описывает текстовую строку, которая может иметь произвольную длину до,определенного конкретной реализацией SQL максимума (в Oracle до 2000 символов). В отличие от типа CHAR, в этом случае-при вводе текстовой константы, фактическая длина которой меньше заданной, ее дополнение пробелами до заданного максимального значения не производится.

Константы, имеющие тип CHARACTER или VARCHAR, в выражвнкмх SQL заключаются в одиночные кавычки; например, '<текст>'

Следующие предложения. эквивалентны:

VARCHAR[(<длина>)]; CHAR VARYING[(<длина>)]; CHARACTER VARYING[(<длина>)].

Если длина:строки не указана явно, она полагается равной одному символу во всех случаях.

По сравнению с типом CHAR тип данных VARCHAR позволяет более экономно использовать память, выделяемую для хранения текстовых значений, и оказывается более удобным при выполнении операций, связанных со сравнением текстовых констант.

1.5.2. Числовые типы данных. Стандартными числовыми типами данных SQL являются:

· INTEGER - используется для- представления целых: чиселв -диапазоне от -231 до +231,

· SMALLINT - используется для представления целых чисел в л диапазоне меньшем, чем для INTEGER, а именно от -215 до +215;

· DECIMAL(<точность>[,<масштаб>]) - десятичное число с фиксированной точкой; точность указывает, сколько значащих цифр имеет число. Масштаб указывает максимальное число цифр справа от точки;

· NUMERIC(<точность>[, < масштаб >]) – десятичное число, с фиксированной точкой, такое же, как и DECIMAL

· FLOAT[(<точность >)] - число с плавающей точкой и указанной минимальной точностью;

· REAL - такое же число, как и FLOAT, за нсключениеё того, что точность устанавливается по умолчанию в зависимости от конкретной реализации SQL.

· DOUBLE PRECISION - такое же-число, как-и REAL, но точность в два раза превышает точность дляREAL.

СУБД Oracle использует дополнительно тип данных NUMBER для представления всех. числовых данных; целых,.с фиксированной или плавающей точкой. Его синтаксис:

· NUMBER[(<точность >[, <масштаб>])]

Если значение параметра - <точность> не указано явно, оно: полагается равным 38, Значение параметра -<масштаб> по умолчанию предполагается равным 0. Значение параметра <точность> может изменяться от 1 до 38; значение параметра <масштаб> может изменяться от 84 до 128. Использование. отрицательных значений масштаба означает сдвиг десятичной точки в сторону старших разрядов. Например, определение NUMBER(7, -3) означает округление до тысяч.

Типы DECIMAL и NUMERICполностью эквивалентны типу NUMBER. Синтаксис:

DECIMAL[(<точность>[,<масштаб>])]

DEC[(<точность>[,<масштаб>])]

NUMERIC[(<точность>[,<масштаб>])]

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

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

Константы типа DATE записываются в зависимости от: формата, принятого в конкретной системе. Например, '03.05.1999' или '12/06/1989', или '03-nov-1999', или '03-apr-99'.

1.5.4. Неопределенные или отсутствующие данные (NULL). Для обозначения отсутствующих, пропущенных или неизвестных значений атрибута в SQL используется ключевое слово NULL. Довольно часто можно встретить словосочетание "атрибут имеет значение NULL". Строго говоря, NULL не является значением в обычном понимании, а используется именно для обозначения. того факта, что действительное значение атрибута на самом дёле по каким-либо причинам отсутствует. Это приводит к ряду особенностей, что следует учитывать при использовании значений атрибутов которые могут находиться в состоянии NULL.

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

· Условные операторы расширяются от булевой двузначной логики истииа/ложь до трехзначной логики истина/ложь/неизвестно.

· Все операторы возвращают пустое значение (NULL), если значение любого из операндов отсутствует (имеет "значение NULL").

· Для проверки на пустое значение следует использовать операторы IS NULL и IS NOT NULL (использование для этого оператора сравнения "=" является ошибкой).

· Функции преобразования типов, имеющие NULL в качестве аргумента, возвращают пустое значение (NULL).