База Hintsage

DDL и типы данных

CREATE, ALTER, DROP, стандартные типы данных и объекты схемы.

Практика

Вопросы: DDL и типы данных

В схеме хранятся таблица и зависящее от неё представление. Какой главный риск создаёт замена RESTRICT на CASCADE в последней команде?

CREATE SCHEMA reporting;

CREATE TABLE reporting.daily_orders (
    order_id INTEGER PRIMARY KEY,
    total DECIMAL(12, 2) NOT NULL
);

CREATE VIEW reporting.recent_orders AS
SELECT order_id, total
FROM reporting.daily_orders;

DROP SCHEMA reporting CASCADE;

При подготовке архивной таблицы выполнена команда ниже. Какие ограничения целостности исходной таблицы не гарантирует автоматически сохранить такой способ создания?

CREATE TABLE archive.orders_2024 AS
SELECT order_id, customer_id, total
FROM sales.orders
WHERE created_at < DATE '2025-01-01';

Рассмотрите DDL и две вставки ниже. Почему ограничение UNIQUE допускает обе строки с NULL в email, тогда как PRIMARY KEY не позволяет такое значение?

CREATE TABLE accounts (
    account_id INTEGER PRIMARY KEY,
    email VARCHAR(255) UNIQUE
);

INSERT INTO accounts (account_id, email) VALUES (1, NULL);
INSERT INTO accounts (account_id, email) VALUES (2, NULL);

В сервисе нужно переименовать таблицу, которую использует представление. Предположим, СУБД отслеживает зависимости объектов. Какое ключевое отличие даст ALTER TABLE от удаления таблицы с последующим CREATE TABLE?

CREATE SCHEMA billing;

CREATE TABLE billing.invoice (
    invoice_id INTEGER PRIMARY KEY,
    amount DECIMAL(10, 2) NOT NULL
);

CREATE VIEW billing.open_invoices AS
SELECT invoice_id, amount
FROM billing.invoice;

ALTER TABLE billing.invoice RENAME TO invoice_archive;
Программирование SQLDDL и типы данныхРазработчик серверной части

Определите результат добавления ограничения: какая команда завершится ошибкой и почему?

CREATE TABLE payments (
    payment_id INTEGER PRIMARY KEY,
    amount DECIMAL(10, 2)
);

INSERT INTO payments VALUES (1, 125.00);
INSERT INTO payments VALUES (2, -5.00);

ALTER TABLE payments
ADD CONSTRAINT positive_amount CHECK (amount >= 0);

В таблице задан тип DECIMAL(5, 2). Предскажите, какая вставка завершится ошибкой из-за диапазона типа, и объясните механизм.

CREATE TABLE prices (
    item_id INTEGER PRIMARY KEY,
    amount DECIMAL(5, 2)
);

INSERT INTO prices VALUES (1, 999.99);
INSERT INTO prices VALUES (2, 1000.00);
Программирование SQLDDL и типы данныхРазработчик серверной части, работающий с реляционными базами данных

Показано 120 из 50