Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
китДокумент Microsoft Word (7).doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
64.51 Кб
Скачать

50. Возможности языка sql по созданию вложенных и объединенных запросов.

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

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

SELECT

Извлекает данные из БД

SELECT [DISTINCT½ALL] {<выражение>},…½*FROM {<имя таблицы>},... [WHERE <условие>] [ORDER BY {<имя поля> [ASC½DESC]},...] [GROUP BY {<имя поля>},...] [HAVING <условие>]

SELECT * FROM Сведения WHERE ФИО="СИДОРОВ С. С." OR ФИО="ПЕТРОВ П. П."

извлекаются все записи, у которых в поле ФИО хранятся значения СИДОРОВ С. С. либо ПЕТРОВ П. П.

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

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

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

Команды COMMIT и ROLLBACK используются в основном в программном режиме, хотя возможно их использование и в интерактивном режиме.

К категории Управление доступом (см. табл. 5) относятся команды для осуществления административных функций, присваивающих или отменяющих право (привилегию) использовать таблицы в БД определенным образом. Каждый пользователь БД имеет определенные права по отношению к объектам БД. Права – это те действия с объектом, которые может выполнять пользователь. Права могут меняться с течением времени: старые могут отменяться, новые – добавляться. Стандартом языка SQL предусмотрены следующие права:

· SELECT – право читать таблицу;

· INSERT – право добавлять данные в таблицу;

· UPDATE – право изменять данные таблицы;

· DELETE – право удалять данные из таблицы;

· REFERENCES – право определять первичный ключ.

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

51.Диалекты языка sql в субд.

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

Выделяют три уровня соответствия стандарту ANSI/ISO — начальный, промежуточный и полный. В настоящее время не существует ни одного диалекта, полностью соответствующего стандарту. Производители СУБД (например, Oracle, Microsoft, Borland, Informix, Sybase) применяют собственные реализации SQL, отвечающие как минимум начальному уровню соответствия стандарту и содержащие некоторые расширения, специфические для данной СУБД. Не существует двух совершенно идентичных диалектов. Более того, поскольку разработчики баз данных вводят в системы все новые функциональные средства, они постоянно расширяют свои диалекты языка SQL, в результате чего отдельные диалекты все больше и больше отличаются друг от друга. Это имеет свои достоинства и недостатки.

Конкретная реализация языка, может включать в себя более широкие возможности по сравнению со стандартом SQL, например, больше типов данных, большее количество команд, больше дополнительных возможностей у имеющихся команд. Такие возможности делают работу с конкретной СУБД более эффективной. Кроме того, такие нестандартные возможности языка проходят практическую апробацию и со временем могут быть включены в стандарт. Недостаток в том, что различия в синтаксисе реализаций SQL затрудняют перенос приложений из одной системы в другую. Например, если приложение было написано для базы данных MS SQL Server с использованием своего диалекта SQL – языка Transact-SQL, то при переносе системы в базу данных ORACLE, не все конструкции языка будут понятны соответствующему диалекту SQL – языку PL/SQL.

В широко распространенных в настоящее время СУБД используются следующие диалекты языка SQL: PL/SQL – в СУБД Oracle;

Transact-SQL – в СУБД Microsoft SQL;

Informix-SQL – в СУБД Informix;

Jet SQL – Microsoft Access.

Язык Jet SQL почти соответствует стандарту ANSI SQL. Основные различия языков Jet SQL и ANSI SQL состоят в следующем:

они имеют разные наборы зарезервированных слов и типов данных;

разные правила применимы к оператору Between, используемому для определения условий выборки записей; подстановочные знаки ANSI и Microsoft Jet, которые используются в операторе Like, различны; язык Jet SQL обычно предоставляет пользователю большую свободу, например, разрешается группировка и сортировка по значению выражения;

язык Jet SQL позволяет использовать более сложные выражения.