Язык определения данных, страница 3

Номер

Фамилия

Имя

Телефон

Номер_руководителя

Тип ключа

PK

FK

Обязательность / Уникальность

NN, U

NN

NN

Внешний ключ на таблицу

СОТРУДНИК

Внешний ключ на колонки

Номер

Тип данных

NUM

CHAR

CHAR

CHAR

NUM

Максимальная длина

7

20

15

20

7

Пример

1

Петров

Александр

12-34-56

2

1.  Начните команду с CREATE TABLE, укажите имя таблицы

CREATE TABLE employee

2.  Перенесите с бланка экземпляра таблицы имена столбцов, разделите их запятыми

CREATE TABLE employee

(id NUMBER(7),

last_name VARCHAR2(20),

first_name VARCHAR2(15),

phone VARCHAR2(20),

manager NUMBER(7));

3.  Задайте ограничения NOT NULL столбцов, не связанных ограничением PRIMARY KEY

last_name VARCHAR2(20) CONSTRAINT e_l_nn NOT NULL,

first_name VARCHAR2(15) CONSTRAINT e_f_nn NOT NULL,

4.  Задайте ограничение PRIMARY KEY на уровне столбца или таблицы

id NUMBER(7) CONSTRAINT e_pk PRIMARY KEY,

5.  Задайте ограничения UNIQUE, CHECK и FOREIGN KEY

manager NUMBER(7) CONSTRAINT e_m_fk REFERENCES employee (id),

6.  Выполните команду

SQL> CREATE TABLE employee

  2  (id NUMBER(7) CONSTRAINT e_pk PRIMARY KEY,

  3  last_name VARCHAR2(20) CONSTRAINT e_l_nn NOT NULL,

  4  first_name VARCHAR2(15) CONSTRAINT e_f_nn NOT NULL,

  5  phone VARCHAR2(20),

  6  manager NUMBER(7) CONSTRAINT e_m_fk REFERENCES employee (id));

Table created.

Повторите эту процедуру для всех спроектированных табличных моделей.

ПРОЕКТ

Номер

Наименование

Стоимость

Тип ключа

PK

Обязательность / Уникальность

NN, U

NN

Внешний ключ на таблицу

Внешний ключ на колонки

Тип данных

NUM

CHAR

NUM

Максимальная длина

7

250

10

Пример

1

Моделирование прокатного стана

100000

SQL> CREATE TABLE project

  2  (id NUMBER(7) CONSTRAINT p_pk PRIMARY KEY,

  3  name VARCHAR2(20) CONSTRAINT p_name_nn NOT NULL,

  4  cost NUMBER(10));

Table created.

СОТРУДНИК_ПРОЕКТ

Срок_выполнения

Номер_сотрудника

Номер_проекта

Тип ключа

PK, FK1

PK, FK2

Обязательность / Уникальность

NN, U1

NN, U1

Внешний ключ на таблицу

СОТРУДНИК

ПРОЕКТ

Внешний ключ на колонки

Номер

Номер

Тип данных

DATE

NUM

NUM

Максимальная длина

7

7

Пример

10.10.2002

1

1

SQL> CREATE TABLE employee_project

  2  (deadline DATE,

  3  id_emp NUMBER(7) CONSTRAINT e_p_id_emp_fk REFERENCES employee(id),

  4  id_pr NUMBER(7) CONSTRAINT e_p_id_pr_fk REFERENCES project(id),

  5  CONSTRAINT e_p_pk PRIMARY KEY (id_emp, id_pr));

Table created.

ПОДПРОЕКТ

Номер

Наименование

Номер_проекта

Тип ключа

PK

PK, FK

Обязательность / Уникальность

NN, U1

NN

NN, U1

Внешний ключ на таблицу

ПРОЕКТ

Внешний ключ на колонки

Номер

Тип данных

NUM

CHAR

NUM

Максимальная длина

7

250

7

Пример

1

Стратегия и анализ

1

SQL> CREATE TABLE subproject

  2  (id NUMBER(7),

  3  name VARCHAR2(20) CONSTRAINT sp_name_nn NOT NULL,

  4  id_project NUMBER(7) CONSTRAINT sp_id_p_fk REFERENCES project(id),

  5  CONSTRAINT sp_pk PRIMARY KEY (id, id_project));

Table created.

Создание таблицы из другой таблицы

Команда CREATE TABLE позволяет создать пустую таблицу, которую необходимо в дальнейшем заполнить данными. Кроме этого существует возможность создать таблицу и сразу заполнить ее строками из другой таблицы. Для этого используется ключевое слово AS.

CREATE TABLE таблица[(столбец, ...)] AS подзапрос;

Эта команда создает таблицу с указанными столбцами и вставит туда строки, возвращенные подзапросом. Столбцы создаваемой таблицы можно не описывать, в этом случае они будут совпадать со столбцами подзапроса. Если в списке выбора подзапроса используются выражения, а столбцы вновь создаваемой таблицы Вы не описываете, обязательно укажите псевдонимы столбцов в предложении SELECT подзапрса, именно так будут называться столбцы в новой таблице. Если столбцы в новой таблице описаны, количество столбцов должно совпадать с количеством столбцов подзапроса. Для столбцов создаваемой таким образом таблицы можно указать только имя, значение по умолчанию и правила целостности (кроме FOREIGN KEY). Новая таблица  наследуется только ограничение NOT NULL у таблицы подзапроса.

SQL> CREATE TABLE project_1 AS SELECT * FROM project;

Table created.

SQL> DESC project

 Name                  Null?    Type

 --------------------- -------- -------------

 ID                    NOT NULL NUMBER(7)

 NAME                  NOT NULL VARCHAR2(20)

 COST                           NUMBER(10)

SQL> DESC project_1

 Name                  Null?    Type

 --------------------- -------- -------------

 ID                             NUMBER(7)

 NAME                  NOT NULL VARCHAR2(20)