Язык определения данных (DDL - Data Definition Language)

Язык определения данных (DDL) включает операторы, управляющие объектами базы данных. К объектам БД относятся таблицы, индексы, представления. Для каждой конкретной базы данных существует свой набор объектов базы данных, который может значительно расширять набор объектов, предусмотренный стандартом. В СУБД Oracle все объекты базы данных, принадлежащие одному пользователю, образуют схему базы данных.

Язык определения данных включает в себя три основные команды:

- CREATE – создание объекта;

- ALTER – изменение объекта;

- DROP – удаление объекта.

В качестве объекта здесь может быть: таблица, представление, триггер, индекс, ограничение целостности, процедура, функция, пакет, объектные пользовательские типы данных, последовательности и т.д., т.е. фактически весь набор типов объектов СУБД Oracle. Важно отметить, что управление все параметрами работы СУБД осуществляется командой ALTER. Для каждого типа объекта БД и команды DDL существует определенный синтаксис и набор опций. Общий синтаксис для команд DDL выглядит так:

 

Команда Объект Имя_объекта Набор_опций_и_операций

Команда создания таблицы – CREATE TABLE

Оператор CREATE TABLE создает таблицу в базе данных. Созданная таблица будет пуста (если не был указан запрос в предложении AS). Строки данных, как правило, добавляются в таблицу с помощью оператора INSERT. В команде CREATE TABLE определяется имя таблицы и набор столбцов. Она также определяет типы данных и размеры столбцов. Каждая таблица должна иметь, по крайней мере, один столбец. Знак подчеркивания «_» обычно используется для разделения слов в именах таблиц.

Синтаксис создания таблицы:

            CREATE TABLE пользователь.имя_таблицы

            (описание_столбца | эл-т_таблицы,

            описание_столбца | эл-т_таблицы,...

           ) [AS запрос]

Пользователь - владелец создаваемой таблицы.

описание_столбца - описание столбцов.

эл-т_таблицы - описание ограничений для таблицы.

Рассмотрим пример создания таблицы «Физических лиц»:

 

CREATE TABLE s_fiz_lic (kod       NUMBER(7,0) NOT NULL, fam       VARCHAR2(30), im         VARCHAR2(25), otch       VARCHAR2(25), p_vidan  VARCHAR2(80), p_ser_nom VARCHAR2(20) );

 

Порядок столбцов в таблице определяется порядком, в котором они указаны. Имена столбца не должны разделяться при переносе строки (что делается для удобочитаемости) и отделяются запятыми. Ограничение NOT NULL означает, что данное поле не может содержать пустое значение.

В нижеприведенном примере производится создание таблицы «Должности», в качестве дополнительных опций таблицы для столбца «KOD» - указывается опция NOT NULL, а так же служебные слова PRIMARY KEY, которые определяют, что необходимо создать первичный ключ по данному столбцу.

 

CREATE TABLE dolj (kod NUMBER(10) NOT NULL PRIMARY KEY,  naimen VARCHAR2(50));

 

Кроме стандартного способа создания таблицы, в котором мы определяем структуру таблицы, существует способ, при котором можно создать таблицу на базе ранее созданной таблицы с данными. Структура создаваемой таблицы и данные определяется запросом. В данном примере мы создаем дубликат таблицы «s_fiz_lic» с именем «s_fiz_lic2».

 

CREATE TABLE s_fiz_lic2 as (SELECT * FROM s_fiz_lic);

 

Рассмотрим более сложный пример создания таблицы физических лиц с имнем «s_fiz_lic3». При создании таблицы в этом примере мы применяем следующие опции для столцов:

- поле «KOD» - не может быть пустым – NOT NULL, является первичным ключом – PRIMARY KEY;

- поле «FIO» - не может быть пустым – NOT NULL, проверка вводимых данных в таблицу, значения поле должно вводится в верхнем регистре – CHECK(fio=UPPER(fio));

- поле «POL» - по умолчанию значение поле равно 1 – DEFAULT 1;

- поле «KOD_DOLJ» - создается вторичный ключ с именем «fk_dolj» ссылвющийся на поле «KOD» таблицы «DOLJ»

 

CREATE TABLE s_fiz_lic3 (kod         NUMBER(10) NOT NULL PRIMARY KEY,  fio           VARCHAR2(250) NOT NULL CHECK(fio=UPPER(fio)),  pol          NUMBER(1) DEFAULT 1,  kod_dolj  NUMBER(10) CONSTRAINT fk_dolj REFERENCES dolj (kod),  data_r     DATE);

 

Просмотреть структуру таблицы можно командой DESC < table_name >. Пример, DESC s_fiz_lic. В результате на экран будет выведена структруа таблицы:

 

Таблица 4 – Структура таблицы «s_fiz_lic»

 

 

Имя столбца Пусто? Тип данных
KOD NOT NULL NUMBER(7)
FAM   VARCHAR2(30)
IM   VARCHAR2(25)
OTCH   VARCHAR2(25)
P_VIDAN   VARCHAR2(80)
P_SER_NOM   VARCHAR2(20)

Команда создания послеловательности – CREATE SEQUENCE

Последовательностью называется объект ORACLE, генерирующий неповторяющиеся целые числа. Полученные из последовательности числа очень часто используются в качестве значений для первичных ключей.

Синтаксис создания последовательности:

       CREATE SEQUENCE пользователь.имя_последовательности

  INCREMENT BY n

  START WITH n

  MAXVALUE n | NOMAXVALUE

  MINVALUE n | NOMINVALUE

  CYCLE | NOCYCLE

  ORDER | NOORDER

 

При использовании последовательности:

- для выбора следующего номера - используется вызов типа my_seq.NEXTVAL, где my_seq – имя последовательности;

- для выбора текущего номера - используется вызов тип my_seq.CURRVAL, где my_seq – имя последовательности.

Рассмотрим пример создания последовательности с именем «my_seq». В этом примере генерируемое значение последовательности начнется со 100, и будет увеличиваться на 1. Возвращаемые значения являются отсортированными – ORDER, последовательность является циклической – это означает, что при достижении свое максимального значения - 1000, она начнет возвращать значения со стартового значения.

 

CREATE SEQUENCE my_seq INCREMENT BY 1 START WITH 100 CYCLE MAXVALUE 1000 ORDER;

 

В следующем примере приведены способы получения текущего и следующего значения последовательности, для этого используется системная таблица с именем «DUAL».

 

SELECT my_seq.nextval FROM dual; SELECT my_seq.currval FROM dual;

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: