Введение в SQL
Первые языки запросов для реляционных баз данных пояились в 70-е годы. В то время существовало несколько различных языков запросов, что порождало определенные неудобства у производителей СУЬД. Непосредственным предшественником языка SQL явился язык SEQUEL.
Стандарт языка SQL постоянно расширяется, поэтому к настоящему времени имеется несколько официально утвержденных вариантов:
1. SQL-89, первый неполный вариант, практика быстро показала, что он нуждается в расширении.
2. SQL-92 (или SQL-2), значительно расширенная версия, многие СУБД в настоящее время гарантируют полную поддержку SQL-2 и частичную – более поздних стандартов.
3. SQL-99, введены еще некоторые расширения.
4. SQL-2003, самый полный вариант стандарта, в котором учтены многие решения, уже реализованные разработчиками СУБД и ставшие стандартом de-facto (например, стандартизирован объект sequence, который давно используется в некоторых СУБД, например, Oracle, стандартизированы почти все встроенные типы данных, используемые в различных СУБД).
Стардарт SQL-2003 содержит довольно много команд, которые охратывают различные аспекты функционирования ИС и разделены на 7 классов команд. Тем не менее, основу языка SQL составляют два класса команд, которые принято называть языками: язык определения данных и язык манипулирования данными. В оригинале - DDL (data definition language) и DML (data manipulation language).
В данном учебном модуле рассмотрим только эти два класса (DDL и DML). Остальные классы, которые в стандарте SQL-92 объединены общим названием «язык управления доступом» (data control language – DCL), будут частично рассмотрены в следующем учебном модуле.
При изложении материала будем ориентироваться на стандарт SQL 2003, однако следует иметь в виду, что те команды, которые нам предстоит изучить, практически не изменились со времен SQL-92.
Производители СУБД, в целом поддерживая стандарт SQL, тем не менее, иногда допускают незначительные изменения синтаксиса в отдельных командах. Практически все СУБД содержат те или иные расширения языка SQL. Поэтому изучать язык SQL, не привязываясь ни к какой конкретной СУБД, можно только чисто теоретически. Поскольку целью данного модуля является получение компетенций (т.е. умения применить полученные знания на практике), необходимо остановиться на какой-либо конкретной СУБД, которая будет использоваться для отладки демонстрационных примеров и практических заданий модуля.
В качестве такой СУБД была выбрана самая распространенная на мировом рынке Oracle. В диалекте SQL для СУБД Oracle отклонения от стандарта минимальны. Приведенные в главе примеры отлаживались с использованием клиентской консольной утилиты SQL *Plus на сервере Oracle 10g.
Везде в описании команд, где имеется хотя бы небольшое отклонение синтаксиса Oracle от стандарта SQL 2003, это будет отдельно оговариваться. Учитывая широкое распространение таких СУБД как Microsoft SQL Server, MySQL и ряда других, иногда будут оговариваться особенности и этих СУБД.
Формат записи операторов SQL свободный. Везде, где имеется пробел или знак препинания, может быть вставлено любое число пробелов или переходов на новую строку. При работе в консольной утилите SQL *Plus используется символ ; (точка с запятой) как признак окончания запроса – текст запроса, завершенный точкой с запятой, немедленно отсылается на сервер для выполнения. Однако точка с запятой не является частью команды SQL, поэтому в приводимых в лекциях примерах она будет отсутствовать.
При описании языка мы сочли возможным не приводить полный синтаксис каждой команды в формальной форме (формы Бэкуса-Наура или синтаксические диаграммы), учитывая лаконичность и относительную простоту синтаксиса, а также наличие отклонений от стандарта в диалектах языка и изменчивость самого стандарта и диалектов. Синтаксис команд описывается неформально, с пропуском некоторых незначительных, с нашей точки зрения, конструкций, но достаточно строго:
· все ключевые слова языка записываются прописными буквами, а имена, формируемые пользователями, - строчными, хотя, с точки зрения лексики языка SQL, различия в регистре символов несущественны;
· все необязательные элементы команды заключаются в квадратные скобки;
· в тех случаях, где пробел может трактоваться неоднозначно, он заменяется знаком подчеркивания;
· при пропуске части команды используется многоточие.
Возможные недостатки неформального подхода к описанию компенсируются большим количеством примеров и дополнительными словесными комментариями.
Некоторые локализованные версии СУБД допускают использование в именах, формируемых пользователями, символов национальных алфавитов, но рекомендуем применять эту возможность с чрезвычайной осторожностью. Ключевые символы языка не могут использоваться в качестве имен (таблиц, столбцов, представлений и т.д.) – большая часть подобных ошибок выявляется при компиляции, но в редких случаях ошибки могут быть непредсказуемыми, особенно в части применения символов национальных алфавитов.
Дата добавления: 2015-08-26; просмотров: 1083;