← К оглавлению занятия

💻 Примеры

⚡ Кратко: примеры

  • Создание таблицы products с ограничениями.
  • Вставка 5 товаров.
  • Обновление складского остатка.
  • Создание View product_overview.

💻 Примеры

Создание таблицы products

CREATE TABLE products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL,
    category VARCHAR(50) DEFAULT 'General',
    price DECIMAL(8, 2) CHECK (price >= 0),
    stock_quantity INT CHECK (stock_quantity >= 0),
    supplier_id INT
);

Вставка данных

INSERT INTO products (product_name, category, price, stock_quantity, supplier_id)
VALUES ('Laptop', 'Electronics', 1200.00, 10, 1),
       ('Office Chair', 'Furniture', 150.00, 25, 2),
       ('Pen', 'Stationery', 1.50, 100, 3),
       ('Desk Lamp', 'Furniture', 45.00, 15, 2),
       ('Notebook', 'Stationery', 3.00, 200, 3);

Обновление остатков

UPDATE products
SET stock_quantity = stock_quantity - 3
WHERE product_id = 1;

Создание представления product_overview

CREATE VIEW product_overview AS
SELECT
    product_name,
    category,
    price * stock_quantity AS stock_value,
    CASE
        WHEN stock_quantity < 20 THEN 'Low Stock'
        ELSE 'In Stock'
    END AS stock_status
FROM products;

Запрос к представлению

SELECT product_name, stock_value, stock_status
FROM product_overview
WHERE stock_status = 'Low Stock';

Пример таблицы мониторинга здоровья

CREATE TABLE health_metrics (
    metric_id INT AUTO_INCREMENT PRIMARY KEY,
    person_name VARCHAR(100) NOT NULL,
    measurement_date DATE NOT NULL,
    heart_rate INT CHECK (heart_rate BETWEEN 30 AND 220),
    systolic_bp INT CHECK (systolic_bp BETWEEN 70 AND 250),
    diastolic_bp INT CHECK (diastolic_bp BETWEEN 40 AND 150),
    weight_kg DECIMAL(5, 2) CHECK (weight_kg > 0),
    notes TEXT
);

INSERT INTO health_metrics (person_name, measurement_date, heart_rate, systolic_bp, diastolic_bp, weight_kg)
VALUES ('Alice', '2025-06-15', 72, 120, 80, 65.50),
       ('Bob', '2025-06-16', 68, 115, 75, 78.00),
       ('Charlie', '2025-06-17', 75, 122, 82, 70.25);