Запрос — это выражение на языке SQL, которое инструктирует СУБД выполнить определенные операции с данными. Запросы позволяют извлекать, изменять, добавлять или удалять информацию из базы данных, а также управлять её структурой.
SELECT employee_id, first_name, last_name
FROM employees
WHERE department = 'IT'
ORDER BY hire_date DESC;
-- Вставка
INSERT INTO products (name, price)
VALUES ('Ноутбук', 999.99);
-- Обновление
UPDATE customers
SET loyalty_points = loyalty_points + 100
WHERE last_purchase_date > '2023-01-01';
-- Удаление
DELETE FROM temp_logs
WHERE created_at < CURRENT_DATE - INTERVAL '30 days';
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
customer_id INT REFERENCES customers(customer_id),
order_date DATE NOT NULL DEFAULT CURRENT_DATE
);
ALTER TABLE employees
ADD COLUMN email VARCHAR(255) UNIQUE;
DROP TABLE IF EXISTS backup_data;
Пример комплексного запроса:
SELECT
d.department_name,
COUNT(e.employee_id) AS employee_count,
AVG(e.salary) AS avg_salary
FROM
employees e
JOIN
departments d ON e.department_id = d.department_id
WHERE
e.hire_date > '2020-01-01'
GROUP BY
d.department_name
HAVING
COUNT(e.employee_id) > 5
ORDER BY
avg_salary DESC
LIMIT 10;
SELECT * FROM products WHERE price < 100;
SELECT o.order_id, c.name, p.product_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id;
SELECT name
FROM employees
WHERE department_id IN (
SELECT department_id
FROM departments
WHERE location = 'Москва'
);
WITH RECURSIVE employee_hierarchy AS (
SELECT employee_id, name, manager_id
FROM employees
WHERE employee_id = 100 -- Начало с CEO
UNION ALL
SELECT e.employee_id, e.name, e.manager_id
FROM employees e
JOIN employee_hierarchy eh ON e.manager_id = eh.employee_id
)
SELECT * FROM employee_hierarchy;
CREATE INDEX idx_employee_department ON employees(department_id);
EXPLAIN ANALYZE
SELECT * FROM large_table WHERE category = 'A';
SELECT /*+ HASH_JOIN(orders, customers) */
o.order_id, c.name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id;
SQL-запрос — это точная инструкция для СУБД, которая может:
Эффективные запросы требуют:
Профессиональные разработчики тратят значительное время на оптимизацию запросов, особенно при работе с большими объемами данных.