Назначать и отменять значения по умолчанию для отдельных полей относительно легко. Для этого используется команда ALTER TABLE с секцией ALTER COLUMN:
ALTER TABLE имяТаблицы
ALTER COLUMN имяСтолбца
SET DEFAULT значение;
или
ALTER TABLE имяТаблицы
ALTER COLUMN имяСтолбца
DROP DEFAULT;
Ключевое слово COLUMN не является обязательным.
Например, назначим и отменим значение 1 в качестве значения по умолчанию для поля edition (номер издания) таблицы editions;
ALTER TABLE editions
ALTER COLUMN edition
SET DEFAULT 1;
ALTER TABLE editions
ALTER edition
DROP DEFAULT;
Переименование таблицы
Переименование таблиц осуществляется командой ALTER TABLE с секцией RENAME:
ALTER TABLE имяТаблицы
RENAME TO новоеИмя;
Таблицу можно переименовывать сколько угодно раз, это никак не отражается на состоянии хранящихся в ней данных. В некоторых ситуациях переименования нежелательны – например, если таблица используется внешним приложением.
Переименуем таблицу books в таблицу literature:
ALTER TABLE books
RENAME TO literature;
Переименование полей
Изменять имена полей можно без изменения данных, хранящихся в таблице. Однако, переименование полей – довольно опасная операция, поскольку существующие приложения могут содержать ссылки на имена полей. Если программа обращается к полю по имени, то переименование может нарушить ее работоспособность. Команда переименования полей имеет следующий синтаксис:
ALTER TABLE имяТаблицы
RENAME COLUMN имяПоля TO новоеИмя;
Ключевое слово COLUMN не является обязательным. По двум идентификаторам, разделенным ключевым словом TO, PostgreSQL может определить, что команда переименования относится к одному полю, а не таблице.
Например,
ALTER TABLE stock
RENAME COLUMN stock TO is_in_stock;
Добавление ограничений
После создания таблицы сохраняются некоторые возможности добавления ограничений. В PostgreSQL 7.1.x команда ALTER TABLE с секцией ADD CONSTRAINT позволяет определять для полей существующих таблиц только ограничения внешнего ключа и проверки (CHECK). Команда создания новых ограничений имеет следующий синтаксис:
ALTER TABLE имяТаблицы
ADD CONSTRAINT имяОграничения ограничение;
Синтаксис ограничения зависит от типа ограничения.
Создадим ограничение внешнего ключа для таблицы editions (связанной с полем id таблицы books):
ALTER TABLE editions
ADD CONSTRAINT foreign_book
FOREIGN KEY (book_id) REFERENCES books (id);
Добавим ограничение для проверки поля type:
ALTER TABLE editions
ADD CONSTRAINT type_check CHECK (type IN (‘p’, ‘h’));
Лабораторная работа 8
Все работы по созданию и модификации таблиц следует выполнять в базе данных с номером вашей группы.
1. Создать таблицу для хранения данных о студентах с полями: фамилия, номер зачетки, адрес, год поступления в университет, номер специальности, номер группы; ввести ограничения первичного ключа, отсутствия пустых значений для фамилии и года поступления, значение специальности по умолчанию 0220100.
2. Заполнить данными созданную таблицу (не менее 5 записей), при вводе попытаться ввести записи с дублирующимися номерами зачетных книжек, однофамильцами, без фамилии, без года поступления в университет, без специальности; зафиксировать в отчете свои действия и реакцию на них сервера БД (что происходит и почему). Привести в отчете окончательный вид созданной таблицы.
3. Создать таблицу для хранения данных о сдаче студентами различных экзаменов по дисциплинам с оценками и заполнить ее данными (каждый студент сдает не менее трех экзаменов); задать первичный ключ в таблице; обеспечить выполнение условий целостности данных, чтобы экзамены сдавались только студентами, у которых есть зачетные книжки, а при удалении записей о студентах удалялись бы и записи о сданных ими экзаменах (каскадное удаление).
Продемонстрировав все созданные таблицы преподавателю, уничтожить таблицы.
ПРИЛОЖЕНИЯ
П.1. Возможности PostgreSQL
PostgreSQL – объектно-реляционная система управления базами данных, разработка которой в различных формах ведется с 1977 года. В 1996 году был осуществлен переход на распространение PostgreSQL с открытыми исходными текстами. В настоящее время над проектом PostgreSQL активно работает группа разработчиков со всего мира.
PostgreSQL считается самой совершенной СУБД, распространяемой на условиях открытых исходных текстов. В PostgreSQL реализованы многие возможности, традиционно встречавшиеся только в масштабных коммерческих продуктах:
· объектно-реляционная модель позволяет задействовать сложные процедуры и системы правил, например, контроль параллельного доступа, поддержку многопользовательского доступа, транзакции, оптимизацию запросов, поддержку и наследование массивов;
· простота расширения: в PostgreSQL поддерживаются пользовательские операторы, функции, методы доступа и типы данных;
· полноценная поддержка SQL;
· проверка целостности ссылок;
· поддержка внутренних процедурных языков;
· архитектура «клиент-сервер».
П.2. Консоль psql
Система PostgreSQL, как и большинство сетевых СУБД, основана на парадигме “клиент-сервер”. Центральное место в PostgreSQL занимает процесс postmaster, предназначенный не для прямого взаимодействия с пользователем, а для обслуживания подключений со стороны различных клиентов.
При запуске службы (service) PostgreSQL процесс postmaster начинает работать в фоновом режиме, прослушивая заданный порт TCP/IP в ожидании подключений со стороны клиентов.
Существует несколько интерфейсов, через которые клиент подключается к процессу postmaster. В лабораторных работах используется psql – самый универсальный и доступный клиент, входящий в комплект поставки PostgreSQL.
Запуск psql осуществляется командой:
psql -h host_name db_name [-U user_name]
Если пользователь зарегистрирован администратором БД и база данных с именем db_name имеется на сервере, то соединение произойдет, что отразится в командной строке:
db_name=>
В лабораторных работах host_name – это server, а db_name – booktown.
Команды консоли psql делятся на две группы:
· команды языка SQL для работы с данными в базе;
· внутренние команды psql, начинающиеся с символа ‘\’.
Некоторые полезные команды клиента psql:
\? Справка по командам psql
\с база_данных Подключение к другой базе данных
\dt Список таблиц в текущей базе данных
\d имя_таблицы Структура таблицы
\h команда Справка по командам sql
\i имя_файла Чтение входных данных из файла
\l Список имеющихся на сервере баз данных
\o файл Перенаправление вывода в файл
\q Выход из psql
\t Режим выдачи дополнительной информации о таблице
\z имя_таблицы Права доступа к таблице
П.3. Команды SQL
Дата: 2019-02-19, просмотров: 267.