Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЭУМК_КИТ2012

.pdf
Скачиваний:
50
Добавлен:
15.02.2016
Размер:
5.61 Mб
Скачать

ВВЕДЕНИЕ В ЯЗЫК SQL

1.Язык SQL в СУБД

2.Структура команды SQL. Типы данных. Выражения

3.Функциональные возможности языка SQL

1.ЯЗЫК SQL В СУБД

SQL представляет собой непроцедурный (декларативный) язык,

используемый для управления данными реляционных СУБД. Термин

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

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

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

достаточно полный функционально, но не полностью синтаксически и семантически определенный вариант языка SQL (его исходным названием было SEQUEL – StructuredEnglishQueryLanguage) был разработан и частично реализован в рамках проекта экспериментальной реляционной СУБД SystemR (проект выполнялся с

1974 по 1979 гг. в научно-исследовательской лаборатории компании

IBM в г. Сан-Хосе, Калифорния).

Название языка SQL (StructuredQueryLanguage – структурированный язык запросов) только частично отражает его суть. Язык SQL главным

171

образом ориентирован на удобную и понятную пользователям формулировку запросов выбора из БД, однако его функции шире – с

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

ориентированной СУБД, достаточно знать язык SQL.

Первоначально официального стандарта в области БД не существовало, что в определенном смысле сдерживало развитие технологий баз данных. В результате совместных усилий двух организаций: ANSI (American National Standarts) и ISO (International Standarts Organisation) в 1986 году был принят стандарт SQL-86 (SQL-

1). После появления первого международного стандарта языка работа в этой области продолжилась, и в 1992 г. был принят второй международный стандарт SQL-92 (SQL-2), в 1999 г. появляется объектно-ориентированный язык SQL:1999 (SQL-3), а в 2003 г. принят стандарт SQL:2003. Каждый стандарт представляет собой многостраничный документ сложной структуры. К примеру, текст стандарта SQL-92 составляет около 600 страниц. SQL-стандарт правильнее рассматривать не как статический, а как постоянно развивающийся объект, что объясняется современным интенсивным развитием технологий баз данных. Функция SQL-стандартов – стать путеводителем на сложном пути для будущих согласованных совершенствований технологий обработки данных. Язык SQL является первым и пока единственным стандартным языком работы с базами данных, который получил достаточно широкое распространение. Есть еще один стандартный язык работы с базами данных, NDL (Network

172

Database Language), который построен на использовании сетевой модели CODASYL, но он применяется лишь в немногих разработках.

В SQL сделаны большие инвестиции как со стороны разработчиков, так

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

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

ориентированной СУБД.

Язык SQL можно использовать для доступа к БД в двух режимах: при интерактивной работе и в прикладных программах. С помощью SQL

пользователь может в интерактивном режиме быстро получить ответы на любые, в том числе достаточно сложные запросы, тогда как для программной реализации этих запросов на другом языке пришлось бы разрабатывать соответствующую программу. К примеру, для выбора из таблицы ВОПРОСЫ всех номеров вопросов, относящихся к первой теме, пользователю необходимо ввести команду[1]

SELECT ВОПРОСЫ.Ном FROM ВОПРОСЫ WHERE КодТемы=1

(1)

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

Пример использования SQL в программе на языке VBA:

173

strSQL="SELECT ВОПРОСЫ.Ном FROM ВОПРОСЫ WHERE

КодТемы= 1"

(2)

Set ВОПРОСЫ = ДБ.OpenRecordset(strSQL, dbOpenDynaset)

Как видно из примеров (1) и (2), для извлечения данных из БД одни и те же команды языка SQL можно применять как для интерактивного,

так и для программного доступа.

Характеризуя язык SQL в целом, можно выделить следующие его черты:

высокоуровневая структура, напоминающая английский язык;

независимость от конкретных СУБД;

межплатформенная переносимость;

наличие развивающихся стандартов;

возможность выполнения интерактивных запросов извлечения данных и модификации их структуры;

обеспечение программного доступа к базам данных;

возможность различного представления данных;

поддержка архитектуры клиент/сервер;

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

расширяемость и поддержка объектно-ориентированных технологий;

возможность доступа к данным в среде Internet.

[1] Синтаксис команды будет пояснен ниже, при рассмотрении команды SELECT

174

2. СТРУКТУРА КОМАНДЫ SQL. ТИПЫ ДАННЫХ. ВЫРАЖЕНИЯ 2.1. Структура команды SQL

Каждая команда SQL начинается с действия – ключевого слова или группы слов,

описывающих выполняемую операцию. Например, INSERT (добавить), DELETE (удалить),

COMMIT (завершить), CREATE TABLE (создать таблицу).

Примечание. В языках программирования ключевое слово – название, зарезервированное для определенных целей, например, названий команд, устройств и т.п.

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

информацию о действии, выполняемом командой. Каждое предложение начинается с

ключевого слова, такого как, например, WHERE (где), FROM (откуда), INTO (куда),

HAVING (имеющий). Многие предложения содержат имена таблиц и полей БД; некоторые – константы и выражения.

Имена таблиц, полей и пользователей должны содержать от 1 до 18 символов, начинаться с буквы и не содержать пробелов или специальных

символов пунктуации.

В качестве имен нельзя использовать ключевые слова SQL. Пример команды SQL:

2.2. Типы данных Ограничимся рассмотрением типов данных, предусмотренных в стандарте SQL-1. Эти

типы приведены в табл. 1. Таблица 1

Типы данных языка SQL-1 Тип данных Описание

CHAR(длина)

175

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

INTEGER

INTЦелое число SMALLINTМалое целое число NUMERIC(точность, степень) DECIMAL(точность, степень

DEC(точность, степень)Число с фиксированной запятой FLOAT (точность)Число с плавающей запятой

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

2.3. Выражения

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

Для указания конкретных значений данных используются константы. Различают следующие виды констант:

Константы с фиксированной запятой (пишут точку)

21

-375.18

62.3

 

Константы с плавающей запятой

1.5Е7

-3.14Е9

2.5Е-6

0.783Е24

Строковые константы (должны быть заключены в одинарные кавычки). 'Минск' 'New York' 'Иванов И. И.'

Отсутствующее значение (NULL). SQL поддерживает обработку отсутствующих данных с помощью понятия «отсутствующее значение».

Примеры отсутствующих значений

Хотя в SQL-1 стандартные функции не определены, большинство СУБД поддерживает

176

так называемые агрегатные (итоговые) функции. К часто используемым агрегатным функциям можно отнести следующие:

·COUNT – количество значений в столбце,

·SUM – сумма значений в столбце,

·AVG – среднее значение в столбце,

·MAX – максимальное значение в столбце,

·MIN – минимальное значение в столбце.

Примечание. Для функций SUM и AVG рассматриваемый столбец должен содержать числовые значения.

В выражениях можно использовать следующие типы операторов: · арифметические: + (сложение), - (вычитание), * (умножение), / (деление);

·отношения: = (равно), > (больше), < (меньше), >= (больше или равно),

<=

(меньше или равно), <> (не равно);

·логические: AND (логическое "И"), OR (логическое "ИЛИ"), NOT

("НЕТ");

· специальные: IN (определяет множество, которому может принадлежать значение);

BETWEEN (задает границы, в которые должно попадать значение); LIKE (применяется

для поиска по шаблону. В шаблоне используются специальные символы: % (процент), заменяющий любую последовательность символов и _ (подчеркивание), заменяющий

один любой символ); IS NULL – используется для поиска NULLзначений.

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

Пример выражения:

Цена * (Остаток + Приход - Расход)

3. ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ ЯЗЫКА SQL 3.1. Роль языка SQL в СУБД

177

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

SQL – это неотъемлемая часть СУБД, инструмент, с помощью которого осуществляется связь пользователя с ней. На рис. 1 изображена структурная схема типичной СУБД, компоненты которой соединяются в единое целое с помощью SQL (своего рода ―клея‖). Ядро базы данных является сердцевиной СУБД; оно отвечает за физическое структурирование данных и запись их на диск, а также за физическое чтение данных с диска. Кроме того, ядро принимает SQL-запросы от других компонентов СУБД (таких как генератор форм, генератор отчетов или модуль запросов), от пользовательских приложений, а также от других вычислительных систем.

Рис. 1. Компоненты СУБД

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

SQL выполняет множество функций:

·SQL – язык интерактивных запросов. Пользователи вводят команды SQL в интерактивном режиме для выборки данных и отображения их на экране, а также внесения изменений в БД.

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

·SQL – язык администрирования баз данных. Администратор БД использует SQL для определения структуры базы данных и управления доступом к данным.

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

и др.

3.2. Описание команд язык SQL

Формирование запросов на языке SQL должно осуществляться в строгом соответствии с форматом (правилом формирования) команды. При описании структуры и правил использования некоторого языка программирования употребляется определенная система обозначений.

178

Для описания форматов команд языка SQL используем так называемую форму Бэкуса-Наура (БНФ), в которой приняты следующие обозначения:

·< > (угловые скобки) – то, что в них указано, определяет пользователь;

·[ ] (квадратные скобки) – выделяют те части команды, которые могут отсутствовать;

·{ } (фигурные скобки) – объединяют последовательность элементов в логическую группу;

·... (многоточие) – указывает на допустимость повторения элемента или группы элементов один или несколько раз;

·½ (вертикальная черта) – означает альтернативный выбор;

·( ) (круглые скобки) – заключают аргументы команды;

·(пробелы) – используются для разделения элементов команды.

Язык SQL, соответствующий последним стандартам SQL:2003, SQL:1999 представляет собой очень богатый и сложный язык, все возможности которого трудно сразу осознать и тем более понять. Поэтому приходится разбивать язык на уровни. В одной из классификаций, предусмотренных стандартом SQL, этот язык разбивается на «базовый» (entry), «промежуточный» (intermediate) и «полный» (full) уровни.

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

К категории Описание данных относятся команды, позволяющие создавать, изменять и уничтожать БД и объекты БД, такие как таблицы и представления[2]. Команды из этой категории представлены в табл. 2. Таблица 2 Команды описания данных

КомандаНазначениеКраткий формат

CREATE TABLEСоздает структуру таблицыCREATE TABLE <имя таблицы> ({<имя

поля> <тип данных>[<размер> ] [<ограничения на поле>][<значение поля по

умолчанию>] },...) Например, по команде

179

CREATE TABLE Сведения (НОМЗ INT, ФИО CHAR(15), ГОД INT, ПОЛ CHAR(3))

в БД создается структура таблицы Сведения, включающая поля: НОМЗ, ФИО,

ГОД, ПОЛ. Поля НОМЗ и ГОД имеют тип целые числа. Поля ФИО и ПОЛ имеют тип

символьный с размерами 15 и 3 символа соответственно. DROP TABLE Удаляет таблицуDROP TABLE <имя таблицы> Например, по команде

DROP TABLE Сведения

таблица Сведения удаляется из БД.

ALTER TABLE Изменяет описание таблицыALTER TABLE <имя таблицы> ({<имя поля>

<тип данных>[<размер>] [<ограничения на поле>][<значение поля

по

умолчанию>] },...) Например, по команде

ALTER TABLE Сведения (СЕМПОЛ CHAR(10))

в структуру таблицы Сведения добавляется новое поле СЕМПОЛ, символьного

типа размером 10 символов.

CREATE VIEWСоздает представление CREATE VIEW <имя представления> AS

<запрос>

[WITH CHECK OPTION]

Например, по команде

CREATE VIEW УспеваемостьМ1 AS SELECT *FROM

УспеваемостьWHERE ГРУП= "М-1"

создается представление (временная таблица) УспеваемостьМ1, содержащее те записи таблицы Успеваемость, у которых в поле ГРУП хранится значение М-1.

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

180