
- •Для чего предназначены индексы, создаваемые в базе данных?
- •Как влияет наличие индекса на время выполнения операций с таблицами базы данных?
- •Как создать и удалить индекс?
- •Что означает понятие “кардинальность”?
- •Какие типы индексов предусмотрены в субд Oracle? Когда целесообразно создавать индекс определенного типа?
- •Специальные типы индексов
- •Битовые индексы (bitmap indexes)
- •Индексы с реверсированным ключом
- •Индексы со сжатым ключом
- •Индексы на основе функций
- •Секционированные индексы
- •Глобальные индексы
- •Локальные индексы
- •Невидимые индексы
- •Какие ограничения целостности и как создаются в субд Oracle?
- •Как запретить, разрешить, изменить или удалить созданные ограничения целостности?
- •Как создать, использовать и модифицировать последовательность?
- •Для чего предназначен синоним? Как его создать и удалить?
Локальные индексы
Локально секционированные индексы, в отличие от глобально секционированных индексов, имею отношение «один к одному» с разделами таблицы. Локально секционированные индексы можно создавать в соответствии с разделами и даже подразделами. База данных конструирует индекс таким образом, чтобы он был секционирован так же, как и его таблица. При каждой модификации раздела таблицы база автоматически сопровождает это соответствующей модификацией раздела индекса. Это, наверное, самое большое преимущество использования локально секционированных индексов – 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’;
-
Какие ограничения целостности и как создаются в субд Oracle?
Существует следующие типы ограничений:
NOT NULL UNIQUE CHECK PRIMARY KEY FOREIGN KEY
Способ определение на уровне столбцов: column [CONSTRAINT constraintname] constraint_type,
Способ определения на уровне таблицы: column, ... [CONSTRAINT constraint_name] constraint_type (column, ...),
-
Как запретить, разрешить, изменить или удалить созданные ограничения целостности?
С помощью операторов CREATE TABLE или ALTER TABLE можно задавать состояние каждого Ограничения на уровне таблицы, используя следующие выражения:
-
ENABLE гарантирует удовлетворение всех входных данных Ограничению;
-
DISABLE позволяет входным данным не соответствовать Ограничению;
-
VALIDATE гарантирует, что все уже имеющиеся в таблице данные соответствуют Ограничению;
-
NOVALIDATE позволяет уже имеющимся в таблице данным не соответствовать Ограничению;
Синтаксис удаления ограничения целостности
|
ALTER TABLE table DROP PRIMARY KEY | UNIQUE (column) | CONSTRAINT constraint [CASCADE]; |
Элементы синтаксиса:
-
table имя таблицы;
-
column имя столбца, на который действует ограничение;
-
constraint имя ограничения.
Когда удалено ограничение целостности, это ограничение больше не применяется принудительно сервером Oracle и больше не доступно в словаре данных.
-
Когда целесообразно дополнительно предусмотреть проверку ограничений целостности при программировании пользовательского интерфейса?
-
Как создать ограничения первичного и внешнего ключей?
CONSTRAINT PK_Flat PRIMARY KEY (Flat),
CONSTRAINT FK_Kadastr FOREIGN KEY (Kadastr) REFERENCES Building (Kadastr
-
Как формируется внешнее соединение таблиц и как оно задается на языке SQL СУБД Oracle?
Задается через внешний ключ
-
Какие операторы объединения предусмотрены в языке SQL СУБД Oracle и как они выполняются?
JOIN – соединяет
UNION – объединяет
UNION ALL – объединяет с повторениями
Оператор INTERSECT возвращает строки, которые являются общими для обоих запросов.
Оператор MINUS возвращает все уникальные строки, выбранные первым запросом, но не существующие в наборе результатов второго запроса.
-
Как перенести данные из одних таблиц в другую?
insert into table1 (column1, ....)
select column2, ... from table2
-
Как создать новую таблицу на основе уже существующей?
Данные тоже копируются
create table as select * from t
Копируется только конструкция таблицы
create table t_new as select * from t where 1=0;
-
Как изменить структуру таблицы?
ALTER TABLE MyTable ADD CI NUMBER(4); ALTER TABLE MyTable DROP COLUMN C1;
Первый оператор добавляет столбец с именем С1 и присваивает ему тип числа длиной четыре символа. Второй оператор удаляет только что созданный столбец.
ALTER TABLE Т1 MODIFY C1 NOT NULL;
Теперь столбец C1 будет обязательно требовать присвоения значения.
-
Как создать, использовать и удалить представление?
Создание:
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 >