Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
work_3.doc
Скачиваний:
11
Добавлен:
09.11.2019
Размер:
215.04 Кб
Скачать

Инструкция create table as

C помощью инструкции CREATE TABLE AS можно создать таблицу, в том числе временную, на основе результатов запроса. Новая таблица получает те же столбцы с теми же типами данных, что и в запросе. При желании можно ввести иные имена столбцов для создаваемой таблицы, а также сохранить данные, полученные в результате выполнения запроса, в созданной таблице. Синтаксис инструкции CREATE TABLE AS (в упрощенном виде):

CREATE [ { TEMPORARY | TEMP } ] TABLE таблица [ (столбец [, ...] ) ]

AS запрос [ WITH [ NO ] DATA ]

Инструкция drop table

Базовую таблицу можно в любой момент удалить с помощью предложения DROP TABLE (уничтожить таблицу):

DROP TABLE [ IF EXISTS ] базовая_таблица [, ...] [ CASCADE | [RESTRICT] ]

по которому удаляется описание таблицы, ее данные, связанные с ней представления и индексы, построенные для столбцов таблицы. Если указано IF EXISTS и таблицы нет, то сообщение об ошибке не выводится. Чтобы удалить таблицу, на которую ссылаются другие объекты базы данных, следует использовать CASCADE, иначе операция отклоняется (по умолчанию).

Для удаления содержимого таблицы (но не самой таблицы) можно использовать инструкции DELETE или TRANCATE.

Инструкция alter table

В SQL существует также инструкция ALTER TABLE (изменить таблицу), которая позволяет добавлять, удалять и модифицировать столбцы и ограничения. Синтаксиса ALTER TABLE имеет вид:

ALTER TABLE [ ONLY ] имя_таблицы [ * ] <действие> [, ... ]

где (ограничиваясь лишь стандартными элементами)

<действие> ::= {

-- добавить столбец

ADD [ COLUMN ] столбец тип [ограничение_столбца [ ... ] ]

-- удалить столбец

| DROP [ COLUMN ] [ IF EXISTS ] столбец [ RESTRICT | CASCADE ]

-- изменить тип столбца

| ALTER [ COLUMN ] столбец [ SET DATA ] TYPE тип

-- изменить значение по умолчанию

| ALTER [ COLUMN ] столбец SET DEFAULT выражение

| ALTER [ COLUMN ] столбец DROP DEFAULT

-- изменить ограничение NOT NULL

| ALTER [ COLUMN ] столбец { SET | DROP } NOT NULL

-- переименовать столбец

| RENAME [ COLUMN ] имя_столбца TO новое_имя

-- добавить/удалить ограничение таблицы

| ADD ограничение таблицы

| DROP CONSTRAINT [ IF EXISTS ] ограничение [ RESTRICT | CASCADE ] }

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

Примеры:

/* cоздаем новую таблицу Доставка */

CREATE TABLE "Доставка"

( "Заказ" integer,

"Курьер" character varying(40) DEFAULT ‘foo’,

"Дата_время" timestamp without time zone DEFAULT CURRENT_TIMESTAMP,

“Доставлен” boolean DEFAULT FALSE);

/* добавляем первичный ключ*/,

ALTER TABLE "Доставка" ADD CONSTRAINT "pk_доставка" PRIMARY KEY ("Заказ");

/* добавляем внешний ключ для ссылки на Заказы*/,

ALTER TABLE "Доставка" ADD CONSTRAINT "fk_доставка" FOREIGN KEY ("Заказы") REFERENCES "Заказы" ("Код_заказа") MATCH SIMPLE ON UPDATE CASCADE ON DELETE SET NULL;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]