В. И. Швецов Базы данных
Скачать 8.45 Mb.
|
11.3.2. Общая характеристика SQLЯзык запросов SQL основан на операциях реляционной алгебры и, таким образом ориентирован на работу с множествами (отношениями), а не с отдельными записями. Как и в реляционной алгебре, операндами языка являются отношения (таблицы), результатами выполнения операции также являются отношения (таблицы). Таким образом, язык SQL предназначен для выполнения операций над таблицами, причем как над таблицами в целом (создание, удаление, изменение структуры), так и над данными таблиц (выборка, изменение, добавление и удаление). Отметим, что в явном виде язык SQL не является универсальным языком программирования в обычном понимании. В нем отсутствуют операторы условного перехода, организации циклов, позволяющие управлять ходом выполнения программы. Поэтому язык SQL относится к классу непроцедурных языков программирования. Это именно язык запросов к базе данных, который служит исключительно для организации базы данных и работы с ней. Как уже отмечалось выше, для разработки прикладных программ необходимо использовать другие базовые средства программирования, в который операторы языка SQL будут встраиваться. Языку SQL посвящено большое количество литературы, в том числе и учебников. Подробное изучение языка SQL не входит в задачи настоящего курса, это может занимать отдельный курс. Заметим, что этому языку посвящено большое количество литературы, в том числе и учебников. В связи с этим , здесь будут изложены только общие сведения о языке, как фундаментальном инструменте работы с базами данных. Терминология Под запросом, реализуемым с помощью языка SQL- запросов к базе данных, понимается команда, предназначенная для выполнения (и выполняемая) системой управления базами данных определяемого этой командой действия с базой данных. Запрос реализуется с помощью операторов языка SQL. Операторы состоят из отдельных логических частей, называемых предложениями. Стандарты языка SQL регламентируют синтаксис операторов. Несмотря на то, что язык SQL работает с реляционной базой данных, вместо термина «отношение» здесь используется термин «таблица», вместо терминов «кортеж» и «атрибут» используются соответственно термины «строка» и «столбец». Разновидности SQL Как отмечалось выше, в отличие от «обычных» языков программирования в SQL отсутствует возможность объявления переменных, нет инструкции IF, нет цикла FOR и т.д. Собственно программирование (разработка прикладных программ) на подобном языке практически невозможно. Поэтому к настоящему моменту используются следующие технологии (режимы) работы с базой данных на языке SQL (в некоторых источниках эти технологии называют разновидностями языка SQL):
В интерактивном режиме работы с базой данных: пользователь работает с базой данных в прямом диалоге: вводит запрос на языке SQL – получает результат, вводит другой запрос – получает другой результат и т.д. Встроенный SQL представляется операторами языка SQL, встроенные в прикладные программы, написанные на других языках программирования (в других программных средах). Это дает возможность работы с базой данных с помощью прикладных программ, написанных на других алгоритмических языках, но требует включения дополнительных средств, обеспечивающих интерфейс между операторами языка SQL и соответствующим языком программирования. При статическом использовании языка (статический SQL) в текст прикладной программы включаются конкретные операторы SQL, и после компиляции исходной программы в выполняемый модуль жестко включаются соответствующие эти операторам функции SQL. Изменения в вызываемых функциях могут здесь определяться только изменениями параметров операторов SQL, инициируемых с помощью переменных языка программирования. При динамическом использовании языка (динамический SQL) формирование SQL-запросов, соответствующие вызовы SQL-функций для обращения к базе данных осуществляется динамически в ходе выполнения программы. Еще одним способом динамического формирования SQL-запросов в прикладной программе является обращение к соответствующим SQL-функциям с помощью специальных интерфейсов программирования приложений (библиотек функций, разработанных для связи прикладной программы и СУБД посредством SQL-запросов). В настоящем пособии для всех указанных технологий (разновидностей SQL) будут приведены основные идеи и рассмотрены ключевые концепции. Интерактивный SQL будет рассмотрен более подробно, чем программный. Детальное рассмотрение статического, динамического SQL и различных API-интерфейсов (ODBC, JDBC, DB Library и др.) выходит за рамки нашего курса. Краткие итоги: В лекции рассматриваются общие принципы организации программного обеспечения работы с реляционными базами данных, включающего
Рассматриваются подходы к организации доступа к данным (навигационный подход и подход, основанный на использовании интерпретируемых языков запросов). Дается общее представление о языке SQL (история возникновения и стандарты языка SQL, достоинства языка SQL, основная терминология, технологии работы). По языку SQL написано достаточно много литературы. Для более подробного знакомства можно указать, в частности [1-6]. Контрольные тесты Задача 1. Какие основные направления использования программного обеспечения клиент-серверных СУБД? Вариант 1. Какие основные задачи программного обеспечения можно выделить при разработке прикладных программ, работающих с базой данных? ð+ создание базы данных ð+ организация работы с базой данных ð+ создание пользовательского интерфейса ð разработка программ СУБД ð разработка вычислительных процедур Вариант 2. Что можно создавать с помощью программного обеспечения компьютера-сервера? ð прикладную программу ð интерфейс пользователя ð+ базу данных ð+ запросы к базе данных Вариант 3. Что можно делать с помощью программного обеспечения компьютера-сервера и компьютера-клиента? ð+ Прикладную программу ð+ Интерфейс пользователя ð Базу данных ð+ Запросы к базе данных Задача 2. Вариант 1. Какие средства программирования могут быть использованы для ведения баз данных на сервере SQL-Server? ð+ MS SQL-Server ð библиотеки функций ð+ Transact SQL ð MS Acces ð MS Visual Basic Вариант 2. Какие средства программирования могут быть использованы для разработки клиентской части? ð+ библиотеки функций ð+ Transact SQL ð+ MS Acces ð+ MS Visual Basic ð+ MS Visual Studio Вариант 3. Операторы каких средств программирования могут быть использованы как в серверной так и в клиентской части? ð библиотеки функций ð+ Transact SQL ð MS Acces ð MS Visual Basic ð MS Visual Studio Задача 3. В чем состоит отличие процедурного языка программирования от языка запросов при работе с таблицами? Вариант 1. Как формулируется алгоритм работы с таблицей с помощью процедурного языка программирования? ð+ как последовательность движений по таблице с выполнением других необходимых действий ð как указание выбрать данные, удовлетворяющие заданным условиям ð+ осуществлением навигации по таблице ð+ как последовательная работа с отдельными записями таблицы Вариант 2. Как формулируется алгоритм работы с таблицей с помощью языка запросов? ð как последовательность движений по таблице с выполнением других необходимых действий ð+ как указание выбрать данные, удовлетворяющие заданным условиям ð осуществлением навигации по таблице ð как последовательная работа с отдельными записями таблицы Вариант 3. Как осуществляется работа с таблицами при взаимодействии компьютера-клиента с сервером? ð путем навигации по таблице ð с помощью процедур ð+ с помощью запросов ð с помощью языков программирования Задача 4. Почему необходимо иметь стандарт языка? Вариант 1. Что достигается введением стандарта языка ? ð+ единообразие возможностей работы с базами данных в разных СУБД ð+ создание прототипа описания языка запросов к базе данных ð+ создание условий для устранения разных реализаций аналогичных операций с базой данных в разных СУБД ð полная унификация языков запросов в разных СУБД Вариант 2. Что реализовано в современных СУБД? ð стандарт языка запросов ð+ диалект языка запросов ð+ основные положения стандарта языка запросов ð+ ядро стандарта языка запросов Вариант 3. Как связаны диалект языка и стандарт языка? ð+ диалект языка игнорирует некоторые положения стандарта ð+ имеются положения диалекта языка, не входящие в стандарт языка ð+ имеются положения стандарта языка, не входящие в диалект языка ð диалект языка является конкретной реализацией всех положений стандарта языка Задача 5. Основные свойства языка запросов SQL Вариант 1. Каковы основные достоинства языка SQL? Универсальный язык программирования ð+ наличие стандарта ð+ реляционная основа ð+ поддержка архитектуры клиент-сервер ð+ использование во многих СУБД ð использование для разработки прикладных программ Вариант 2. Что является операндами в операторах языка SQL? ð+ отношение ð кортеж ð домен ð атрибут Вариант 3. Что является результатами выполнения операторов языка SQL? ð+ отношение ð кортеж ð домен ð атрибут Задача 6. Как осуществляется работа с интерактивным SQL? Вариант 1. Как пользователь работает с интерактивным SQL? ð вставляет текст на языке SQL в прикладную программу ð+ вводит непосредственно запрос на языке SQL ð обращается к языку SQL из прикладной программы ð+ вводит последовательно несколько запросов к базе данных на языке SQL Вариант 2. Как пользователь получает результат запроса к базе данных при работе с интерактивным SQL? ð результат получает прикладная программа ð+ результат выдается непосредственно пользователю после выполнения каждого оператора ð результат выводится в нужном пользователю виде ð результат выдается непосредственно пользователю после выполнения всей последовательности операторов Вариант 3. Как пользователь не может работать с интерактивным SQL? ð+ Вставлять текст на языке SQL в прикладную программу ð Вводить непосредственно запрос на языке SQL ð+ Обращаться к языку SQL из прикладной программы ð Вводить последовательно несколько запросов к базе данных на языке SQL Задача 7. Как осуществляется работа с встроенным статическим SQL? Вариант 1. Как пользователь работает с встроенным статическим SQL? ð+ вставляет текст на языке SQL в прикладную программу ð вводит непосредственно запрос на языке SQL ð текст запроса формируется прикладной программой ð вводит последовательно несколько запросов к базе данных на языке SQL Вариант 2. Как пользователь получает результат запроса к базе данных при работе с встроенным статическим SQL? ð+ результат получает прикладная программа ð результат выдается непосредственно пользователю после выполнения каждого оператора ð+ результат обрабатывается прикладной программой и выводится в нужном пользователю виде ð результат выдается непосредственно пользователю после выполнения всей последовательности операторов запроса Вариант 3. Как пользователь не может работать с встроенным статическим SQL? ð вставлять текст на языке SQL в прикладную программу ð+ вводить непосредственно запрос на языке SQL ð обращаться к языку SQL из прикладной программы ð+ формировать текст запроса работой прикладной программы Задача 8. Как динамически осуществляется работа с SQL? Вариант 1. Как пользователь работает с встроенным динамическим SQL? ð вставляет текст на языке SQL в прикладную программу ð вводит непосредственно запрос на языке SQL ð+ текст запроса формируется прикладной программой ð вводит последовательно несколько запросов к базе данных на языке SQL Вариант 2. Как пользователь получает результат запроса к базе данных при работе с встроенным динамическим SQL? ð+ результат получает прикладная программа ð результат выдается непосредственно пользователю после выполнения каждого оператора ð+ результат обрабатывается прикладной программой и выводится в нужном пользователю виде ð результат выдается непосредственно пользователю после выполнения всей последовательности операторов запроса Вариант 3. Как пользователь может работать с SQL, в условиях необходимости динамического формирования запроса во время выполнения прикладной программы? ð вставлять текст на языке SQL в прикладную программу ð+ использовать интерфейсы вызова подпрограмм ð обращаться к языку SQL из прикладной программы ð+ формировать текст запроса работой прикладной программы Литература
Лекция 12. Основные операторы языка SQL. Интерактивный SQL В лекции дается общая характеристика операторов языка SQL, используемых, в частности, для работы с базой данных в интерактивном режиме (создание таблиц, выбор информации из таблиц, добавление, удаление и модификация элементов). Приводятся примеры запросов к базе данных на языке SQL. Ключевые термины: язык SQL, интерактивный SQL, интерактивный режим работы с SQL, операторы SQL, select, insert, update,delete. Цель лекции: дать общую характеристику операторов языка SQL и показать, как записываются основные запросы к базе данных на языке SQL (в интерактивном режиме). 12.1. Общее представление об основных операторах языка SQL Как уже отмечалось в лекции 11, все операторы языка SQL разделяются на три составные части: DDL – язык определения данных, DCL – язык управления данными, DML – язык обработки данных. Приведем примеры основных операторов из вышеуказанных частей (без описания синтаксиса). Описание синтаксиса операторов SQL можно посмотреть в многочисленных книгах по языку SQL, в меню «Справка» конкретных СУБД. Операторы разграничения доступа пользователей к объектам базы данных (DCL). GRANT – создание в системе безопасности записи, разрешающей пользователю работать с данными или выполныять определенные операции SQL DENY - создание в системе безопасности записи, заперщающей доступ для определенной учетной записи. Операторы определения данных (язык DDL). Соответствующие операторы предназначены для создания, удаления, изменения основных объектов модели данных релюционных СУБД: таблиц, представлений, индексов. CREATE TABLE <имя> - создание новой таблицы в базе данных. DROP TABLE <имя> - удаление таблицы из базы данных. ALTER TABLE<имя> - изменение структуры существующей таблицы или ограничений целостности, задаваемых для данной таблицы. При выполнении аналогичных операций с представлениями или индексами в указанных операторах вместо служебного слова TABLE записывается слово VIEW (представление) или слово INDEX (индекс) |