Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shporochki_na_obdz.doc
Скачиваний:
5
Добавлен:
05.08.2019
Размер:
174 Кб
Скачать
☆

41. Управление транзакциями.

Для управления транзакциями имеется три выражения:  SET TRANSACTION - Начинает транзакцию и определяет ее поведение.  COMMIT - Сохраняет изменения, внесенные транзакцией, в базе данных и завершает транзакцию.  ROLLBACK - Отменяет изменения, внесенные транзакцией, и завершает транзакцию.  1. Запуск транзакции. Выполнять транзакции можно, например, из Windows Interactive SQL, из программы, из сохраненной процедуры или триггера. В общем виде, синтаксис команды SQL для запуска транзакции:  SET TRANSACTION [Access mode] [Lock Resolution]  [Isolation Level] [Table Reservation]  Значения, принимаемые по-умолчанию:  выражение SET TRANSACTION  равносильно выражению SET TRANSACTION READ WRITE WAIT ISOLATION LEVEL SNAPSHOT  READ WRITE - указывает, что транзакция может читать и модифицировать данные. Это значение принимается по умолчанию.  SNAPSHOT Внутри транзакции будут доступны данные в том состоянии, в котором они находились на момент начала транзакции. Если по ходу дела в базе данных появились изменения, внесенные другими завершенными транзакциями, то данная транзакция их не увидит. Конфликты, связанные с блокировкой записей происходят в двух случаях: 

1. Транзакция пытается модифицировать запись, которая была изменена или удалена уже после ее старта. Транзакция типа READ COMMITTED может вносить изменения в записи, модифицированные другими транзакциями после их завершения.  2. Транзакция пытается модифицировать таблицу, которая заблокирована другой транзакцией типа SNAPSHOT TABLE STABILITY.  Lock Resolution - определяет ход событий при обнаружении конфликта блокировки. WAIT - Ожидает разблокировки требуемой записи. После этого пытается продолжить работу. Когда все действия, составляющие транзакцию, успешно выполнены или возникла ошибка, транзакция должна быть завершена для того, чтобы база данных находилась в непротиворечивом состоянии. Для этого есть два SQL-выражения:  COMMIT - сохраняет внесенные транзакцией изменения в базу данных. Это означает, что транзакция завершена успешно.  ROLLBACK - откат транзакции. Транзакция завершается и никаких изменений в базу данных не вносится. Данная операция выполняется при возникновении ошибки при выполнении операции (например, при невозможности обновить запись). 42. Словарь данных. Определение, назначение, структура.

Словарь данных - это набор реляционных таблиц и представлений, которые содержат информацию о таблицах или метаданные.  В состав словаря данных базы данных входят:  1. Базовые таблицы  Основу словаря данных составляет совокупность базовых таблиц, хранящих информацию о базе данных. Эти таблицы читаются и пишутся ТОЛЬКО самим ORACLE; они редко используются непосредственно пользователем ORACLE любого типа, потому что они нормализованы, и большая часть данных в них закодирована.  2. Доступные пользователю представления  Словарь данных состоит из нескольких наборов представлений. Во многих случаях такой набор состоит из трех представлений, содержащих аналогичную информацию и отличающихся друг от друга своими префиксами:  1. USER_ХХХ - обзор пользователя (что есть в схеме пользователя)  2. ALL_ХХХ - расширенный обзор пользователя (к чему есть доступ)  3. DBA_ХХХ - обзор администратора (к чему все пользователи имеют доступ)  Представления с префиксом USER:  1. Отражают собственное окружение пользователя в базе данных, включая информацию об объектах, созданных этим пользователем, грантах, предоставленных им, и т.д..  2. Выдают лишь строки, имеющие отношение к пользователю.  3. Имеют столбцы, идентичные с другими представлениями, с тем исключением, что столбец OWNER подразумевается (текущий пользователь).  4. Возвращают подмножество информации, предоставляемой представлениями ALL могут иметь сокращенные общие синонимы для удобства.  43. Выбор данных из более, чем одной таблицы. Соединение данных.

Соединение 3 таблиц: select* from emp inner join dept using(deptno) inner join salgrade on emp.sal between losal and hisal

Соединение самой с собой: select e.ename, m.ename from emp e, emp m where e.mgr=m.empno and…

Минимальное число условий соединения равняется количеству соединяемых таблиц минус один  Виды соединений:  1. Соединение по равенству  В двух однотипных столбцах одинаковое содержание  SELECT *  FROM emp, dept  WHERE emp.deptno=dept.deptno  2. Соединение не по равенству  SELECT *  FROM emp, salgrade  WHERE sal BETWEEN losal AND hisal  3. Внешнее соединение  Если строка не удовлетворяет условию соединений, то никогда не попадает в таблицу результатов.  Для того чтобы увидеть строки которые есть в одной таблице и которым нет соответствия в другой используют внешнее соединение. 44. Операторы над множествами. Правила, которых необходимо придерживаться при использовании таких операторов.

Выборка – выбор не всех строк

Проекция – не все столбцы.

Соединение – выбор определенной информации из обеих таблиц.

Произведение – вывод всех комбинаций информации.

UNION (объединение) 

Объединение запросов для получения всех различных строк, которые возвращаются каждым подзапросом индивидуально. Пример: SELECT …UNION SELECT … INTERSECT (пересечение) Объединение запросов для получения тех строк, которые возвращаются в результате обоих подзапросов.  Пример: SELECT …INTERSECT SELECT …  MINUS (разность) Объединение запросов так, чтобы получить все строки, возвращаемые первым запросом и не возвращаемые вторым.  Пример: SELECT …MINUS SELECT … 45. Подзапросы.

Подзапросы, внутренние или вложенные запросы - есть не что иное, как запрос внутри запроса.  Синтаксис простого подзапроса выглядит так:  SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table) Здесь в качестве оператора может играть роль такие операторы сравнения как >;>=;<;<=;OR;IN при работе с запросами возвращающие ровно одно значение, а также для решения задач запросами возвращающие множество строк используйте в качестве операторов IN; ANY; ALL. При этом, сперва выполняется подзапрос (внутренней запрос), а результат операции будет передан основному запросу. То есть подзапросы выполняются от наиболее вложенных к основному. возможно использовать подзапросы в следующих частях оператора SELECT:  - В разделе SELECT  - В качестве таблицы в разделе FROM  - В разделе WHERE  - В условиях HAVING  - В разделе ORDER BY  Подзапросы могут брать значения из других таблиц. Подзапросы возражающие множество строк в качестве результата  Рассматриваемые нами типы подзапросов возвращали в качестве результата одну или более строк. В случае, если подзапрос возвращает множество результатов, для подобных запросов необходимо использовать соответствующие операторы сравнения:  IN     - эквивалентно значению любого элемента из подзапроса  SOME | ANY - сравнивает значение со всеми значениями из подзапроса  ALL  - сравнивает значение со всеми значениями из подзапроса

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