Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Oracle - MS Server / БД_Oracle / отчётОраклпо Лабе.docx
Скачиваний:
13
Добавлен:
17.04.2018
Размер:
40.42 Кб
Скачать

Локальные индексы

Локально секционированные индексы, в отличие от глобально секционированных индексов, имею отношение «один к одному» с разделами таблицы. Локально секционированные индексы можно создавать в соответствии с разделами и даже подразделами. База данных конструирует индекс таким образом, чтобы он был секционирован так же, как и его таблица. При каждой модификации раздела таблицы база автоматически сопровождает это соответствующей модификацией раздела индекса. Это, наверное, самое большое преимущество использования локально секционированных индексов – Oracle автоматически перестраивает их всегда, когда уничтожается раздел или над ним выполняется какая-то другая операция DDL.

Ниже приведен простой пример создания локально секционированного индекса на секционированной таблице:

SQL> CREATE INDEX ticket_no_idx ON

Ticket_sales(ticket_no) LOCAL

TABLESPACE localidx_01;

Невидимые индексы

По умолчанию оптимизатор «видит» все индексы. Тем не менее, можно создать невидимый индекс, который оптимизатор не обнаруживает и не принимает во внимание при создании плана выполнения оператора. Невидимый индекс можно применять в качестве временного индекса для определенных операций или его тестирования перед тем, как сделать его «официальным». Вдобавок, иногда объявления индекса невидимым можно использовать в качестве альтернативы уничтожению индекса или объявлению его недоступным. Сделать индекс невидимым можно временно, чтобы протестировать эффект от его уничтожения.

С помощью команды ALTER INDEX можно превратить существующий индекс в невидимый.

ALTER INDEX test_idx INVISIBLE;

И обратная команда

ALTER INDEX test_idx VISIBLE;

Приведенный ниже запрос к представлению DBA_INDEXES показывает состояние видимости индекса:

SELECT index_name, visibility

FROM user_indexes

WHERE index_name =’indx1’;

  1. Какие ограничения целостности и как создаются в субд Oracle?

Существует следующие типы ограничений:

NOT NULL UNIQUE CHECK PRIMARY KEY FOREIGN KEY

Способ определение на уровне столбцов: column [CONSTRAINT constraintname] constraint_type,

Способ определения на уровне таблицы: column, ... [CONSTRAINT constraint_name] constraint_type (column, ...),

  1. Как запретить, разрешить, изменить или удалить созданные ограничения целостности?

С помощью операторов CREATE TABLE или ALTER TABLE можно задавать состояние каждого Ограничения на уровне таблицы, используя следующие выражения:

  • ENABLE гарантирует удовлетворение всех входных данных Ограничению;

  • DISABLE позволяет входным данным не соответствовать Ограничению;

  • VALIDATE гарантирует, что все уже имеющиеся в таблице данные соответствуют Ограничению;

  • NOVALIDATE позволяет уже имеющимся в таблице данным не соответствовать Ограничению;

Синтаксис удаления ограничения целостности

    

ALTER TABLE table DROP PRIMARY KEY | UNIQUE (column) | CONSTRAINT constraint [CASCADE];

Элементы синтаксиса:

  • table имя таблицы;

  • column имя столбца, на который действует ограничение;

  • constraint имя ограничения.

Когда удалено ограничение целостности, это ограничение больше не применяется принудительно сервером Oracle и больше не доступно в словаре данных.

  1. Когда целесообразно дополнительно предусмотреть проверку ограничений целостности при программировании пользовательского интерфейса?

  2. Как создать ограничения первичного и внешнего ключей?

CONSTRAINT PK_Flat PRIMARY KEY (Flat),

CONSTRAINT FK_Kadastr FOREIGN KEY (Kadastr) REFERENCES Building (Kadastr

  1. Как формируется внешнее соединение таблиц и как оно задается на языке SQL СУБД Oracle?

Задается через внешний ключ

  1. Какие операторы объединения предусмотрены в языке SQL СУБД Oracle и как они выполняются?

JOIN – соединяет

UNION – объединяет

UNION ALL – объединяет с повторениями

Оператор INTERSECT возвращает строки, которые являются общими для обоих запросов.

Оператор MINUS возвращает все уникальные строки, выбранные первым запросом, но не существующие в наборе результатов второго запроса.

  1. Как перенести данные из одних таблиц в другую?

insert into table1 (column1, ....)

select column2, ... from table2

  1. Как создать новую таблицу на основе уже существующей?

Данные тоже копируются

create table as select * from t

Копируется только конструкция таблицы

create table t_new as select * from t where 1=0;

  1. Как изменить структуру таблицы?

ALTER TABLE MyTable ADD CI NUMBER(4);  ALTER TABLE MyTable DROP COLUMN C1;

Первый оператор добавляет столбец с именем С1 и присваивает ему тип числа длиной четыре символа. Второй оператор удаляет только что созданный столбец. 

ALTER TABLE Т1 MODIFY C1 NOT NULL;

Теперь столбец C1 будет обязательно требовать присвоения значения.

  1. Как создать, использовать и удалить представление?

Создание:

CREATE VIEW Londonstaff

AS SELECT *

FROM Salespeople

WHERE city = 'London';

Используется как обычная таблица:

SELECT *

FROM Londonstaff;

Пример модификации:

UPDATE Salesown

SET city = 'Palo Alto'

WHERE snum = 1004;

Удаеление:

DROP VIEW < view name >

Соседние файлы в папке БД_Oracle