Давайте рассмотрим, что же такое сегменты БД. Начнем с самого основного и наиболее используемого собственно к самой БД, а именно, ТАБЛИЦЫ. Одним из основных сегментов БД, а я считаю, что и есть то ради чего, собственно, и задумывались такие понятия как База Данных. Таблица в БД, представляет из, себя и обязательно включает следующие элементы:
Основные типы данных, столбцов таблицы БД, я вам уже приводил в "Шаг 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. Пока на этом остановимся, дальше еще много объектов, с которыми необходимо познакомится. А пока, можете поработать с созданием табличек! :)