Шаг 109 - Oracle - ТАБЛИЦЫ БД основные операторы определения

Было уже много сказано о таблицах БД. Но, что поделать они самая основная ее часть и разобрать их до конца я думаю стоит. Для начала определимся с операторами создания. Естественно это CREATE TABLE и то как он устроен. Если бы я привел вам всю конструкцию CREATE TABLE, то это заняло бы шагов так 20-ть или 30-ть! Если у кого есть неподдельный интерес можете заглянуть в Oracle 8i DBA HandBook, я кстати с ней не расстаюсь! Там описание CREATE TABLE занимает более 10-ти страниц. Но пока остановимся на самом главном! Итак, оператор CREATE TABLE и его синтаксис краткий:

*----- CREATE TABLE -- shema . tablename ----------------------------------------------------*
*----- (  column - column datatype  -- DEFAULT expr -- column constraint ) ------------------*
*-----    table constraint ------------------------------------------------------------------*
*-----    TABLESPACE tablespace -------------------------------------------------------------*
*-----    STORAGE storage options -----------------------------------------------------------*

Где:

Вот таким образом определяется оператор CREATE TABLE. Но таблицы так же можно и изменять. С помощью оператора ALTER TABLE его краткий синтаксис таков:

*----- ALTER TABLE -- shema . tablename -----------------------------------------------------*
*----- ADD (  column datatype  -- DEFAULT expr -- column constraint ) -----------------------*
*----- MODIFY (  column datatype  -- DEFAULT expr -- column constraint ) --------------------*
*----- DROP COLUMN ( column ) ---------------------------------------------------------------*
*----- STORAGE storage options --------------------------------------------------------------*

Где:

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

1. ALL_ALL_TABLES

Запросим его описание:

DESC ALL_ALL_TABLES

Получаем:

						
SQL> DESC ALL_ALL_TABLES
Name             Type         Nullable Default Comments
---------------- ------------ -------- ------- ------------------------------------------------------------
OWNER            VARCHAR2(30) Y                Owner of the table
TABLE_NAME       VARCHAR2(30) Y                Name of the table
TABLESPACE_NAME  VARCHAR2(30) Y                Name of the tablespace containing the table
CLUSTER_NAME     VARCHAR2(30) Y                Name of the cluster, if any, to which the table belongs
IOT_NAME         VARCHAR2(30) Y                Name of the index-only table, if any, to which the overflow
                                               or mapping table entry belongs
PCT_FREE         NUMBER       Y                Minimum percentage of free space in a block
PCT_USED         NUMBER       Y                Minimum percentage of used space in a block
.
.
.
MONITORING       VARCHAR2(3)  Y                Should we keep track of the amount of modification?
CLUSTER_OWNER    VARCHAR2(30) Y                Owner of the cluster, if any, to which the table belongs
DEPENDENCIES     VARCHAR2(8)  Y                Should we keep track of row level dependencies?

2. DBA_TABLES

Вот его описание:

DESC DBA_TABLES

Получаем:

SQL> DESC DBA_TABLES
Name             Type         Nullable Default Comments
---------------- ------------ -------- ------- --------------------------------------------------------
OWNER            VARCHAR2(30)                  Owner of the table
TABLE_NAME       VARCHAR2(30)                  Name of the table
TABLESPACE_NAME  VARCHAR2(30) Y                Name of the tablespace containing the table
CLUSTER_NAME     VARCHAR2(30) Y                Name of the cluster, if any, to which the table belongs
IOT_NAME         VARCHAR2(30) Y                Name of the index-only table, if any, to which
                                               the overflow or mapping table entry belongs
PCT_FREE         NUMBER       Y                Minimum percentage of free space in a block
PCT_USED         NUMBER       Y                Minimum percentage of used space in a block
.
.
.
CLUSTER_OWNER    VARCHAR2(30) Y                Owner of the cluster, if any, to which the table belongs
DEPENDENCIES     VARCHAR2(8)  Y                Should we keep track of row level dependencies?

3. USER_TABLES

Вот его описание:

DESC USER_TABLES

Получаем:

SQL> DESC USER_TABLES
Name             Type         Nullable Default Comments
---------------- ------------ -------- ------- -----------------------------------------------------------
TABLE_NAME       VARCHAR2(30)                  Name of the table
TABLESPACE_NAME  VARCHAR2(30) Y                Name of the tablespace containing the table
CLUSTER_NAME     VARCHAR2(30) Y                Name of the cluster, if any, to which the table belongs
IOT_NAME         VARCHAR2(30) Y                Name of the index-only table, if any, to which the overflow
                                               or mapping table entry belongs
PCT_FREE         NUMBER       Y                Minimum percentage of free space in a block
PCT_USED         NUMBER       Y                Minimum percentage of used space in a block
.
.
.
MONITORING       VARCHAR2(3)  Y                Should we keep track of the amount of modification?
CLUSTER_OWNER    VARCHAR2(30) Y                Owner of the cluster, if any, to which the table belongs
DEPENDENCIES     VARCHAR2(8)  Y                Should we keep track of row level dependencies?

Все они очень похожи. Но есть и свои особенности у каждого из них. Вообще работа с ситстемными представлениями, может дать почти полную информацию о вашем экземпляре, о чем я по моему уже не однократно говорил. Так же полезны для работы с таблицами представления ALL_COL_COMMENTS, ALL_COL_PRIVS, ALL_CALL_TYPES, DBA_TAB_PRIVS, USER_TAB_COLUMNS и т.д. И последнее удаление таблиц выполняется естественно оператором DDL - DROP:

*----- DROP TABLE -- shema . tablename -----------------------------------------------------*

Вот наверное пока все, что касается таблиц и работы с реляционными объектами БД. Но, с таблицами мы пока не расстаемся насовсем, так как еще многое будет связано с ними напрямую. А, вам пока задача: создать собственную реляционную модель и определить данные для построения 3НФ и внести это все в Ваш сервер Oracle в собственную схему, например биллинг сотовой компании. Слабо? :)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Летучий Сергей - 14.04.2004