AdoNetShop/database/06_test.sql

74 lines
2.2 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 06_test.sql
-- Проверочные запросы. Выполняйте вручную после 01-05 скриптов.
USE [AdoNetShop];
GO
-- ============ Таблицы ============
SELECT * FROM Categories;
SELECT * FROM Products;
SELECT * FROM Customers;
SELECT * FROM Orders;
SELECT * FROM OrderItems;
-- ============ Примеры SELECT-запросов из приложения ============
-- 1. Все товары (демонстрация SqlDataReader)
SELECT Id, Name, Description, Price, StockQuantity, CategoryId
FROM Products;
GO
-- 2. Один товар по Id (демонстрация параметризованного SqlCommand)
DECLARE @Id INT = 1;
SELECT Id, Name, Description, Price, StockQuantity, CategoryId
FROM Products
WHERE Id = @Id;
GO
-- 3. Товары с названием категории (JOIN)
SELECT p.Id, p.Name, p.Price, p.StockQuantity, c.Name AS CategoryName
FROM Products p
JOIN Categories c ON p.CategoryId = c.Id
ORDER BY p.Name;
GO
-- ============ Проверка хранимых процедур ============
-- Все товары
EXEC dbo.GetProducts;
GO
-- Товары только 1-й категории
EXEC dbo.GetProducts @CategoryId = 1;
GO
-- Один товар
EXEC dbo.GetProductById @ProductId = 1;
GO
-- Успешное изменение цены
EXEC dbo.UpdateProductPrice @ProductId = 1, @NewPrice = 1450.00;
SELECT Id, Name, Price FROM Products WHERE Id = 1;
GO
-- Ожидаемая ошибка: цена <= 0 (процедура сама вызовет RAISERROR)
EXEC dbo.UpdateProductPrice @ProductId = 1, @NewPrice = -10.00;
GO
-- ============ Проверка ограничений (CHECK) ============
-- Ожидаемая ошибка: Price > 0
INSERT INTO Products (Name, Price, StockQuantity, CategoryId)
VALUES ('Тестовый товар', -5, 1, 1);
GO
-- Ожидаемая ошибка: StockQuantity >= 0
UPDATE Products SET StockQuantity = -1 WHERE Id = 1;
GO
-- ============ Проверка целостности связей (FOREIGN KEY) ============
-- Ожидаемая ошибка: категории 999 не существует
INSERT INTO Products (Name, Price, StockQuantity, CategoryId)
VALUES ('Товар без категории', 100, 1, 999);
GO