Язык определения данных, страница 4

 COST                           NUMBER(10)

Словарь данных

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

§  USER_ - объекты, принадлежащие пользователю, т.е. те, которые пользователь создал сам

§  ALL_ - объекты, к которым пользователь имеет доступ, т.е. собственные объекты и объекты, на доступ к которым у пользователя есть привилегия

§  DBA_ - все объекты базы данных (только для пользователей с привилегией DBA)

§  V$ - информация о производительности сервера базы данных

Просмотр объектов пользователя

SQL> SELECT object_name, object_type FROM user_objects;

OBJECT_NAME                    OBJECT_TYPE

------------------------------ -------------------------

EMPLOYEE                       TABLE

EMPLOYEE_PROJECT               TABLE

E_PK                           INDEX

E_P_PK                         INDEX

PROJECT                        TABLE

PROJECT_1                      TABLE

P_PK                           INDEX

SP_PK                          INDEX

SUBPROJECT                     TABLE

9 rows selected.

Просмотр ограничений

SQL> SELECT constraint_name, constraint_type,

  2  search_condition, r_constraint_name

  3  FROM user_constraints;

CONSTRAINT_NAME      C SEARCH_CONDITION          R_CONSTRAINT_NAME

-------------------- - ------------------------- --------------------

E_L_NN               C "LAST_NAME" IS NOT NULL

E_F_NN               C "FIRST_NAME" IS NOT NULL

E_PK                 P

E_M_FK               R                           E_PK

E_P_PK               P

E_P_ID_EMP_FK        R                           E_PK

E_P_ID_PR_FK         R                           P_PK

P_NAME_NN            C "NAME" IS NOT NULL

P_PK                 P

SP_NAME_NN           C "NAME" IS NOT NULL

SP_PK                P

SP_ID_P_FK           R                           P_PK

12 rows selected.

Просмотр столбцов, на которые распространяются ограничения

SQL> SELECT constraint_name, column_name

  2  FROM user_cons_columns;

CONSTRAINT_NAME      COLUMN_NAME

-------------------- ------------------------------

E_F_NN               FIRST_NAME

E_L_NN               LAST_NAME

E_M_FK               MANAGER

E_PK                 ID

E_P_ID_EMP_FK        ID_EMP

E_P_ID_PR_FK         ID_PR

E_P_PK               ID_EMP

E_P_PK               ID_PR

P_NAME_NN            NAME

P_PK                 ID

SP_ID_P_FK           ID_PROJECT

SP_NAME_NN           NAME

SP_PK                ID

SP_PK                ID_PROJECT

14 rows selected.

Изменение структуры таблицы

Структуру созданной таблицы можно изменить с помощью команды ALTER TABLE.

Эта команда позволяет:

§  добавлять столбцы и менять их ширину

§  добавлять и удалять ограничения

§  разрешать и запрещать действие ограничений

С помощью команды ALTER TABLE нельзя:

§  удалять столбцы

§  менять ограничения

Команда ALTER TABLE так же, как и CREATE TABLE, является командой языка определения данных (DDL).

Добавление столбца

Для добавления столбца используется ключевое слово ADD. Новый столбец добавляется в конец таблицы.

ALTER TABLE [схема.]таблица ADD (столбец тип_данных [DEFAULT выражение] [NOT NULL], ...);

SQL> ALTER TABLE project ADD (comments VARCHAR2(250));

Table altered.

SQL> DESC project

 Name                Null?    Type

 ------------------- -------- -----------------

 ID                  NOT NULL NUMBER(7)

 NAME                NOT NULL VARCHAR2(20)

 COST                         NUMBER(10)

 COMMENTS                     VARCHAR2(250)

Изменение столбца

Для изменения определения столбца используется ключевое слово MODIFY.

ALTER TABLE [схема.]таблицаMODIFY (столбец тип_данных [DEFAULT выражение] [NOT NULL], ...);

Команда позволяет:

§  Увеличить ширину столбца или точность численных значений

§  Уменьшить ширину столбца, если он содержит неопределенные значения или таблица не содержит строк

§  Изменить тип данных, если столбец содержит неопределенные значения

§  Изменить значения по умолчанию для последующих вставок строк

§  Задать ограничение NOT NULL, если столбец не содержит неопределенных значений

SQL> ALTER TABLE project MODIFY (comments VARCHAR2(300));

Table altered.

SQL> DESC project

 Name                Null?    Type

 ------------------- -------- ------------------

 ID                  NOT NULL NUMBER(7)

 NAME                NOT NULL VARCHAR2(20)

 COST                         NUMBER(10)

 COMMENTS                     VARCHAR2(300)

Добавление и удаление ограничения

Вы можете добавить или удалить любое ограничение, кроме NOT NULL, с помощью ключевых слов ADD и DROP. Изменить существующее ограничение нельзя. Oграничение NOT NULL можно добавить или удалить, модифицировав соответствующий столбец (ALTER TABLE … MODIFY).

ALTER TABLE [схема.]таблица ADD [CONSTRAINT ограничение] тип (столбец);

ALTER TABLE [схема.]таблица DROP PRIMARY KEY | UNIQUE (столбец) |
CONSTRAINT ограничение [CASCADE];

SQL> DESC t1

 Name           Null?    Type

 -------------- -------- -----------------

 FIRST                   NUMBER

 SECOND                  NUMBER

SQL> DESC t2

 Name           Null?    Type

 -------------- -------- -----------------

 FIRST                   NUMBER

 NAME                    VARCHAR2(20)