Структура языка SQL

  • Вид работы:
    Реферат
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    50,14 Кб
  • Опубликовано:
    2012-03-28
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Структура языка SQL

Содержание

 

Введение

1. Краткая история языка SQL

2. Структура языка SQL

3. Типы данных языка SQL

Заключение

Глоссарий

Список использованных источников

Приложение

Введение

Язык SQL (Structured Query Language) относится к языку структурированных запросов. Он также является универсальным компьютерным языком используемым для создания, изменения и управления данными в реляционных базах данных. Не смотря на имеющиеся заблуждения язык SQL является информационно-логическим, а не языком программирования.

Большое количество особенностей SQL, начиная с ранних версий противоречили принципам реляционной модели, основанной Эдгаром Коддом. Вместе с тем спецификация этого языка считается законченной спецификацией модели данных, играющей сегодня роль двойника реляционной модели. На данный момент SQL называют "свободным языком". Интерфейсы на основе SQL поддерживаются практически всеми основными СУБД, причем далеко не все изначально задумывались как реляционные системы (см. приложение А, рисунок 1), и, скорее всего, такое положение вещей не изменится.

Если для рассмотрения отдельно брать сам SQL, то его нельзя считать ни СУБД, ни самостоятельным программным продуктом. Невозможно сходить в магазин и "приобрести SQL". SQL - это обязательная часть СУБД, инструмент организации связи между СУБД и пользователем.

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

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

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

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

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

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

1. Краткая история языка SQL


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

средства определения и управления структурой БД.

средства определения ограничений и единства триггеров,

средства определения представлений БД,

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

средства разрешения доступа к таблицам и их полям,

средства установки точек сохранения транзакций, обеспечения фиксации и откатов транзакций.

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

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

Ближе всех к System-R находились две системы компании IBM - это SQL/DS и DB2. Создатели этих систем применяли опыт проекта System-R, а SQL/DS полностью базировалась на программном коде System-R. Поэтому существует достаточное сходство диалектов SQL, выполненных в этих системах, с SQL System-R. Из SQL System-R были убраны только те элементы, которые были слабо проработаны или исполнение которых влекла за собой очень большие технические проблемы (триггеры и ограничения целостности). Можно считать этот путь движением сверху вниз.

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

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

Стандартизация языка SQL была начата практически в одно время с возникновением его первых коммерческих релизов. В 1982 году комитету по базам данных Американского национального института стандартов (ANSI) поступил заказ на создание стандартов для языка реляционных БД. В октябре 1985 года был выполнен проект стандарта, который являлся уже не первым стандартом проекта ANSI. Этот стандарт был принят ANSI уже в 1986 году, а через год одобрен Международной организацией по стандартизации (ISO). Данный стандарт решено называть SQL/86/

По некоторым причинам SQL System-R невозможно было использовать в качестве базы стандарта. Основная причина в том, что эта модификация языка не была достаточно проработана. Вторая причина - большие трудности при реализации. Исходя из этого, основой стал диалект языка SQL, сформировавшийся в IBM в начале 1980-х гг. В действительности этот диалект являлся технически проработанным подмножеством SQL System-R.

К концу восьмидесятых годов стандарт SQL/86, был в некоторой степени расширен, а затем был разработан и принят следующий стандарт, носивший название ANSI/ISO SQL/89.

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

Понимая, что неполнота стандарта SQL на заключающем этапе разработки данного стандарта достаточно существенна, разработчики компаний принялись за работу над стандартом SQL2. Работа над ним тоже велась несколько лет, было реализовано множество проектов стандарта, до тех пор, пока в марте 1992 года не был утвержден заключительный проект стандарта (SQL/92).

В 1995 году новый стандарт был расширен спецификацией уровня вызова (Call-evel Interface - SQL/CLI). SQL/CLI являлся набором спецификаций интерфейсов процедур, позволяющих реализовывать динамически задаваемые команды SQL.

В 1996 году к SQL/92 присоединен еще один компонент - SQL/PSM (Persistent Stored Modules). Главной задачей этой спецификации состояла в стандартизации методов определения и применения хранимых процедур, особым образом написанных программ, состоящих из операторов SQL, находящихся в самой базе данных и способных вызываться приложениями, а затем выполняться внутри СУБД.

В 1999 году принимаются пять основных элементов стандарта SQL 1999. Первый элемент (SQL/Framework) посвящен пояснению концептуальной структуры стандарта. В данной части приведена подробная аннотация последующих четырех элементов и формулируются требования к выпускам, которые претендуют на соответствие стандарту.

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

операторы установления типа БД и управления ей,

операторы управления данными,

операторы управления транзакциями,

операторы управления соединениями с базой данных и т.д.

В третьей части находятся более подробная, чем в SQL/92 спецификация SQL/CLI.

Четвертая часть посвящена спецификации SQL/PSM, синтаксису и семантике языка идентификации хранимых процедур. В пятой части (SQL/Dindings) - описан порядок связывания SQL для стандартных версий языков программирования Cobol, Fortran, PL/1, Pascal, Ada, C, MUMPS.

В конце 2003 года принимается и опубликовывается новая модификация международного стандарта SQL: 2003. Немалое количество экспертов было уверено, что в данном варианте стандарта будут только исправлены неточности SQL 1999. Однако, в SQL: 2003 добавлен ряд новых и значительных качеств.

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

 

2. Структура языка SQL


Язык SQL стандартов SQL: 2003, SQL: 1999 и даже SQL/92 - это достаточно огромный и сложный язык. Его потенциал практически невозможно сразу постичь и тем более освоить. Исходя из этого, требуется подразделять язык на уровни, или слои, таким образом, что каждый слой языка содержит в себе все конструкции, находящиеся на более низком уровне. В стандарте существует несколько способов разделения языка на уровни. В одной из классификаций он делится на базовый, промежуточный и полный.

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

Из всех существующих конструкций языка SQL можно отметить такие конструкции, которые используются при прямом (direct) взаимодействии конечного пользователя с СУБД. На последующем уровне встраиваемого (embedded) SQL язык дополняется конструкциями, которые позволяют применять возможности прямого SQL в приложениях, написанных на популярных языках программирования. На уровне динамического (dynamic) SQL встраиваемый SQL расширяется конструкциями, позволяющими программам обращаться к СУБД с конструкциями прямого SQL, которые образуются во время работы программы.

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

Язык SQL владеет терминами, которые несколько отличаются от терминов реляционной теории, к примеру, вместо "отношений" применяются "таблицы", вместо "кортежей" "строки", вместо "атрибутов" "столбцы".

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

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

 

3. Типы данных языка SQL


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

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

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

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

Строки символов постоянной длины. В столбцах, имеющих этот тип данных, обычно хранятся имена людей и компаний, адреса и т.п.

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

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

Дата и время. Поддержка значений даты/времени также широко распространена в различных СУБД, хотя способы ее реализации довольно сильно отличаются друг от друга. Как правило, над значениями этого типа данных можно выполнять различные операции. Стандарт SQL2 включает определение типов данных DATE, TIME, TIMESTAMP и INTERVAL, а также поддержку часовых поясов и возможность указания точности представления времени (например, десятые или сотые доли секунды).

Булевы величины. Некоторые СУБД, например Informix Universal Server, явным образом поддерживают логические значения (TRUE или FALSE), а другие СУБД разрешают выполнять в инструкциях SQL логические операции (сравнение, логическое И/ИЛИ и др.) над данными.

Длинный текст. Многие СУБД поддерживают столбцы, в которых хранятся длинные текстовые строки (обычно длиной до 32000 или 65000 символов, а в некоторых случаях и больше). Это позволяет хранить в базе данных целые документы. Как правило, СУБД запрещает использовать эти столбцы в интерактивных запросах.

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

К примеру, тип данных IMAGE в SQL Server позволяет хранить потоки данных размером до 2 миллиардов байтов.

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

В табл.3.1 перечислены типы данных, определенные в стандарте ANSI/ISO.

Тип данных

Описание

CHAR (длина)

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

CHARACTER (длина)


VARCHAR

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

CHAR VARYNG


CHARACTER VARYNG


NCHAR

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

NATIONAL CHAR


NATIONAL CHARACTER


NCHAR VARYNG

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

NATIONAL CHAR VARYNG


NATIONAL CHARACTER VARYNG


INTEGER

Целые числа

INT


SMALLINT

Малые числа

BIT

Цепочки битов постоянной длины

BIT VARYNG

Цепочки битов переменной длины

NUMERIC (точность, степень)

Числа с заданной точностью и степенью

DOUBLE PRECISION

Числа с плавающей запятой низкой точности

DATE

Дата

TIME (точность)

Время

TIMESTAMP (точность)

Дата и время

INTERVAL

Временной интервал

DECIMAL (точность, степень)

Числа с плавающей запятой

DEC (точность, степень)


FLOAT (точность)


REAL

Числа с плавающей запятой низкой точности


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

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

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

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

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

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

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

Заключение


SQL по праву считается полнофункциональным мощным сервером баз данных, выдающийся тем, что имеет высокую производительность, лёгкость понимания и удобный интерфейс. Под управлением SQL в состоянии работать базы данных в широком спектре от уровня среднего звена отдельной организации до распределенных баз масштаба корпорации. Доступ к SQL Server предусмотрен из большого числа средств разработки клиентских приложений, настольных баз данных и офисных продуктов. Изначально SQL адаптирован под взаимодействие с другими серверами BackOffice, что благоприятствует прямо охватить решение комплексных задач хранения и обработки информации, электронного документооборота, создания интернет-приложений и т.д. SQL используется как в стандартных клиент-серверных платформах, так и в многоуровневых средах. Microsoft Transaction Server является одним из главных инструментов при создании распределенных приложений.

В последних стандартах языка SQL содержатся:

§   генераторы типов массивов и мультимножеств, элементами которых могут быть значения предопределенных типов, типов коллекций, анонимных строчных типов строк и типов, определенных пользователями;

§   генератор анонимных строчных типов, в которых типом элемента строки может быть любой предопределенный тип, тип коллекции, анонимный строчный тип и тип, определенный пользователями;

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

§   сформированный набор готовых типов, включая ряд параметризуемых типов;

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

Быстро растущая популярность SQL считается одним из основных направлений в современной компьютерной промышленности. За несколько лент SQL остался единственным языком баз данных. На данный момент SQL поддерживают более ста СУБД, действующих как на персональных компьютерах, так и на крупных ЭВМ. Был разработан, а затем дополнен официальный международный стандарт на SQL. Язык SQL имеет большое значение в архитектуре систем управления базами данных, реализуемых всеми основными разработчиками программных продуктов, и является стратегическим курсом разработок компании Microsoft в сфере баз данных. Появившись в результате исполнения второстепенного исследовательского проекта компании IBM, на сегодняшний день SQL широко известен в качестве влиятельного рыночного фактора.

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

язык структурный запрос оператор

Глоссарий


№ п/п

Понятие

Определение

1

SQL

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

2

System-R

Реляционная СУБД, созданная в середине 1970-х в результате исследовательского проекта IBM.

База данных

Организованная совокупность данных, предназначенная для длительного хранения во внешней памяти ЭВМ и постоянного применения.

4

Домен

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

5

Запись

Совокупность логически связанных полей.

6

Модель данных

Cовокупность структур данных и операций их обработки

7

Поле

Элементарная единица логической организации данных, которая соответствует неделимой единице информации - реквизиту.

8

Реляционные базы данных

Базы данных с табличной формой организации.

9

СУБД

Система управления базой данных.

10

Транзакции

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

11

Триггеры

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

 


Список использованных источников


1.       Виейра Р. в Программирование баз данных Microsoft SQL Server 2005. Базовый курс. - М.: "Диалектика", 2007, 832 с. - ISBN 0-7645-8433-2

2.       Гандерлой М. Освоение Microsoft SQL Server 2005 Mastering Microsoft SQL Server 2005.М. Гандерлой, Д. Джорден, Д. Чанц - М.: "Диалектика", 2007, 1104 с. - ISBN 0-7821-4380-6

.        Грофф Д.Р. SQL. Полное руководство. Д.Р. Грофф, П.Н. Вайнберг - BHV “Ирина”, 2001, 800 с.

.        Дейт К.Д. Введение в системы баз данных: Пер. с англ. К.; - СПб.: Издательский дом "Вильямс", 2000, 848 с.

.        Коннолли Т. Базы данных: проектирование, реализация и сопровождение. Теория и практика.Т. Конноли, К. Бегг, А. Страчан. - Издательский дом "Вильямс", 2000, 1120 с.

.        Корнеев В.В. Интеллектуальная обработка информации.2-е изд.В. В. Корнеев, А.Ф. Гареев, С.В. Васютин, В.В. Райх. - М.: Изд. Молгачева С.В., 2001, 494 с.

.        Самоучитель по языку SQL (SQL DML) [Электронный ресурс] - Режим доступа #"553001.files/image001.gif">

Рис.1 - Применение SQL для доступа к базе данных


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!