CREATE DATABASE IF NOT EXISTS testdb;
USE testdb;
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL,
age INT CHECK (age > 0),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE users ADD COLUMN last_login DATETIME;
ALTER TABLE users MODIFY COLUMN email VARCHAR(150) UNIQUE;
ALTER TABLE users DROP COLUMN last_login;
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
category VARCHAR(50),
price DECIMAL(10, 2),
stock INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
description TEXT,
INDEX idx_name (product_name),
INDEX idx_price (price DESC),
FULLTEXT ft_description (description)
);
CREATE INDEX idx_category ON products(category);
CREATE INDEX idx_price_cat ON products(price, category);
DROP INDEX idx_price_cat ON products;
INSERT INTO users (username, email, age) VALUES
('user1', 'user1@example.com', 25),
('user2', 'user2@example.com', 30),
('user3', 'user3@example.com', 22);
INSERT INTO products (product_name, category, price, stock) VALUES
('Laptop', 'Electronics', 899.99, 100),
('Mouse', 'Accessories', 29.99, 500),
('Keyboard', 'Accessories', 49.99, 300);
SELECT * FROM users WHERE age > 23;
SELECT * FROM products WHERE category = 'Accessories' ORDER BY price;
SHOW INDEX FROM products;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS products;