Было уже много сказано о таблицах БД. Но, что поделать они самая основная ее часть и разобрать их до конца я думаю стоит. Для начала определимся с операторами создания. Естественно это 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 в собственную схему, например биллинг сотовой компании. Слабо? :)