≪
≫

ЭЛЕМЕНТЫ ЯЗЫКА SQL

ФУНКЦИИ И ОСНОВНЫЕ ВОЗМОЖНОСТИ ЯЗЫКА SQL

Неотъемлемая и важнейшая часть любой системы, применяющей БД, — языковые средства, обеспечивающие возможность доступа и действий над данными, определения их структур, способов использования и интерпретации. Язык SQL появился в 1970-е годы как одно из таких средств. Его прототип был разработан фирмой IBM и известен под названием SEQUEL (Structured English Query Language). SQL вобрал в себя достоинства реляционной модели, в частности, лежащий в ее основе математический аппарат реляционной алгебры и реляционного исчисления, используя при этом сравнительно небольшое число операторов и относительно простой синтаксис.

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

Говоря о стандарте языка SQL, следует заметить, что большинство его коммерческих реализаций имеет некоторые отличия. Это, конечно, уменьшает совместимость систем, использующих различные «диалекты» SQL. Но, с другой стороны, полезные расширения реализаций языка обеспечивают его развитие и со временем включаются в новые редакции стандарта.

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

Отличие SQL от процедурных языков программирования

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

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

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

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

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

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

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

SQL подразделяется на следующие составные части:

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

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

  • ? Язык манипулирования данными — DML — предоставляет возможность выборки информации из БД и ее преобразования.
  • ? Язык для осуществления административных операций — DCL — осуществляет присваивание или отмену прав (привилегий) использовать БД, таблицы и другие объекты.
  • ? Язык контроля транзакций — TCL — дает возможность управлять транзакциями.

Типы данных SQL

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

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

Строка символов

Стандарт поддерживает только один тип представления текста — CHARACTER (CHAR) Этот тип данных представляет собой символьные строки фиксированной длины.

Синтаксис:

CHARACTER [(длина)] или

CHAR [(длина)].

Длина может принимать значение от 1 до 255. Если во вводимой в поле текстовой константе фактическое число символов меньше числа, определенного параметром «длина», то эта константа автоматически дополняется справа пробелами до заданного числа символов.

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

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

Синтаксис определения текстовой константы переменной длины:

VARCHAR [(длина)]

CHARACTER VARYING [(длина)]

CHARVARYING [(длина)].

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

Числовые типы данных

  • — INTEGER — используется для представления целых чисел в диапазоне от —231 до +231;
  • — SMALLINT — используется для представления целых чисел в диапазоне от —215 до +215;
  • — DECIMAL (точность [, масштаб]) — десятичное число с фиксированной точкой, точность определяет количество значащих цифр в числе. Масштаб указывает максимальное число цифр справа от точки;
  • — NUMERIC (точность [, масштаб]) — десятичное число с фиксированной точкой, такое же, как и DECIMAL;
  • — FLOAT [(точность)] — число с плавающей точкой и указанной минимальной точностью;
  • — REAL — число с плавающей точкой, точность определена по умолчанию;
  • — DOUBLE PRECISION — число аналогично REAL, но точность в два раза выше.

Дата и время

Тип данных для представления даты и времени является нестандартным и определяется конкретной реализацией SQL. В наиболее общем случае поддерживаются типы DATE и TIME для представления даты и времени соответственно.

Неопределенные или пропущенные данные

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

  • — в агрегирующих функциях, позволяющих получать сводную информацию по множеству значений атрибута, для обеспечения точности и однозначного толкования результатов отсутствующие или NULL-значения атрибутов игнорируются;
  • — условные операторы от булевой двузначной логики TRUE/FALSE расширяются до трехзначной логики TRUE/ FALSE/UNKNOWN;
  • — все операторы, за исключением оператора конкатенации строк (||), возвращают пустое значение (NULL), если значение любого из операндов NULL;
  • — для проверки на пустое значение следует использовать операторы IS NULL и IS NOT NULL (использование для этих целей оператора сравнения «=» является ошибкой);
  • — функции преобразования типа, имеющие NULL в качестве аргумента, возвращают пустое значение.

Используемые термины и обозначения

Ключевые слова — это используемые в выражениях SQL слова, имеющие определенное назначение.

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

В описании синтаксиса команд SQL:

  • — оператор определения «::=» разделяет определяемый элемент и собственно его определение;
  • - квадратные скобки «[ ]» указывают необязательный элемент синтаксической конструкции;
  • - многоточие «...» определяет, что выражение, предшествующее ему, может повторяться любое число раз;
  • - фигурные скобки «{ }» объединяют последовательность элементов в логическую группу, один из элементов которой должен обязательно использоваться;
  • — вертикальная черта «|» указывает, что часть определения, следующая за этим символом, является одним из возможных вариантов;
  • — в угловые скобки «О» заключаются элементы, объясняемые по мере того, как они вводятся.
  • Ш ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
  • 1. Назовите причину, благодаря которой язык SQL стал стандартом в качестве языка работы с реляционными данными.
  • 2. Назовите отличия SQL от процедурных языков программирования.
  • 3. Опишите формы языка SQL.
  • 4. Назовите составные части языка SQL.
  • 5. Перечислите типы данных, используемые в SQL.
 
Посмотреть оригинал