Шаг 24 - Основные компоненты БД Oracle - Сегменты БД - Таблицы

Давайте рассмотрим, что же такое сегменты БД. Начнем с самого основного и наиболее используемого собственно к самой БД, а именно, ТАБЛИЦЫ. Одним из основных сегментов БД, а я считаю, что и есть то ради чего, собственно, и задумывались такие понятия как База Данных. Таблица в БД, представляет из, себя и обязательно включает следующие элементы:

  1. Имя таблицы.
  2. n-е количество столбцов, с уникальными именами. (не стоит использовать в имени столбца слова типа - NUMBER, VARCHAR и т.д. так как собственно, это ключевые слова PL/SQL)
  3. n-е количество, записей, т.е. собственно сами данные, которые хранятся, в таблице, в виде (по аналогии с языками программирования) двухмерного, не выровненного массива! Если хотите, можете со мной поспорить! :)

Основные типы данных, столбцов таблицы БД, я вам уже приводил в "Шаг 7 - Язык SQL и примитивные типы данных", так что загляните туда. Так же замечу, что мы еще остановимся на типах данных, когда в плотную подойдем к PL/SQL. Пока я пытаюсь создать для вас целостную картину БД, так как если не разъяснить немного эти основные понятия, то PL/SQL будет трудно освоить! Чего-то я отвлекся! :) Итак немного забегая вперед, разберем это понятие чуть ближе!

Создание таблицы.

Создадим в нашей схеме MILLER, которую мы уже имеем и работаем с ней, пробную табличку и разберемся как это все работает. Итак, запускайте SQL/Plus, создаем таблицу с именем, скажем, PEOPLE. Для этого, необходимо отправить в SQL/Plus команду CREATE TABLE:

CREATE TABLE PEOPLE -- команда создания таблицы -------*
(  ID NUMBER,       -- числовое поле -------------------*
   NM VARCHAR2(50), -- символьное поле ----------------*
FAMIL VARCHAR2(50),
 OTCH VARCHAR2(50),
 DROG DATE          -- поле даты ----------------------*
)
/


SQL> CREATE TABLE PEOPLE 
  2  (  ID NUMBER,       
  3     NM VARCHAR2(50), 
  4  FAMIL VARCHAR2(50),
  5   OTCH VARCHAR2(50),
  6   DROG DATE          
  7  )
  8  /

Table created

Табличка успешно создана! После этого не забудьте ввести команду COMMIT! Иначе после завершения сеанса, можете не найти вашу табличку! Вот так:

COMMIT
/

SQL> COMMIT
  2  /

Commit complete

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

SELECT a.TABLE_NAME, a.TABLESPACE_NAME, a.NUM_ROWS FROM USER_TABLES a
WHERE a.TABLE_NAME = 'PEOPLE'
/

Получаем следующее:

SQL> SELECT a.TABLE_NAME, a.TABLESPACE_NAME, a.NUM_ROWS FROM USER_TABLES a
  2  WHERE a.TABLE_NAME = 'PEOPLE'
  3  /

TABLE_NAME                     TABLESPACE_NAME                  NUM_ROWS
------------------------------ ------------------------------ ----------
PEOPLE                         USERS                          

ДА! Таблица создана, располагается в табличном пространстве USERS, и имеет ноль записей. Давайте дадим еще вот такой запрос к представлению USER_TAB_COLUMNS, которое содержит информацию обо всех столбцах всех таблиц данной схемы:

SELECT a.TABLE_NAME, a.COLUMN_NAME, a.DATA_TYPE, a.DATA_LENGTH FROM USER_TAB_COLUMNS a
WHERE a.TABLE_NAME = 'PEOPLE'
/

Получаем примерно следующее:

SQL> SELECT a.TABLE_NAME, a.COLUMN_NAME, a.DATA_TYPE, a.DATA_LENGTH FROM USER_TAB_COLUMNS a
  2  WHERE a.TABLE_NAME = 'PEOPLE'
  3  /

TABLE_NAME    COLUMN_NAME                    DATA_TYPE                     DATA_LENGTH
------------- ------------------------------ ----------------------------- -----------
PEOPLE        ID                             NUMBER                                 22
PEOPLE        NM                             VARCHAR2                               50
PEOPLE        FAMIL                          VARCHAR2                               50
PEOPLE        OTCH                           VARCHAR2                               50
PEOPLE        DROG                           DATE                                    7

Вот теперь видно, что из себя представляет наша таблица в схеме! Полностью соответствует тому что мы с вами и проделывали. Замечательно, но кому нужна пустая таблица? Давайте введем в нее немного данных! И посмотрим, что из этого получится! Ввести данные в таблицу нам поможет, нет не киножурнал "Хочу все знать", а оператор INSERT. Итак, введите следующее:

INSERT INTO PEOPLE(ID, NM, FAMIL, OTCH, DROG)
			VALUES(1, 'John', 'Godwin', 'Petrovich', TO_DATE('03-12-1967','DD-MM-YYYY'))
/

INSERT INTO PEOPLE(ID, NM, FAMIL, OTCH, DROG)
			VALUES(2, 'Bob', 'Doris', 'Martovich', TO_DATE('01-02-1960','DD-MM-YYYY'))
/

INSERT INTO PEOPLE(ID, NM, FAMIL, OTCH, DROG)
			VALUES(3, 'Frank', 'Black', 'Milleniumich', TO_DATE('03-07-1953','DD-MM-YYYY'))
/

COMMIT
/

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

SQL> INSERT INTO PEOPLE(ID, NM, FAMIL, OTCH, DROG)
  2  			VALUES(1, 'John', 'Godwin', 'Petrovich', TO_DATE('03-12-1967','DD-MM-YYYY'))
  3  /

1 row inserted

SQL> INSERT INTO PEOPLE(ID, NM, FAMIL, OTCH, DROG)
  2  			VALUES(2, 'Bob', 'Doris', 'Martovich', TO_DATE('01-02-1960','DD-MM-YYYY'))
  3  /

1 row inserted

SQL> INSERT INTO PEOPLE(ID, NM, FAMIL, OTCH, DROG)
  2  			VALUES(3, 'Frank', 'Black', 'Milleniumich', TO_DATE('03-07-1953','DD-MM-YYYY'))
  3  /

1 row inserted

SQL> COMMIT
  2  /

Commit complete

А затем убедимся, что в таблице появились значения дав следующий запрос:

SELECT * FROM PEOPLE
/

Теперь, видно, что таблица имеет три записи:

SQL> SELECT * FROM PEOPLE
  2  /

        ID NM      FAMIL    OTCH          DROG
---------- ------- -------- ------------- -----------
         1 Bob     Doris    Martovich     01.02.1960
         1 Frank   Black    Milleniumich  03.07.1953
         1 John    Godwin   Petrovich     03.12.1967

Так же еще добавлю, что информация обо всех таблицах содержится в представлении DBA_TABLES, а обо всех столбцах всех таблиц БД в представлении DBA_TAB_COLUMS. Пока на этом остановимся, дальше еще много объектов, с которыми необходимо познакомится. А пока, можете поработать с созданием табличек! :)


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