Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_K_Magistrature.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
508.41 Кб
Скачать
  1. Язык sql. Назначение и основные операторы языка sql. Представления.

Непроцедурный язык SQL (Structured Query Language – структурированный язык запросов) ориентирован на операции с данными, представленными в виде логически взаимосвязанных совокупностей таблиц. Особенность предложений этого языка состоит в том, что они ориентированы в большей степени на конечный результат обработки данных, чем на процедуру этой обработки. SQL сам определяет, где находятся данные, какие индексы и даже наиболее эффективные последовательности операций следует использовать для их получения: не надо указывать эти детали в запросе к базе данных.

Структура языка SQL

Язык SQL делится на подмножества.

1) Язык определения данных (DDL – Data Definition Language) предоставляет пользователям средства указания типа данных и их структуры, а также средства задания ограничений для информации, хранимой в базе данных.

Операторы: CREATE, ALTER, DROP.

CREATE служит для создания любого типа объектов, из которых состоит база данных, в том числе таблиц.

ALTER служит для изменения структуры любых объектов, из которых состоит база данных.

DROP служит для удаления объектов из базы данных.

2) Язык манипулирования данными (DML – Data Manipulation Language) позволяет вставлять, обновлять и извлекать информацию из базы данных.

Операторы: SELECT, INSERT, DELETE, UPDATE.

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

Любая новая информация попадает в базу данных посредством использования оператора INSERT.

Оператор UPDATE используется для изменения существующих строк таблиц.

Оператор DELETE используется для удаления существующих строк таблиц.

3) Язык управления данными (DCL – Data Control Language) состоит из управляющих операторов.

Операторы – GRANT, REVOKE.

Оператор GRANT используется для предоставления привилегии, а оператор REVOKE – для изъятия привилегии, выданной оператором GRANT. Оба оператора могут использоваться как для объектных, так и для системных привилегий.

Объектная привилегия (object privilege) разрешает выполнение определенной операции над конкретным объектом (например, над таблицей). Название каждой из объектных привилегии совпадает с названием оператора, который она разрешает выполнять тому или иному пользователю над конкретным объектом базы данных. Примеры объектных привилегий: SELECT, DELETE, INSERT, UPDATE, REFERENCES.

Системная привилегия (system privilege) разрешает выполнение операций над целым классом объектов – над всеми объектами какого-то типа, принадлежащими конкретному пользователю, или вообще над всеми объектами какого-то типа во всей базе данных. При выдаче или изъятии системных привилегий не указывается название объекта, а

4) Язык управления транзакциями (TCL – Transaction Control Language) состоит из операторов, предназначенных для управления ходом выполнения транзакций.

Операторы: COMMIT, ROLLBACK, SAVEPOINT.

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

Существует три операторы, предназначенные для управления транзакциями:

  1. COMMIT – явная фиксация транзакции;

  2. ROLLBACK – явная отмена изменения в текущей транзакции;

  3. SAVEPOINT – создание контрольной точки внутри транзакции (промежуточная фиксация транзакции с возможность отката к этой точке);

Представления

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

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

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

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

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

CREATE [OR REPLACE] VIEW имя_представления AS

оператор SELECT

[WITH CHECK OPTION]- применима к обновляемым представлениям

Удаление представлений, как и всех других объектов базы данных, осуществляется при помощи оператора DROP, например:

DROP VIEW имя_представления

Операции выборки из представлений – при помощи оператора SELECT.

Если к представлению можно применить операторы обновления (INSERT, UPDATE или DELETE), то представление является обновляемым (updateble), иначе оно является читаемым (read-only).

Ниже приведены критерии того, является ли представление обновляемым в SQL:

  1. оно базируется на одной таблице;

  2. оно должно включать первичный ключ таблицы;

  3. оно не должно включать полей, полученных в результате применения функций агрегирования;

  4. оно не может содержать спецификации DISTINCT;

  5. оно не должно использовать GROUP BY или HAVING;

  6. оно не должно использовать подзапросы;

  7. оно может быть определено на другом представлении, но это представление должно быть обновляемым;

  8. оно не может содержать константы, строки или выражения в списке выбираемых выходных полей;

  9. для INSERT оно должно включать поля из таблицы, которые имеют ограничения NOT NULL.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]