Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс лекций СБД.doc
Скачиваний:
23
Добавлен:
13.11.2019
Размер:
1.94 Mб
Скачать
      1. Примеры использования реляционной алгебры для выражения словесных запросов в виде формул

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

((Поставки JOIN Поставщики) WHERE Д№=’Д2’) [Имя_П];

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

(((Детали WHERE Цв = ‘Черный’) JOIN Поставки) [П№] JOIN Поставщики) [Имя_П]

или

(((Детали WHERE Цв = ‘Черный’) [Д№] JOIN Поставки) JOIN Поставщики) [Имя_П]

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

((Поставки [П№,Д№] DIVIDEBY Детали [Д№] JOIN Поставщики) [Имя_П]

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

Поставки [П№,Д№] DIVIDEDBY (Поставки WHERE Имя_П=’П2’) [Д№]

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

((Поставщики [П№] MINUS (Поставки WHERE Д№=’Д2’) [П№]) JOIN (Поставщики) [Имя_П]

Покажем, в качестве примера, как выглядит запись команды на выполнение последнего запроса, сделанная на языке SQL:

SELECT DISTINCT Поставщики.[Имя_П] FROM Поставщики WHERE Поставщики.[П.№] NOT IN (SELECT Поставки.[П№] FROM Поставки WHERE Поставки.[Д№]=’Д2’);

  1. Основы sql

Познакомимся с синтаксисом и конструкцией языка структурированных запросов SQL (Structured Query Language). Это позволит лучше понимать процесс обработки данных и создавать эффективные запросы.

SQL – наиболее распространенный язык управления базами данных архитектуры клиент-сервер. Стандарт современной версии ANSI SQL был принят в 1992 году. Эта версия дает возможность использовать общий набор операторов в любой SQL-совместимой программе управления базами данных. Так, MS ACCESS использует версию Microsoft Jet SQL. СУБД SQL Server 7.0 использует расширенную версию SQL – Transact-SQL. Разработчики SQL-совместимых программ управления базами данных имеют право свободно расширять этот язык, если поддерживается стандартный набор основных команд, описанный в ANSI SQL-92. Мы будем уделять большее внимание версии Jet SQL.

Стандарт ANSI SQL-92 содержит около 200 ключевых слов, а в Jet SQL используется менее половины из них. Кроме того, в Jet SQL зарезервирован набор слов, не имеющих аналогов в ANSI SQL-92.

Все ключевые слова ANSI SQL, поддерживаемые используемой модификацией Jet SQL, а также зарезервированные уникальные слова, можно найти в справочных пособиях (в том числе и в системе помощи MS Access).

Возможности современных реляционных баз данных позволяют осуществлять эффективное управление данными, используя одновременно два языка – язык реляционных баз данных SQL и язык программирования VBA (Visual Basic for Applications), разработанный для программных продуктов пакета MS Office.

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

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

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

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

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

Синтаксис SQL предусматривает использование знаков пунктуации:

  • запятые используются для разделения компонентов списка параметров;

  • точки используются для отделения имен таблиц от имен полей;

  • точка с запятой ставится в конце инструкции Jet SQL;

  • квадратные скобки используются для выделения имен полей только тогда, когда в именах используются пробелы или другие знаки пунктуации, не разрешенные в SQL;

  • одинарная (предпочтительней) или двойная кавычка применяется для описания строчных переменных;

  • символы * и ? используются для маскирования окончания или одного символа соответственно;

  • символ # применяется для представления одной цифры в операторе LIKE.

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

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

SQL – непроцедурный, или декларативный язык. В нем нужно описывать то, что именно вы хотите сделать, а не то, как вы собираетесь это делать (в отличие от процедурных языков С, Perl, Pascal…). Оптимизатор, который входит в состав программного обеспечения СУБД, самостоятельно рассчитывает как это делать.

Язык SQL может быть встроенным (когда команды SQL как элементы включаются в какие-нибудь программы, написанные на процедурных языках общего назначения C, Java, Pascal… или языках сценариев Perl, PHP, Python…) и/или интерактивным.