Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KR_BD_V20.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5 Мб
Скачать
☆

Alter table ім’я_таблиці owner то новий_власник

Змінювати власника таблиці може або поточний власник, або суперкористувач. Приклад зміни власника таблиці employee, де новим власником стає користувач corwin:

ALTER TABLE employees OWNER TO corwin;

Реструктуризація таблиць командами CREATE TABLE і INSERT INTO. Якщо таблиця, створена командою CREATE TABLE AS, не влаштовує (наприклад, якщо в таблиці необхідно встановити обмеження полів), то одну команду CREATE TABLE AS можна замінити двома командами SQL. Спочатку команда CREATE TABLE створює нову таблицю, а потім команда INSERT INTO з запрограмованим SELECT заповнює її даними. Приклад реструктуризації таблиці командами CREATE TABLE і INSERT INTO:

CREATE TABLE newbooks (

id integer UNIQUE,

title text NOT NULL,

authorid integer,

subjected integer CONSTRAINT books_id_pkey PRIMARY KEY (id));

NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index, books_id_pkey1

for table 'new_books "

INSERT INTO new books

SELECT id, title. author_id, subjected FROM books;

ALTER TABLE books RENAME TO old_books;

ALTER TABLE new_books RENAME TO books;

Table "books"

Attribute | Type | Modifier

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

id | integer | not null

title | text |not null

author_id | integer |

subjectid | integer |

Index: books_id_pkey

Видалення таблиць забезпечує команда:

DROP TABLE таблиця

Використання команди DROP TABLE вимагає обережності, оскільки видалення таблиці спричиняє знищення всіх збережених у ній даних. При знищенні таблиці з неявно створеним індексом знищуються і всі пов’язані з нею індекси.

Копіювання даних із зовнішніх файлів командою COPY. У PostgreSQL підтримується і така корисна можливість, як пряме імпортування даних в таблицю з зовнішніх файлів командою COPY. Файл, з якого беруться дані, зберігається або в стандартному текстовому форматі ASCII з обмеженням полів спеціальним символом-роздільником, або в двійковому форматі таблиць PostgreSQL. У ASCII-файлах як роздільник зазвичай використовується символ табуляції або кома. При імпортуванні данних з ASCII-файлу кожен рядок файлу інтерпретується як окремий запис даних, а кожен компонент рядка – як значення відповідного поля запису.

Команда COPY FROM працює значно швидше за звичайну команду INSERT, оскільки дані передаються прямо в приймальну таблицю за одну транзакцію. З іншого боку, до формату вихідного файлу пред'являються надзвичайно жорсткі вимоги, тому помилка всього в одному рядку спричинить до збою всієї команди COPY. Синтаксис команди COPY FROM:

COPY [BINARY] таблиця [WITH 0IDS]

FROM {’ім’я_файлу’ | stdin}

[[USING] DELIMITERS ’роздільник’]

[WITH NULL AS ‘рядок_null’]

Параметри команди:

  • BINARY. Ознака імпортування вхідних даних із двійкового файлу, раніше створеного командою COPY ТО;

  • таблиця. Ім’я таблиці, в яку імпортуються дані;

  • WITH 0IDS. З першого рядка файлу завантажуються значення всіх ідентифікаторів OID імпортованої таблиці;

  • FROM {’ім’я_файлу’ | stdin}. Джерело, з якого PostgreSQL отримує вхідні дані, це може бути файл із заданим ім’ям або стандартний ввід (stdin);

  • [USING] DELIMITERS ’роздільник’. Символ, який використовується в якості розділювача при розборі вхідних даних. Не використовується для файлів, виведених у двійковому форматі PostgreSQL;

  • WITH NULL AS ’рядок null’. Заданий рядок повинен інтерпретуватися як значення NULL. Не використовується для файлів, виведених у двійковому форматі PostgreSQL.

При підготовці до імпортування файлу слід простежити за тим, щоб він був доступний для читання процесом postmaster (тобто користувачем, який запустив PostgreSQL). Крім того, дозволені тільки абсолютні імена файлів; при спробі передати відносне ім’я відбувається помилка.

При роботі з вхідними файлами в форматі ASCII в секції DELIMITERS передається символ, використаний як роздільник значень полів у рядках файлу. Якщо роздільник не вказаний, PostgreSQL вважає, що значення розділюються символом табуляції. Необов’язкова секція WITH NULL визначає формат, в якому передається значення NULL. Якщо секція відсутня, то PostgreSQL інтерпретує послідовність \N як NULL (наприклад, порожні поля вихідного файлу за замовчуванням інтерпретуються як порожні рядкові константи, а не як NULL).

Двійковий формат. Команда COPY також дозволяє виконувати операції введення і виведення з даними в двійковому форматі. Якщо команда COPY FROM містить ключове слово BINARY, то вхідний файл повинен бути створений командою COPY ТО в двійковому форматі PostgreSQL. Двійкові файли завантажуються швидше за ASCII-файли, але на відміну від останніх їх не можна читати і редагувати в простих текстових редакторах.

Системні поля. У PostgreSQL всі таблиці містять системні поля, які залишаються невидимими для користувача і не виводяться при вибірці (якщо службова інформації не запитується спеціально). У системних полях зберігаються метадані, які описують вміст записів, вони такі:

Поле

Опис

oid

4-байтовий унікальний ідентифікатор запису

tableoid

Ідентифікатор таблиці. Ім’я таблиці зв’язується з ідентифікатором у системній таблиці pg_class

xmin

Ідентифікатор транзакції вставки для кортежу

cmin

Ідентифікатор команди, асоційованої з транзакцією вставки для кортежу

хmах

Ідентифікатор транзакції видалення для кортежу. Для видимих (не видалених) кортежів дорівнює нулю

сmах

Ідентифікатор команди, асоційованої з транзакцією видалення для кортежу. За аналогією з xmax дорівнює нулю для видимих кортежів

ctid

Ідентифікатор, що описує фізичне місцезнаходження кортежу в БД. Поле ctid містить пару чисел: номер блоку та індекс кортежу в блоці

Ідентифікатори записів дозволяють розрізнити два записи з однаковими значеннями полів. Для цього в PostgreSQL передбачений ідентифікатор OID, унікальний в межах таблиці. Приклад:

SELECT *, oid FROM my_list;

Знищення таблиці виконує команда:

DROP TABLE tablename;

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