Нажмите на узел, чтобы увидеть описание.
Нажмите на описание, чтобы увидеть пример.
Автор: Евгений Гусинец
Специально для подписчиков телеграмм канала QA❤️4Life
-- Пример: Вставить нового пользователя и затем обновить его email
INSERT INTO users (username, email) VALUES ('test_user', 'test@example.com');
UPDATE users SET email = 'updated@example.com' WHERE username = 'test_user';
SELECT * FROM users WHERE username = 'test_user';
DELETE FROM users WHERE username = 'test_user';
-- Пример: Выбрать 10 самых дорогих товаров из категории "Электроника"
SELECT product_name, price FROM products
WHERE category = 'Электроника'
ORDER BY price DESC
LIMIT 10;
-- Пример: Найти активных пользователей из России или Беларуси
SELECT * FROM users
WHERE is_active = TRUE AND country IN ('Россия', 'Беларусь');
-- Пример: Посчитать количество заказов и общую сумму для клиента с ID 123
SELECT COUNT(order_id), SUM(total_amount)
FROM orders
WHERE customer_id = 123;
-- Пример: Найти категории товаров, где средняя цена выше 1000
SELECT category, AVG(price) as avg_price
FROM products
GROUP BY category
HAVING AVG(price) > 1000;
-- Пример: Получить имена всех пользователей и названия их заказов (если есть)
SELECT u.username, o.order_name
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
-- Пример: Найти пользователей, которые не сделали ни одного заказа
SELECT username FROM users
WHERE id NOT IN (SELECT DISTINCT user_id FROM orders);
-- Пример: Получить список уникальных городов, где живут клиенты
SELECT DISTINCT city FROM customers;
-- Пример: Создать представление для активных пользователей из Европы
CREATE VIEW v_active_european_users AS
SELECT id, username, email FROM users
WHERE is_active = TRUE AND region = 'Europe';
-- Пример: Вызвать процедуру для регистрации нового пользователя
CALL sp_register_user('new_user', 'new_user@example.com', 'password123');
-- Пример: Добавить внешний ключ к таблице заказов
ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(id);
-- Пример: Создать временную таблицу и затем очистить ее
CREATE TABLE temp_results (...);
TRUNCATE TABLE temp_results;
-- Пример: Создать индекс для ускорения поиска по фамилии
CREATE INDEX idx_users_lastname ON users(last_name);
-- Пример: Посмотреть план выполнения запроса (для PostgreSQL/MySQL)
EXPLAIN ANALYZE SELECT * FROM users WHERE last_name = 'Иванов';
-- Пример: Создать триггер для логирования обновлений
CREATE TRIGGER log_user_update
AFTER UPDATE ON users
FOR EACH ROW
INSERT INTO audit_log(action, user_id, change_date) VALUES ('UPDATE', OLD.id, NOW());
-- Концептуальный пример: Вместо хранения адреса в таблице users,
-- создается отдельная таблица addresses и связывается по user_id.
-- Это пример нормализации.
-- Пример: Получить список email'ов из двух таблиц
SELECT email FROM customers
UNION
SELECT email FROM leads;
-- Пример: Перевод средств в рамках одной транзакции
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
-- Пример: Дать права на чтение для тестового пользователя
GRANT SELECT ON products TO 'qa_user'@'localhost';
-- Пример: Посмотреть активные процессы в MySQL
SHOW PROCESSLIST;
-- Пример: Заполнить таблицу тестовыми пользователями
INSERT INTO users (username, status) VALUES
('test1', 'active'),
('test2', 'inactive'),
('test3', 'banned');
-- Пример: Найти "осиротевшие" заказы (без клиента)
SELECT * FROM orders
WHERE customer_id NOT IN (SELECT id FROM customers);
-- Пример попытки SQL-инъекции (для проверки в поле ввода)
' OR '1'='1' --