Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

postgres 3 Поникаровский

.docx
Скачиваний:
1
Добавлен:
02.01.2025
Размер:
521.61 Кб
Скачать

В таблице «Предприятие»:

- убрать ограничение уникальности для поля «Название предприятия»;

- изменить значение по умолчанию для поля «Город»;

- увеличить количество символов для ввода в поле «Город»;

- добавить обязательное поле «Страна» (последовательность действий: создать поле, ввести значения, сделать поле обязательным);

ALTER TABLE firm

DROP CONSTRAINT firm_name_firm_key,

ALTER COLUMN city SET DEFAULT 'Moscow',

ALTER COLUMN city SET DATA TYPE varchar(40),

ADD COLUMN country varchar(40);

UPDATE firm

SET country = 'Russia';

ALTER TABLE firm

ALTER COLUMN country SET NOT NULL;

SELECT * FROM firm

В таблице «Заказ»:

- расширить диапазон значений поля «Объем»;

- сделать необязательным поле «Стоимость»;

- добавить необязательное поле «Статус заказа» с возможными значениями: ‘Принят’, ‘В работе’, ‘Выполнен’);

ALTER TABLE orders

DROP CONSTRAINT orders_size_order_check,

ADD CHECK (size_order > 0 AND size_order < 200),

ALTER COLUMN cost_order DROP NOT NULL,

ADD COLUMN status_order varchar(20),

ADD CONSTRAINT order_status_order_check

CHECK (status_order IN ('Accepted', 'In progress', 'Complited'));

UPDATE orders

SET status_order = 'In progress';

SELECT * FROM orders

- ввести значение статуса для каждого заказа;

UPDATE orders

SET status_order = 'Accepted'

WHERE id_order = '38-VQ-78';

UPDATE orders

SET status_order = 'Accepted'

WHERE id_order = '32-AA-15';

UPDATE orders

SET status_order = 'Complited'

WHERE id_order = '81-HR-02';

SELECT * FROM orders

- изменить структуру таблицы «Заказ», выделив справочную таблицу «Статус» (код статуса, название статуса).

CREATE TABLE status (id_status integer PRIMARY KEY,

name_status varchar(20) NOT NULL UNIQUE);

INSERT INTO status VALUES (1, 'Accepted'), (2, 'In progress'), (3, 'Complited');

ALTER TABLE orders

DROP CONSTRAINT order_status_order_check,

ALTER COLUMN status_order SET DATA TYPE integer

USING (CASE WHEN status_order = 'Accepted' THEN 1

WHEN status_order = 'In progress' THEN 2

WHEN status_order = 'Complited' THEN 3

END),

ADD FOREIGN KEY (status_order) REFERENCES status (id_status);

SELECT * FROM orders