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

Учебный материал / Кафедра экономики и менеджмента / Основы информационных технологий. Курс лекций

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

Просмотрите отчет, щелкая на кнопках перехода внизу окна для перемещения по страницам.

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

В режиме конструктора отчет напоминает форму, причем методика, которая используется для создания форм, может быть использована и в данном случае.

Закройте отчет Счет, а затем закройте базу данных GardenCo.

Если вы не намерены переходить к изучению следующей лекции, выйдите из программы Access.

Режим представления / просмотра

Режим конструктора

Тема: Введение в язык SQL

План:

1.Язык SQL в СУБД. Назначение, стандарты, достоинства.

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

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

4.Диалекты языка SQL в СУБД

-1-

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

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

История наиболее распространенного в настоящее время языка баз данных SQL насчитывает уже около 30 лет. Первый, достаточно полный функционально, но не полностью синтаксически и семантически определенный вариант языка SQL (его исходным названием было SEQUEL – StructuredEnglishQueryLanguage) был разработан и частично реализован в рамках проекта экспериментальной реляционной СУБД SystemR (проект выполнялся с 1974 по 1979 гг. в научноисследовательской лаборатории компании IBM в г. Сан-Хосе, Калифорния).

Название языка SQL (StructuredQueryLanguage – структурированный язык запросов) только частично отражает его суть. Язык SQL главным образом ориентирован на удобную и понятную пользователям формулировку запросов выбора из БД, однако его функции шире – с самого начала этот язык задумывался как полный язык БД. Под этим понимается, что (по крайней мере, теоретически) для выполнения любых осмысленных действий с базой данных, управляемой 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 Database Language), который построен на использовании сетевой модели CODASYL, но он применяется лишь в немногих разработках.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

содержимому);

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

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

-2-

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

Каждая команда SQL начинается с действия – ключевого слова или группы слов, описывающих выполняемую операцию. Например, INSERT (добавить), DELETE (удалить), COMMIT (завершить), CREATE TABLE (создать таблицу).

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

После действия может следовать одно или несколько предложений. Предложение описывает данные, с которыми работает команда, или содержит уточняющую информацию о действии, выполняемом командой. Каждое предложение начинается с ключевого слова, такого как, например, WHERE (где), FROM (откуда), INTO (куда), HAVING (имеющий). Многие предложения содержат имена таблиц и полей БД; некоторые – константы и выражения.

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

Пример команды SQL:

 

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

Тип данных

Описание

CHAR(длина)

 

CHARACTER(длина)

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

INTEGER

 

INT

Целое число

SMALLINT

Малое целое число

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

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

 

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

Число с фиксированной запятой

FLOAT (точность)

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

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

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

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

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

Различают следующие виды констант: Константы с фиксированной запятой (пишут точку)

21 -375.18 62.3

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

1.5Е7 -3.14Е9 2.5Е-6 0.783Е24

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

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

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

Хотя в SQL-1 стандартные функции не определены, большинство СУБД поддерживает так называемые агрегатные (итоговые) функции. К часто используемым агрегатным функциям можно отнести следующие:

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

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

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

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

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

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

Ввыражениях можно использовать следующие типы операторов:

·арифметические:

+ (сложение), - (вычитание),

* (умножение), / (деление);

· отношения:

 

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

· логические:

AND (логическое "И"), OR (логическое "ИЛИ"), NOT ("НЕТ"); · специальные:

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

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

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

IS NULL – используется для поиска NULL-значений.

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

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

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

-3-

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

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

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

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

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

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

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

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

и др.

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

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

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

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

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

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

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

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

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

Таблица 2

Команды описания данных

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

Таблица 3

Команды внесения изменений в БД

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

Таблица 4

Команда извлечения данных

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

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

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