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
-- Table des clients CREATE TABLE customers ( customer_id INT PRIMARY KEY AUTO_INCREMENT, email VARCHAR(100) NOT NULL UNIQUE, name VARCHAR(100) NOT NULL, address VARCHAR(200), loyalty_level ENUM('New', 'Bronze', 'Silver', 'Gold') DEFAULT 'New', date_created DATETIME DEFAULT CURRENT_TIMESTAMP, date_modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, last_visit DATETIME, active BOOLEAN DEFAULT TRUE ); -- Table des fournisseurs CREATE TABLE suppliers ( supplier_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, email VARCHAR(100), phone VARCHAR(20) ); -- Table des produits CREATE TABLE products ( product_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, description TEXT, price DECIMAL(10,2) NOT NULL, stock INT DEFAULT 0, category VARCHAR(50), supplier_id INT, status VARCHAR(20) DEFAULT 'Active', last_sale_date DATETIME, date_added DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (supplier_id) REFERENCES suppliers(supplier_id) ); -- Table du catalogue produits CREATE TABLE product_catalog ( catalog_id INT PRIMARY KEY AUTO_INCREMENT, product_id INT, featured BOOLEAN DEFAULT FALSE, display_order INT, FOREIGN KEY (product_id) REFERENCES products(product_id) ); -- Table des commandes CREATE TABLE orders ( order_id INT PRIMARY KEY AUTO_INCREMENT, customer_id INT, order_date DATETIME DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) DEFAULT 'Pending', total_amount DECIMAL(10,2), delivery_address VARCHAR(200), FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ); -- Table des éléments de commande CREATE TABLE order_items ( order_id INT, product_id INT, quantity INT NOT NULL, price_at_time DECIMAL(10,2) NOT NULL, PRIMARY KEY (order_id, product_id), FOREIGN KEY (order_id) REFERENCES orders(order_id), FOREIGN KEY (product_id) REFERENCES products(product_id) ); -- Table des avis produits CREATE TABLE product_reviews ( review_id INT PRIMARY KEY AUTO_INCREMENT, product_id INT, customer_id INT, rating INT CHECK (rating BETWEEN 1 AND 5), comment TEXT, review_date DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (product_id) REFERENCES products(product_id), FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ); -- Table des adresses de livraison CREATE TABLE delivery_addresses ( address_id INT PRIMARY KEY AUTO_INCREMENT, customer_id INT, address VARCHAR(200) NOT NULL, is_default BOOLEAN DEFAULT FALSE, date_added DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ); -- Table de l'historique des prix CREATE TABLE price_history ( history_id INT PRIMARY KEY AUTO_INCREMENT, product_id INT, price DECIMAL(10,2) NOT NULL, change_date DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (product_id) REFERENCES products(product_id) ); -- Table des listes de souhaits CREATE TABLE wishlist_items ( wishlist_id INT PRIMARY KEY AUTO_INCREMENT, customer_id INT, product_id INT, date_added DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (customer_id) REFERENCES customers(customer_id), FOREIGN KEY (product_id) REFERENCES products(product_id) ); -- Table du panier CREATE TABLE cart_items ( cart_id INT PRIMARY KEY AUTO_INCREMENT, customer_id INT, product_id INT, quantity INT DEFAULT 1, date_added DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (customer_id) REFERENCES customers(customer_id), FOREIGN KEY (product_id) REFERENCES products(product_id) ); -- Table des factures CREATE TABLE invoices ( invoice_id INT PRIMARY KEY AUTO_INCREMENT, order_id INT, customer_email VARCHAR(100), amount DECIMAL(10,2), date_created DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (order_id) REFERENCES orders(order_id) ); -- Table des tickets support CREATE TABLE support_tickets ( ticket_id INT PRIMARY KEY AUTO_INCREMENT, customer_id INT, customer_email VARCHAR(100), subject VARCHAR(200), status VARCHAR(20) DEFAULT 'Open', date_created DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ); -- Table d'audit CREATE TABLE audit_log ( log_id INT PRIMARY KEY AUTO_INCREMENT, table_name VARCHAR(50), record_id INT, action VARCHAR(20), old_value TEXT, new_value TEXT, change_date DATETIME DEFAULT CURRENT_TIMESTAMP, changed_by VARCHAR(50) ); -- Insert data into customers table INSERT INTO customers (email, name, address, loyalty_level, last_visit, active) VALUES ('john.doe@example.com', 'John Doe', '123 Elm Street, Cityville', 'Silver', '2023-09-15 12:45:00', TRUE), ('jane.smith@example.com', 'Jane Smith', '456 Oak Avenue, Townsville', 'Gold', '2023-10-01 14:10:00', TRUE), ('mike.jones@example.com', 'Mike Jones', '789 Pine Road, Villageton', 'Bronze', '2023-08-22 09:00:00', FALSE), ('lisa.brown@example.com', 'Lisa Brown', '321 Maple Drive, Lakeview', 'New', '2023-07-19 16:25:00', TRUE), ('paul.green@example.com', 'Paul Green', '654 Cedar Avenue, Hometown', 'Silver', '2023-06-25 11:40:00', TRUE), ('amy.white@example.com', 'Amy White', '987 Birch Blvd, Hilltown', 'Bronze', '2023-05-13 17:55:00', TRUE), ('mark.davis@example.com', 'Mark Davis', '456 Spruce Street, Valley City', 'Gold', '2023-04-20 18:05:00', FALSE), ('sara.wilson@example.com', 'Sara Wilson', '321 Aspen Way, Riverside', 'New', '2023-09-10 15:00:00', TRUE), ('tom.harris@example.com', 'Tom Harris', '789 Willow Lane, Greenfield', 'Silver', '2023-10-11 13:30:00', TRUE), ('linda.thomas@example.com', 'Linda Thomas', '456 Fir Avenue, Beachtown', 'Gold', '2023-10-15 12:10:00', TRUE), ('linda.x@example.com', 'Linda X', '456 Fir Avenue, X', 'Gold', NULL, TRUE); -- Insert data into suppliers table INSERT INTO suppliers (name, email, phone) VALUES ('TechCorp', 'contact@techcorp.com', '123-456-7890'), ('GadgetHouse', 'info@gadgethouse.com', '987-654-3210'), ('RetroFun', 'support@retrofun.com', '555-123-4567'), ('ElectroWorld', 'sales@electroworld.com', '444-222-3333'), ('PowerUp', 'info@powerup.com', '111-222-3333'), ('ComputeHub', 'service@computehub.com', '222-333-4444'), ('GizmoDepot', 'support@gizmodepot.com', '333-444-5555'), ('DeviceCenter', 'contact@devicecenter.com', '555-666-7777'), ('Techies', 'hello@techies.com', '666-777-8888'), ('BestDevices', 'info@bestdevices.com', '777-888-9999'); -- Insert data into products table INSERT INTO products (name, description, price, stock, category, supplier_id, status, last_sale_date) VALUES ('Gaming Laptop', 'High-performance gaming laptop', 1429.99, 50, 'Electronics', 1, 'Active', '2023-09-12 10:00:00'), ('Smartphone Pro', 'Latest model smartphone', 989.99, 100, 'Electronics', 2, 'Active', '2023-09-14 11:20:00'), ('Retro Console', 'Classic retro gaming console', 219.99, 75, 'Gaming', 3, 'Active', '2023-10-01 13:30:00'), ('Wireless Earbuds', 'Noise-cancelling earbuds', 149.99, 200, 'Audio', 4, 'Active', '2023-10-10 16:45:00'), ('Smartwatch', 'Feature-packed smartwatch', 249.99, 120, 'Wearables', 5, 'Active', '2023-10-12 14:55:00'), ('Tablet Pro', 'High-resolution tablet', 499.99, 90, 'Electronics', 6, 'Active', '2023-09-20 09:10:00'), ('4K TV', 'Ultra HD 4K television', 699.99, 30, 'Home Electronics', 7, 'Active', '2023-10-15 12:05:00'), ('Gaming Keyboard', 'Mechanical gaming keyboard', 79.99, 150, 'Peripherals', 8, 'Active', '2023-09-25 17:30:00'), ('Bluetooth Speaker', 'Portable Bluetooth speaker', 89.99, 180, 'Audio', 9, 'Active', '2023-10-05 18:00:00'), ('Smart Home Hub', 'Smart home device controller', 129.99, 80, 'Home Automation', 10, 'Active', '2023-09-18 20:15:00'); -- Insert data into product_catalog table INSERT INTO product_catalog (product_id, featured, display_order) VALUES (1, TRUE, 1), (2, TRUE, 2), (3, TRUE, 3), (4, FALSE, 4), (5, FALSE, 5), (6, TRUE, 6), (7, FALSE, 7), (8, TRUE, 8), (9, FALSE, 9), (10, TRUE, 10); -- Insert data into orders table INSERT INTO orders (customer_id, order_date, status, total_amount, delivery_address) VALUES (1, '2023-10-15 14:30:00', 'UNKNOWN', 1429.99, '123 Elm Street, Cityville'), (2, '2023-10-14 09:45:00', 'Delivered', 989.99, '456 Oak Avenue, Townsville'), (3, '2023-09-10 16:15:00', 'Shipped', 219.99, '789 Pine Road, Villageton'), (4, '2023-10-20 11:10:00', 'Pending', 149.99, '321 Maple Drive, Lakeview'), (5, '2023-10-11 13:25:00', 'Shipped', 249.99, '654 Cedar Avenue, Hometown'), (6, '2023-09-12 12:00:00', 'Delivered', 499.99, '987 Birch Blvd, Hilltown'), (7, '2023-08-22 09:55:00', 'Pending', 699.99, '456 Spruce Street, Valley City'), (8, '2023-07-10 10:45:00', 'Shipped', 79.99, '321 Aspen Way, Riverside'), (9, '2023-10-21 12:35:00', 'Pending', 89.99, '789 Willow Lane, Greenfield'), (10, '2023-09-10 15:15:00', 'Delivered', 129.99, '456 Fir Avenue, Beachtown'); -- Insert data into order_items table INSERT INTO order_items (order_id, product_id, quantity, price_at_time) VALUES (1, 1, 1, 1429.99), (2, 2, 1, 989.99), (3, 3, 1, 219.99), (4, 4, 1, 149.99), (5, 5, 1, 249.99), (6, 6, 1, 499.99), (7, 7, 1, 699.99), (8, 8, 1, 79.99), (9, 9, 1, 89.99), (10, 10, 1, 129.99); -- Insert data into product_reviews table INSERT INTO product_reviews (product_id, customer_id, rating, comment) VALUES (1, 1, 5, 'Amazing product, highly recommended!'), (2, 2, 4, 'Good value for money.'), (3, 3, 5, 'Classic experience! Love it.'), (4, 4, 3, 'Decent sound, could be better.'), (5, 5, 4, 'Great features, battery life could be improved.'), (6, 6, 5, 'Perfect for entertainment.'), (7, 7, 4, 'Impressive clarity and colors.'), (8, 8, 3, 'Keys are a bit stiff, but overall good.'), (9, 9, 4, 'Great for outdoor use.'), (10, 10, 5, 'Works flawlessly with all my devices.'); -- Insert data into delivery_addresses table INSERT INTO delivery_addresses (customer_id, address, is_default) VALUES (1, '123 Elm Street, Cityville', TRUE), (2, '456 Oak Avenue, Townsville', TRUE), (3, '789 Pine Road, Villageton', FALSE), (4, '321 Maple Drive, Lakeview', TRUE), (5, '654 Cedar Avenue, Hometown', TRUE), (6, '987 Birch Blvd, Hilltown', FALSE), (7, '456 Spruce Street, Valley City', TRUE), (8, '321 Aspen Way, Riverside', TRUE), (9, '789 Willow Lane, Greenfield', TRUE), (10, '456 Fir Avenue, Beachtown', TRUE); INSERT INTO delivery_addresses (customer_id, address, is_default, date_added) VALUES (1, '123 Elm Street, Cityville', TRUE, '2024-10-01'), (1, '123 Elm Street, Cityville', FALSE, '2023-10-01'); -- Insert data into price_history table INSERT INTO price_history (product_id, price, change_date) VALUES (1, 1429.99, '2023-09-10 10:30:00'), (2, 989.99, '2023-08-20 09:45:00'), (3, 219.99, '2023-09-01 14:00:00'), (4, 149.99, '2023-10-01 11:30:00'), (5, 249.99, '2023-09-25 15:10:00'), (6, 499.99, '2023-09-20 16:45:00'), (7, 699.99, '2023-08-10 12:10:00'), (8, 79.99, '2023-09-05 13:35:00'), (9, 89.99, '2023-09-30 14:20:00'), (10, 129.99, '2023-10-15 15:55:00'); -- Insert data into wishlist_items table INSERT INTO wishlist_items (customer_id, product_id) VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9), (10, 10); -- Insert data into cart_items table INSERT INTO cart_items (customer_id, product_id, quantity) VALUES (1, 2, 1), (2, 1, 1), (3, 5, 2), (4, 3, 1), (5, 4, 2), (6, 6, 1), (7, 8, 1), (8, 9, 2), (9, 7, 1), (10, 10, 1); -- Insert data into invoices table INSERT INTO invoices (order_id, customer_email, amount) VALUES (1, 'john.doe@example.com', 1429.99), (2, 'jane.smith@example.com', 989.99), (3, 'mike.jones@example.com', 219.99), (4, 'lisa.brown@example.com', 149.99), (5, 'paul.green@example.com', 249.99), (6, 'amy.white@example.com', 499.99), (7, 'mark.davis@example.com', 699.99), (8, 'sara.wilson@example.com', 79.99), (9, 'tom.harris@example.com', 89.99), (10, 'linda.thomas@example.com', 129.99); -- Insert data into support_tickets table INSERT INTO support_tickets (customer_id, customer_email, subject, status) VALUES (1, 'john.doe@example.com', 'Issue with Gaming Laptop', 'Open'), (2, 'jane.smith@example.com', 'Smartphone Pro not charging', 'Closed'), (3, 'mike.jones@example.com', 'Retro Console defect', 'Pending'), (4, 'lisa.brown@example.com', 'Missing accessory', 'Resolved'), (5, 'paul.green@example.com', 'Delivery delayed', 'Open'), (6, 'amy.white@example.com', 'Tablet Pro screen issue', 'Closed'), (7, 'mark.davis@example.com', 'Keyboard keys malfunctioning', 'Pending'), (8, 'sara.wilson@example.com', 'Bluetooth speaker sound issue', 'Open'), (9, 'tom.harris@example.com', 'Invoice discrepancy', 'Closed'), (10, 'linda.thomas@example.com', 'Warranty question', 'Open'); -- Insert data into audit_log table INSERT INTO audit_log (table_name, record_id, action, old_value, new_value, changed_by) VALUES ('customers', 1, 'Update', '{"loyalty_level": "Silver"}', '{"loyalty_level": "Gold"}', 'admin'), ('products', 2, 'Update', '{"stock": 100}', '{"stock": 90}', 'admin'), ('orders', 3, 'Insert', NULL, '{"order_id": 3, "status": "Shipped"}', 'system'), ('customers', 4, 'Delete', '{"active": "TRUE"}', '{"active": "FALSE"}', 'user'), ('support_tickets', 5, 'Update', '{"status": "Open"}', '{"status": "Resolved"}', 'support'), ('product_reviews', 6, 'Update', '{"rating": "4"}', '{"rating": "5"}', 'moderator'), ('products', 7, 'Insert', NULL, '{"product_id": 7, "status": "Active"}', 'admin'), ('invoices', 8, 'Update', '{"amount": "79.99"}', '{"amount": "89.99"}', 'accounting'), ('cart_items', 9, 'Delete', '{"quantity": "1"}', '{"quantity": "0"}', 'system'), ('wishlist_items', 10, 'Insert', NULL, '{"customer_id": 10, "product_id": 10}', 'user'); -- Insertion des produits avec stock=0 INSERT INTO products (name, price, stock, category, supplier_id, status) VALUES ('Casque Gaming Pro X', 149.99, 0, 'Audio', 1, 'Active'), ('Souris Optique 4000dpi', 49.99, 0, 'Peripherals', 2, 'Active'), ('Webcam HD Pro', 89.99, 0, 'Peripherals', 3, 'Active'); -- Ces produits ne sont pas dans order_items donc jamais commandés INSERT INTO products (name, price, stock, category, supplier_id, status) VALUES ('Microphone Studio USB', 129.99, 5, 'Audio', 4, 'Active'), ('Clavier Rétroéclairé', 79.99, 8, 'Peripherals', 5, 'Active'); -- Ces produits n'ont pas d'avis dans product_reviews INSERT INTO products (name, price, stock, category, supplier_id, status) VALUES ('Tapis de Souris XXL', 29.99, 20, 'Peripherals', 6, 'Active'), ('Hub USB Type-C', 39.99, 15, 'Peripherals', 7, 'Active'); INSERT INTO delivery_addresses (address) VALUES ('789 Test Street, New City'); -- D'abord, ajoutons la colonne et quelques managers ALTER TABLE customers ADD COLUMN manager_id INT; UPDATE customers SET manager_id = 2 WHERE customer_id IN (1, 3, 4); --- adresse de livraison non utilisée INSERT INTO delivery_addresses (address) VALUES ('789 Test Street, New City'); SELECT category, COUNT(products.product_id) FROM products GROUP BY category ORDER BY category DESC; SELECT suppliers.name, ROUND(AVG(price),2) as prix_moyen FROM products INNER JOIN suppliers ON products.supplier_id=suppliers.supplier_id GROUP BY suppliers.name ORDER BY prix_moyen DESC; SELECT customers.name, COUNT(orders.order_id) as nbr_orders FROM customers LEFT JOIN orders ON customers.customer_id=orders.customer_id GROUP BY customers.name ORDER BY nbr_orders DESC; SELECT orders.status, COUNT(orders.order_id) as nbr_orders, SUM(total_amount) as total_vente FROM orders GROUP BY status ORDER BY total_vente DESC; SELECT products.name, ROUND(AVG(rating),2) as note_moy FROM products INNER JOIN product_reviews ON products.product_id= product_reviews.product_id GROUP BY products.name ORDER BY note_moy DESC; SELECT COUNT(product_reviews.review_id) as nbr_Avis, customers.name FROM customers LEFT JOIN product_reviews ON customers.customer_id=product_reviews.customer_id GROUP BY customers.name ORDER BY nbr_Avis DESC; SELECT c.name, COUNT(pr.review_id) as nombre_avis FROM customers c LEFT JOIN product_reviews pr ON c.customer_id = pr.customer_id GROUP BY c.customer_id, c.name HAVING nombre_avis > 0 ORDER BY nombre_avis DESC; SELECT rating, COUNT(product_reviews.review_id) as nbr_avis, product_reviews.rating as note FROM products INNER JOIN product_reviews ON products.product_id= product_reviews.product_id GROUP BY product_reviews.rating ORDER BY nbr_avis DESC; SELECT products.category, MONTH(order_date) as mois, COUNT(orders.order_id) as nbr_orders, SUM(price_at_time*quantity) as total_ventes FROM products INNER JOIN order_items on products.product_id=order_items.product_id INNER JOIN orders ON order_items.order_id= orders.order_id GROUP BY products.category, MONTH(order_date) ORDER BY products.category, MONTH(order_date); SELECT c.name, o.status, COUNT(*) as nombre_commandes, ROUND(SUM(o.total_amount), 2) as montant_total FROM customers c JOIN orders o ON c.customer_id = o.customer_id GROUP BY c.customer_id, c.name, o.status ORDER BY c.name, nombre_commandes DESC; SELECT customers.loyalty_level as loyalty_level, products.category as category, COUNT(orders.order_id) as nbr_orders, SUM(price_at_time*quantity) as total_vente FROM customers INNER JOIN orders ON customers.customer_id= orders.customer_id INNER JOIN order_items ON orders.order_id= order_items.order_id INNER JOIN products ON order_items.product_id=products.product_id GROUP BY customers.loyalty_level, products.category ORDER BY customers.loyalty_level, products.category; SELECT suppliers.name, products.category as category, COUNT(products.product_id) as nbr_produits, sum(products.stock) as stock_tot FROM products INNER JOIN suppliers ON products.supplier_id=suppliers.supplier_id GROUP BY suppliers.name, products.category; SELECT products.category, AVG(price) as prix_moyen, SUM(products.stock) as stock_total, COUNT(products.product_id) as nbr_produits FROM products GROUP BY category ORDER BY stock_total DESC; SELECT suppliers.name COUNT(products.product_id) as produit_sans_stock, FROM products INNER JOIN suppliers ON products.supplier_id=suppliers.supplier_id WHERE stock=0 GROUP BY suppliers.name;

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

Copy Clear