Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
-- 1. Customers Tablosu CREATE TABLE Customers ( CustomerID SERIAL PRIMARY KEY, Name VARCHAR(100), Email VARCHAR(100) UNIQUE, RegistrationDate DATE ); -- 2. Categories Tablosu CREATE TABLE Categories ( CategoryID SERIAL PRIMARY KEY, CategoryName VARCHAR(100) ); -- 3. Products Tablosu CREATE TABLE Products ( ProductID SERIAL PRIMARY KEY, ProductName VARCHAR(100), Price NUMERIC(10,2), Stock INTEGER, CategoryID INTEGER REFERENCES Categories(CategoryID) ); -- 4. Orders Tablosu CREATE TABLE Orders ( OrderID SERIAL PRIMARY KEY, CustomerID INTEGER REFERENCES Customers(CustomerID), OrderDate DATE, TotalAmount NUMERIC(10,2) ); -- 5. OrderItems Tablosu (N-N ilişkisini temsil eder) CREATE TABLE OrderItems ( OrderItemID SERIAL PRIMARY KEY, OrderID INTEGER REFERENCES Orders(OrderID), ProductID INTEGER REFERENCES Products(ProductID), Quantity INTEGER, UnitPrice NUMERIC(10,2) ); -- Müşteri Ekle INSERT INTO Customers (Name, Email, RegistrationDate) VALUES ('Ahmet Yılmaz', 'ahmet@gmail.com', '2024-01-10'); -- Kategori Ekle INSERT INTO Categories (CategoryName) VALUES ('Elektronik'), ('Kitap'), ('Giyim'); -- Ürün Ekle INSERT INTO Products (ProductName, Price, Stock, CategoryID) VALUES ('Kulaklık', 150.00, 20, 1), ('Roman Kitabı', 45.00, 50, 2), ('Tişört', 80.00, 100, 3); -- Sipariş Ekle INSERT INTO Orders (CustomerID, OrderDate, TotalAmount) VALUES (1, '2024-03-01', 230.00); -- Sipariş Kalemi Ekle INSERT INTO OrderItems (OrderID, ProductID, Quantity, UnitPrice) VALUES (1, 1, 1, 150.00), (1, 2, 2, 45.00); -- Müşteri E-posta güncelle UPDATE Customers SET Email = 'ahmety@gmail.com' WHERE CustomerID = 1; -- Ürün stok güncelle UPDATE Products SET Stock = Stock - 3 WHERE ProductID IN (1, 2); -- Kategori adı güncelle UPDATE Categories SET CategoryName = 'Moda' WHERE CategoryID = 3; -- Belirli bir siparişi sil DELETE FROM Orders WHERE OrderID = 1; -- Bir ürünü sil DELETE FROM Products WHERE ProductID = 3; -- Tüm müşterileri getir SELECT * FROM Customers; -- En son kayıt olan müşteriler SELECT * FROM Customers ORDER BY RegistrationDate DESC LIMIT 5; -- Stokta olan ürünleri listele SELECT * FROM Products WHERE Stock > 0; -- Ürün adında 'kitap' geçen ürünleri bul SELECT * FROM Products WHERE ProductName ILIKE '%kitap%'; -- Ürünleri kategori adına göre listele SELECT p.ProductName, c.CategoryName FROM Products p JOIN Categories c ON p.CategoryID = c.CategoryID; -- Siparişlerle birlikte müşteri adı SELECT o.OrderID, c.Name, o.TotalAmount FROM Orders o JOIN Customers c ON o.CustomerID = c.CustomerID; -- Her müşterinin toplam sipariş sayısı SELECT c.Name, COUNT(o.OrderID) AS SiparisSayisi FROM Customers c LEFT JOIN Orders o ON c.CustomerID = o.CustomerID GROUP BY c.Name; -- Her kategoride kaç ürün var SELECT c.CategoryName, COUNT(p.ProductID) AS UrunSayisi FROM Categories c LEFT JOIN Products p ON p.CategoryID = c.CategoryID GROUP BY c.CategoryName; -- Toplam harcaması 100 TL’den fazla olan müşteriler SELECT c.Name, SUM(o.TotalAmount) AS ToplamHarcama FROM Customers c JOIN Orders o ON c.CustomerID = o.CustomerID GROUP BY c.Name HAVING SUM(o.TotalAmount) > 100; -- Sipariş başına ürün sayısı SELECT o.OrderID, COUNT(oi.ProductID) AS UrunSayisi FROM Orders o JOIN OrderItems oi ON o.OrderID = oi.OrderID GROUP BY o.OrderID; -- Kategoriye göre ürün sayısı döndüren fonksiyon CREATE FUNCTION GetProductCountByCategory(cat_id INT) RETURNS INT AS $$ DECLARE total INT; BEGIN SELECT COUNT(*) INTO total FROM Products WHERE CategoryID = cat_id; RETURN total; END; $$ LANGUAGE plpgsql; -- Yeni müşteri ekleyen prosedür CREATE PROCEDURE AddNewCustomer(cust_name VARCHAR, cust_email VARCHAR) LANGUAGE plpgsql AS $$ BEGIN INSERT INTO Customers (Name, Email, RegistrationDate) VALUES (cust_name, cust_email, CURRENT_DATE); END; $$; -- Ürün stok 0’a düşerse uyarı tetikleyici CREATE FUNCTION check_stock() RETURNS TRIGGER AS $$ BEGIN IF NEW.Stock < 1 THEN RAISE NOTICE 'Stok tükendi!'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER trg_check_stock BEFORE UPDATE ON Products FOR EACH ROW EXECUTE FUNCTION check_stock(); -- Sipariş detaylarını gösteren görünüm CREATE VIEW OrderDetails AS SELECT o.OrderID, c.Name AS Customer, p.ProductName, oi.Quantity, oi.UnitPrice FROM Orders o JOIN Customers c ON o.CustomerID = c.CustomerID JOIN OrderItems oi ON o.OrderID = oi.OrderID JOIN Products p ON p.ProductID = oi.ProductID; -- Sipariş ve sipariş kalemini birlikte ekleyen işlem BEGIN; INSERT INTO Orders (CustomerID, OrderDate, TotalAmount) VALUES (1, CURRENT_DATE, 200.00); INSERT INTO OrderItems (OrderID, ProductID, Quantity, UnitPrice) VALUES (1, 1, 2, 100.00); COMMIT; -- Kullanıcı oluşturma (eğer destekleniyorsa) CREATE USER read_only_user WITH PASSWORD '123456'; -- Sadece SELECT yetkisi verme GRANT SELECT ON Customers TO read_only_user;

Stuck with a problem? Got Error? Ask AI support!

Copy Clear