Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Управление данными. Использование технологий ORACLE для реализации баз данных. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
722 Кб
Скачать

Ключи:

первичным ключом (PRIMARY KEY) называется один или несколько столбцов, предназначенных для однозначной идентификации строк в таблице. Значения первичных ключей не должны изменяться и не должныбыть пустыми;

внешним ключом (FOREIGN KEY) называется столбец, содержащий значения первичного ключа другой таблицы. Внешний ключ может принимать пустое значение. К примеру, если столбец DEPTNO является первичным ключом в таблице DEPT, то столбец DEPTNO в таблице EMP будет внешним ключом, так как он содержит ссылки на DEPTNO таблицы EMP;

уникальный ключ (UNIQUE KEY) во всем аналогичен первичному, за исключением того, что он предназначается для обеспечения уникальности каждой записи, например, номера телефона или номераводительских прав.

Первичный ключ может не содержать никакой полезной информации,

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

2.3. ПРЕДСТАВЛЕНИЕ (VIEW)

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

Формат команды создания:

CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW имя_предст альт_имя, альт_имя,...

AS запрос

[WITH CHECK OPTION] [WITH READ ONLY] [CONSTRAINT огра-

ничение]

FORCE | NOFORCE позволяет создавать представление с учётом или без учёта того, существуют ли применяемые в нем таблицы. Опция NOFORCE применяется по умолчанию и определяет необходимостьсуществования таблиц, применяемых в представлении, до создания этого представления;

запрос – есть оператор SELECT (без предложений ORDER BY и FOR UPDATE OF), который определяет, из каких столбцов и строк будет состоять создаваемое представление данных. Может содержать алиасы столбцов;

WITH CHECK OPTION – указывает, что следует не допускать вставки и обновления данных через данное представление данных, если они не будут «видны» через него. Это бывает полезно, когда представление данных основывается на других представлениях;

20

READ ONLY – позволяет запретить применение к этому представлению каких-либо операторов DML.

Представление данных можно использовать вместо настоящей таблицы в операторах SELECT, INSERT, UPDATE, DELETE, но при этом в операторе SELECT должны присутствовать:

объединение;

предложения GROUP BY, CONNECT BY или STARTWITH;

предложение DISTINCT, псевдостолбцы (например, ROWNUM) или выра-жения в списке столбцов. Можно также обновлять виртуальные таблицы, содержащие псевдостолбцы (с помощью оператора UPDATE), еслине пытаться изменить их значения.

Пример.

CREATE VIEW ed AS SELECT e.empno, e.ename, d.deptno, d.loc FROM emp e, dept d

WHERE e.deptno = d.deptno; View created.

SELECT column_name, updatable FROM user_updatable_columns WHERE table_name = ’ED’; COLUMN_NAME UPD;

––––––––––––––– –––

ENAME YES

DEPTNO NO

EMPNO YES

LOC NO

2.4. ИНДЕКС

Применяется для повышения скорости выборки и для сортировки (вместо сортировки). Использование индекса эффективно, если размер выборки, возвращаемой запросом, не превышает 25% (чем меньше, тем лучше). Oracle автоматически использует только те индексы, которые есть в наличии. Автоматически создаются индексы для главного ключа и для уникальных полей таблицы. Для всех остальных требуется создавать. Индекс также может бытьиспользован для обеспечения уникальности значений. Индексировать данные можно максимум по 16 столбцам.

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

Формат команды создания:

21

CREATE [UNIQUE] INDEX [schema.]index_name ON { table_name

(column_name [ASC|DESC] [,

column_name[ASC|DESC]]

[,

...]) | CLUSTER [schema.]cluster }

 

[TABLESPACE tablespace_name]

[STORAGE parameters]

;

[INITRANS integer] [MAXTRANS integer]

 

[PCTFREE integer] [NOSORT]

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

index_name, table_name – имя создаваемого индекса и имя таблицы, к столбцам которой создаётся индекс.

column_name – имя столбца таблицы.

ASC/DESC – Индексы создаются в восходящем/нисходящем порядке (по умолчанию – ASC).

cluster – имя кластера, к которому создаётся индекс.

tablespace_name – имя области хранения, в которой будет храниться

индекс.

PCTFREE – процент пространства в каждом индексном блоке, оставляемого пустым для дальнейших вставок иобновлений (по умолчанию 10). При указании 0 вставка не допустима

NOSORT – отключает сортировку строк перед созданием индекса (если строки уже отсортированы в восходящем порядке). Употребление этого параметра может значительно ускорить процесс создания индекса. Параметр NOSORT не может применяться при создании кластерного индекса.

Параметры INITRANS и MAXTRANS имеют такое же значение, как

ив операторе CREATE TABLE.

Индекс может быть создан на одном или нескольких столбцах. Если индекс содержит более одного столбца, он называется составным ключом. Индексы создаются автоматически при указании ограничения PRIMARY KEY в операторе создания таблицы. Если применяется фраза UNIQUE, то будет возвращено сообщение об ошибке при попытке вставить повторяющееся значение в столбце, на котором определен уникальный индекс. Индексы используются автоматически при указании индексированного столбца во фразе WHERE

Команда DESC[RIBE] объект позволяет получить описания объектов: таблиц, представлений и др.

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

22

USER_TABLES -- Отображает информацию о таблицах, принадлежащих пользователю

USER_CONSTRAINTS -- Отображает информацию об ограничениях ALL_TABLES -- Отображает информацию о всех таблицах, доступных

пользователю

Пример.

 

 

SQL> desc user_tables

 

 

Имя

Пусто?

Тип

TABLE_NAME

 

NOT NULL VARCHAR2(30)

TABLESPACE_NAME

 

VARCHAR2(30)

CLUSTER_NAME

 

VARCHAR2(30)

. . . . . . . . . . . . . . . . . . . . .

SQL> select table_name from user_tables 2 /

TABLE_NAME

BONUS

CARRIAGE DEPT

DUMMY

EMP

EXIBITION LOG

ORGANIZATION

PETS

R1

SALGRADE

TABLE_NAME

TB1 TB2

14 строк выбрано.

2.5. ИЗМЕНЕНИЯ ОБЬЕКТОВ

ALTER TABLE (модифицировать таблицу)

ALTER TABLE польз.таблица

ADD описание_столбца | ограничение_таблицы, описание_столбца | ограничение_для_таблицы,... MODIFY описание_столбца, описание_столбца,...

DROP CONSTRAINT ограничение, ограничение,... PCTFREE целое PCTUSED

целое

INITRANS целое MAXTRANS целое

STORAGE предложение

BACKUP

23

Оператор ALTER TABLE позволяет добавлять в таблицу столбцы и ограничения, изменять размер и тип данных существующих столбцов, изменять установки NULL/NOT NULL, удалять ограничения, изменять схему хранениятаблицы и заносить в словарь данных информацию о том, что была создана резервная копия таблицы (т.е. был выполнен выполнен BACKUP).

Пример.

ALTER TABLE PriceList ADD Manufacturer VARCHAR(24) – добавили столбец «Manufacturer»

ALTER TABLE PriceList MODIFY Vendor varchar(16) – изменили столбец

«Manufacturer»

ALTER TABLE PriceList DROP COLUMN Manufacturer – удалили столбец

«Manufacturer»

ALTER SEQUENCE (изменить последовательность)

ALTER SEQUENCE польз.последовательность

INCREMENT BY целое

MAXVALUE целое | NOMAXVALUE MINVALUE целое | NOMINVALUE

CYCLE | NOCYCLE

CACHE целое | NOCACHEORDER | NOORDER

Оператор ALTER SEQUENCE предназначен для:

изменения приращения при генерации последовательности чисел;

переустановки или удаления параметров MINVALUE или

MAXVALUE;

включения или выключения характеристик CACHE и ORDER. Значение CACHE должно быть меньше разности между MINVALUE и

MAXVALUE.

Если Вы используете параметр CYCLE, то восходящая последовательность после достижения MAXVALUE выдастMINVALUE, а нисходящая – после достижения MINVALUE выдаст MAXVALUE. Чтобы начать генерацию последовательности с нового числа надо удалить (DROP), а затем заново создать (CREATE) последовательность.

УДАЛЕНИЕ ОБЪЕКТОВ

DROP CLUSTER [схема.]кластер [INCLUDING TABLES]

Удаляет указанный кластер из базы данных. Уничтожение кластера вызывает также уничтожение индекса кластера иосвобождение занимаемого пространства в области хранения.

24

INCLUDING TABLES вызывает уничтожение всех таблиц, входящих в кластер. Если эта фраза опущена, то таблицыдолжны быть удалены до уничтожения кластера.

Удаление кластеризованной таблицы исключает ее из кластера. Таблицу нельзя просто «раскластеризовать». Дляэтого нужно создать такую же таблицу, только без использования параметра CLUSTER. Например:

CREATE TABLE new AS SELECT * FROM old

Затем уничтожьте старую таблицу:

DROP TABLE old

и переименуйте новую:

RENAME new TO old

DROP INDEX [схема.]индекс

Удаляет указанный индекс из базы данных. Чтобы сделать это, Вы должны либо быть владельцем индекса, либо иметь права DBA. Если имя [схема.] опущено, то подразумевается пользователь, выполняющий оператор. После уничтожения индекса освобождается все пространство, занимаемое им в области хранения.

DROP SEQUENCE [схема.]последовательность

Оператор DROP SEQUENCE удаляет из базы данных указанную последовательность. Чтобы удалить последовательность, Вы должны либо быть ее владельцем, либо иметь права DBA. Если имя [схема.] опущено, то подразумевается имя пользователя, выполняющего оператор. Единственный способ «перезапустить» последовательность – это уничтожить и заново создать ее. К примеру: предположим, что принадлежащая Вам последовательность POWERS находится на числе 288, а Вы хотите заново начать генерацию чисел с 12. Тогда нужновыполнить следующее:

DROP SEQUENCE powers CREATE SEQUENCE powers . . START WITH 12

DROP [PUBLIC] SYNONYM [схема.]синоним

Удаляет из базы данных указанный синоним. Слово PUBLIC нужно употреблять, если синоним доступен всемпользователям. Чтобы уничтожить общедоступный или чужой синоним, необходимо иметь права DBA. Для модификации синонима его следует уничтожить и создать заново.

DROP TABLE [схема.]таблица

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

25

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