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