После того, как модель системы спроектирована, можно приступать к созданию таблиц в базе данных. Для создания объектов и изменения структуры объектов в базе данных используется язык определения данных (DDL). Команды языка определения данных воздействуют на базу данных и заносят информацию об изменениях структуры в словарь базы данных. Действие любой из команд DDL необратимо (отменить изменения нельзя), поэтому будьте особенно осторожны при использовании этих команд:
§ CREATE TABLE – используется для создания таблиц
§ ALTER TABLE – позволяет изменить структуру существующей таблицы
§ DROP TABLE – удаляет таблицу из базы данных
§ RENAME – позволяет переименовать таблицу
§ TRUNCATE TABLE – удаляет все строки из таблицы
Для создания таблицы используется команда языка определения данных CREATE TABLE. Чтобы иметь возможность создавать таблицы, пользователь должен иметь привилегию CREATE TABLE.
CREATE TABLE [схема.]таблица
(столбец тип_данных [DEFAULT выражение] [ограничение_столбца],
...
[ограничение_таблицы]);
схема – имя владельца таблицы
таблица – имя таблицы
столбец – имя столбца
тип_данных – тип данных и длина столбца
DEFAULT выражение – значение по умолчанию
ограничение_столбца – правило целостности на уровне столбца
ограничение_таблицы – правило целостности на уровне таблицы
Когда Вы создаете объекты в базе данных, Вы создаете их в определенной схеме (по умолчанию в своей). Имя схемы совпадает с именем пользователя и используется в качестве префикса при ссылке на объекты другого пользователя. Схема содержит набор объектов конкретного пользователя, причем объекты другого пользователя в ней не содержатся:
§ Таблицы
§ Представления
§ Синонимы
§ Индексы
§ Хранимые процедуры и т.д.
Чтобы обращаться к объектам, содержащимся в другой схеме, необходимо
§ Указать имя схемы перед именем объекта, который в ней находится
§ Иметь привилегию на этот объект. Привилегию должен дать владелец объекта
Рассмотрим пример. Пользователь instructor создал таблицу tt и дал пользователю is_301 привилегию на чтение этой таблицы. Пользователь is_301 должен указать имя схемы при обращении к таблице tt, т.к. таблица tt находится в схеме пользователя instructor.
SQL> CONNECT is_301/tbd@student
Connected.
SQL> SELECT * FROM tt;
SELECT * FROM tt
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> SELECT * FROM instructor.tt;
FIRST NAME
--------- --------------------
1 One
2 Two
Имена таблиц и столбцов должны начинаться с буквы и могут включать до 30 символов. Допустимы только символы алфавита, цифры, символ подчеркивания, знаки $ и #. Вы можете присваивать русские имена таблицам и столбцам, но в этом случае они могут быть не более 15 символов. Имена таблиц и столбцов не должны повторять имена других объектов в пределах одной схемы и не могут совпадать с зарезервированными словами сервера Oracle (TABLE, INDEX, COLUMN и т.д.).
Тип данных |
Описание |
CHAR (размер) |
Символьные данные фиксированной длины, равной размеру. Размер можно опустить, длина по умолчанию равна одному символу, максимальная длина – 255 байт |
NCHAR (размер) |
Символьные данные фиксированной длины. Размер равен количеству символов. Максимальный размер зависит от количества байт, необходимых для хранения одного символа и не должен превышать 2000 байт. Размер можно опустить. Длина по умолчанию равна одному символу или одному байту, в зависимости от кодировки |
VARCHAR2 (размер) |
Символьные данные переменной длины, не превышающей размер. Максимальный размер равен 4000 байт, минимальный – 1 символ. Размер должен быть определен |
NVARCHAR2 (размер) |
Символьные данные переменной длины, не превышающей размер. Максимальный размер зависит от количества байт, необходимых для хранения одного символа и не должен превышать 4000 байт. Размер должен быть определен |
NUMBER (p, s) |
Численные значения, имеющее точность (p) и масштаб (s). Точность – общее количество значащих цифр (от 1 до 38), масштаб – количество десятичных цифр (от –84 до 127) |
NUMBER |
Числа с плавающей точкой с точностью до 38 значащих цифр |
DATE |
Значения даты и времени в промежутке от 1 января 4712 года до нашей эры до 31 декабря 9999 нашей эры |
LONG |
Символьные данные переменной длины до 2 гигабайт. В таблице допускается только один столбец LONG |
RAW (размер) |
Двоичные данные, длина которых равна размеру. Размер должен быть определен. Максимальная длина – 2000 байт |
LONG RAW |
Двоичные данные переменной длины до 2 гигабайт |
ROWID |
Шестнадатиричное строковое представление адреса строки в таблице. Значение можно просмотреть с помощью псевдоколонки ROWID |
CLOB |
Символьный большой объект, содержащий однобайтовые символы, размером до 4 гигабайт |
NCLOB |
Символьный большой объект, содержащий многобайтовые символы, размером до 4 гигабайт |
BLOB |
Двоичный большой объект, размером до 4 гигабайт |
BFILE |
Указатель на большой двоичный файл, хранящийся в операционной системе вне базы данных. Размер файла должен быть не более 4 гигабайт |
Параметр DEFAULT позволяет задать значение столбца по умолчанию. Это гарантирует отсутствие неопределенных значений в столбце, даже если Вы не указываете значение столбца при вставке новой строки. Значением по умолчанию может быть литерал, выражение, функции SQL SYSDATE и USER. Не допускается имя другого столбца или псевдостолбца в качестве значения по умолчанию. Тип данных значения по умолчанию должен совпадать с типом данных столбца.
Ограничения используются для реализации правил по обеспечению целостности данных на уровне таблицы при вставке, обновлении и удалении строк. Операции, нарушающие ограничения, запрещены сервером Oracle. Запрещено, также, удаление самой таблицы, если существуют таблицы, зависящие от нее.
§ NOT NULL – обязательность (столбец не может содержать неопределенных значений)
§ UNIQUE – уникальность (значение столбца или комбинация значений столбцов должна быть уникальна)
§ PRIMARY KEY – первичный ключ (уникально идентифицирует строку)
§ FOREIGN KEY – внешний ключ (поддерживает отношение между значениями столбца и значениями столбца таблицы, на которую ссылается)
§ CHECK – бизнес-правила (задает условие, которое должно выполняться)
Ограничения можно задавать при создании таблицы или добавить к уже существующей таблице. Рекомендуется присваивать осмысленные имена ограничениям, иначе Oracle создаст имя сам: SYS_Cn, что затруднит дальнейшие ссылки на эти ограничения. Ограничения могут быть заданы на уровне столбцов или на уровне таблиц.
столбец тип_данных[CONSTRAINT имя_ограничения] тип_ограничения
§ Ссылается на единственный столбец
§ Описывается в пределах характеристик столбца
§ Позволяет задать ограничение любого типа
SQL> CREATE TABLE sample
2 (first NUMBER CONSTRAINT sample_first_uk UNIQUE,
3 second NUMBER);
Table created.
столбец, ...
[CONSTRAINT имя_ограничения] тип_ограничения (столбец, ...),
§ Ссылается на один или несколько столбцов
§ Описывается независимо от определений столбцов
§ Позволяет задать ограничение любого типа, кроме NOT NULL
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.