SQL (Structured Query Language) — Структурированный Язык Запросов — стандартный язык запросов по работе с реляционными БД. Язык SQL появился после реляционной алгебры, и его прототип был разработан в конце 70-х годов в компании IBM Research. Он был реализован в первом прототипе реляционной СУБД фирмы IBM System R. В дальнейшем этот язык применялся во многих коммерческих СУБД и в силу своего широкого распространения постепенно стал стандартом «де-факто» для языков манипулирования данными в реляционных СУБД.
Первый международный стандарт языка SQL был принят в 1989 г. (далее мы будем называть его SQL/89 или SQL1). Иногда стандарт SQL1 также называют стандартом ANSI/ISO, и подавляющее
большинство доступных на рынке СУБД поддерживают этот стандарт полностью. Однако
развитие информационных технологий, связанных с базами данных, и необходимость
реализации переносимых приложений потребовали в скором времени доработки и расширения
первого стандарта SQL.
В конце 1992
г. был принят новый международный стандарт языка SQL, который в дальнейшим будем
называть SQL/92 или SQL2. И он не лишен недостатков, но в то же время является
существенно более точным и полным, чем SQL/89. В настоящий момент большинство
производителей СУБД внесли изменения в свои продукты так, чтобы они в большей
степени удовлетворяли стандарту SQL2.
В 1999 году появился новый стандарт, названный SQL3.
Если отличия между стандартами SQL1
и SQL2 во многом были количественными, то стандарт SQL3 соответствует качественным
серьезным преобразованиям. В SQL3 введены новые типы данных, при этом предполагается
возможность задания сложных структурированных типов данных, которые в большей степени соответствуют объектной ориентации.
Наконец, добавлен раздел, который вводит стандарты на события и триггеры, которые
ранее не затрагивались в стандартах, хотя давно уже широко использовались в
коммерческих СУБД. В стандарте определены возможности четкой спецификации триггеров
как совокупности события и действия. В качестве действия могут выступать не
только последовательность операторов SQL, но и операторы управления ходом выполнения
программы. В рамках управления транзакциями произошел возврат к старой модели
транзакций, допускающей точки сохранения (savepoints).
Возможность указания в операторе отката ROOLBACK точек возврата позволит откатывать транзакцию не в начало, а в промежуточную ранее сохраненную точку. Такое решение повышает гибкость реализации сложных алгоритмов обработки информации.
В настоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями, внесёнными позже в 2008 г.
Год |
Название |
Иное название |
Изменения |
1986 |
SQL-86 |
SQL-87 |
Первый вариант стандарта, принятый институтом ANSI и одобренный ISO в 1987 году. |
1989 |
SQL-89 |
FIPS 127-1 |
Немного доработанный вариант предыдущего стандарта. |
1992 |
SQL-92 |
SQL2, FIPS 127-2 |
Значительные изменения (ISO 9075); уровень Entry Level стандарта SQL-92 был принят как стандарт FIPS 127-2. |
1999 |
SQL:1999 |
SQL3 |
Добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности. |
2003 |
SQL:2003 |
Введены расширения для работы с XML-данными, оконные функции (применяемые для работы с OLAP-базами данных), генераторы последовательностей и основанные на них типы данных. |
|
2006 |
SQL:2006 |
Функциональность работы с XML-данными значительно расширена. Появилась возможность совместно использовать в запросах SQL и XQuery. |
|
2008 |
SQL:2008 |
Улучшены возможности оконных функций, устранены некоторые неоднозначности стандарта SQL:2003 |
А зачем вообще нужны эти стандарты? Зачем их изобретают и почему надо изучать их? Текст стандарта
SQL2 занимает 600 станиц сухого формального текста, это очень много, и кажется,
что это просто происки разработчиков стандартов, а не то, что необходимо рядовым
разработчикам. Однако ни один серьезный разработчик, работающий с базами данных,
не должен игнорировать стандарт, и для этого существуют весьма веские причины.
Разработка любой информационной системы, ориентированной на технологию баз данных (а других информационных систем на настоящий момент практически нет), является трудоемким процессом, занимающим несколько десятков и даже сотен человеко-месяцев. Следует отдавать себе отчет, что нельзя разработать сколько-нибудь серьезную систему за несколько дней.
Кроме того, развитие вычислительной техники, систем телекоммуникаций
и программного обеспечения столь стремительно, что проект может устареть еще
до момента внедрения. Но развивается не только вычислительная техника, изменяются
и реальные объекты, поведение которых моделируется использованием как самой
БД, так и процедур обработки информации в ней, то есть конкретных приложений,
которые составляют реальное наполнение разрабатываемой информационной системы.
Именно поэтому проект информационной системы должен быть рассчитан на расширяемость
и переносимость на другие платформы. Большинство поставщиков аппаратуры и программного
обеспечения следуют стратегии поддержки стандартов, в противном случае пользователи
просто не будут их покупать. Однако каждый поставщик cтремится улучшить свой
продут введением дополнительных возможностей, не входящих в стандарт. Выбор
разработчиков, следовательно, таков: ориентироваться только на экзотические
особенности данного продукта либо стараться в основном придерживаться стандарта.
Во втором случае весь интеллектуальный труд, вкладываемый в разработку, становится
более защищенным, так как система приобретает свойства переносимости. И в случае
появления более перспективной платформы проект, ориентированный в большей степени
на стандарты, может быть легче перенесен на нее, чем тот, который в основном
ориентировался на особенности конкретной платформы. Кроме того, стандарты —
это верный ориентир для разработчиков, так как все поставщики СУБД в своих перспективных
разработках обязательно следуют стандарту, и можно быть уверенным, что в конце
концов стандарт будет реализован практически во всех перспективных СУБД. Так
произошло со стандартом SQL1, так происходит со стандартом SQL2 и так будет
происходить со стандартом SQL3.
Для поставщиков
СУБД стандарт — это путеводная звезда, которая гарантирует правильное направление
работ. А вот эффективность реализации стандарта — это гарантия успеха.
SQL нельзя
в полной мере отнести к традиционным языкам программирования, он не содержит
традиционные операторы, управляющие ходом выполнения программы, операторы описания
типов и многое другое, он содержит только набор стандартных операторов доступа
к данным, хранящимся в базе данных. Операторы SQL встраиваются в базовый язык
программирования, которым может быть любой стандартный язык типа C++, PL, COBOL
и т. д. Кроме того, операторы SQL могут выполняться непосредственно в интерактивном
режиме.
Когда тот или иной физик использует понятие "физический вакуум", он либо не понимает абсурдности этого термина, либо лукавит, являясь скрытым или явным приверженцем релятивистской идеологии.
Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.
Для защиты релятивизма Поль Дирак ввел афизическое и алогичное понятие отрицательной энергии, а затем и существование "моря" двух компенсирующих друг друга энергий в вакууме - положительной и отрицательной, а также "моря" компенсирующих друг друга частиц - виртуальных (то есть кажущихся) электронов и позитронов в вакууме.
Однако такая постановка является внутренне противоречивой (виртуальные частицы ненаблюдаемы и их по произволу можно считать в одном случае отсутствующими, а в другом - присутствующими) и противоречащей релятивизму (то есть отрицанию эфира, так как при наличии таких частиц в вакууме релятивизм уже просто невозможен). Подробнее читайте в FAQ по эфирной физике.
|
![]() |