База Hintsage

Основы SQL и реляционная модель

Отношения, ключи, реляционная алгебра, логика NULL и основы стандарта SQL.

Практика

Вопросы: Основы SQL и реляционная модель

В представлении хранится итог по отделам. Объясните, почему стандартный SQL не рассматривает такое представление как автоматически обновляемое при выполнении INSERT.

CREATE TABLE employees (
    employee_id INTEGER PRIMARY KEY,
    department_id INTEGER NOT NULL,
    salary INTEGER NOT NULL
);

CREATE VIEW department_totals AS
SELECT department_id, SUM(salary) AS total_salary
FROM employees
GROUP BY department_id;

INSERT INTO department_totals VALUES (10, 500000);

В запросе нужно сопоставить товар со всеми подходящими ценовыми диапазонами. Как формируется результат этого INNER JOIN?

WITH products(id, price) AS (
    VALUES (1, 10), (2, 75), (3, 150)
), bands(name, min_price, max_price) AS (
    VALUES ('regular', 0, 100), ('special', 50, 200)
)
SELECT p.id, b.name
FROM products AS p
JOIN bands AS b
  ON p.price BETWEEN b.min_price AND b.max_price;

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