-- 用户表CREATE TABLE users ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT NULL UNIQUE, password_hash VARCHAR(255) NOT NULL, phone VARCHAR(20), avatar_url VARCHAR(500), status ENUM('active', 'inactive', 'banned') DEFAULT 'active', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_email (email), INDEX idx_phone (phone)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;-- 商品表CREATE TABLE products ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(200) NOT NULL, description TEXT, price DECIMAL(10, 2) NOT NULL, stock INT NOT NULL DEFAULT 0, category_id BIGINT, status ENUM('draft', 'active', 'inactive') DEFAULT 'draft', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_category (category_id), INDEX idx_status (status), CONSTRAINT chk_price CHECK (price >= 0), CONSTRAINT chk_stock CHECK (stock >= 0)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;-- 订单表CREATE TABLE orders ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(32) NOT NULL UNIQUE, user_id BIGINT NOT NULL, total_amount DECIMAL(12, 2) NOT NULL, status ENUM('pending', 'paid', 'shipped', 'completed', 'cancelled') DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id), INDEX idx_user (user_id), INDEX idx_status (status), INDEX idx_created (created_at)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;-- 订单明细表CREATE TABLE order_items ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_id BIGINT NOT NULL, product_id BIGINT NOT NULL, quantity INT NOT NULL, unit_price DECIMAL(10, 2) NOT NULL, FOREIGN KEY (order_id) REFERENCES orders(id), FOREIGN KEY (product_id) REFERENCES products(id), INDEX idx_order (order_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
临时表
-- 创建临时表(会话结束自动删除)CREATE TEMPORARY TABLE temp_results ( id INT, value VARCHAR(100));-- 从查询结果创建临时表CREATE TEMPORARY TABLE temp_high_salary ASSELECT * FROM employees WHERE salary > 20000;
复制表结构
-- 只复制结构,不复制数据CREATE TABLE users_backup LIKE users;-- 复制结构和数据CREATE TABLE users_backup AS SELECT * FROM users;-- 复制结构和部分数据CREATE TABLE users_backup ASSELECT * FROM users WHERE created_at > '2024-01-01';