
postgres 3 Поникаровский
.docxВ таблице «Предприятие»:
- убрать ограничение уникальности для поля «Название предприятия»;
- изменить значение по умолчанию для поля «Город»;
- увеличить количество символов для ввода в поле «Город»;
- добавить обязательное поле «Страна» (последовательность действий: создать поле, ввести значения, сделать поле обязательным);
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