CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE my_database;
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...
PRIMARY KEY (one_or_more_columns)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
PRIMARY KEY
- 主键约束FOREIGN KEY
- 外键约束NOT NULL
- 非空约束UNIQUE
- 唯一约束DEFAULT
- 默认值CHECK
- 检查约束(MySQL 8.0+支持)CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
phone VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE
) ENGINE=InnoDB;
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL,
description TEXT,
price DECIMAL(10,2) NOT NULL,
stock_quantity INT NOT NULL DEFAULT 0,
category_id INT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (category_id) REFERENCES categories(category_id)
) ENGINE=InnoDB;
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
total_amount DECIMAL(12,2) NOT NULL,
status ENUM('pending', 'processing', 'shipped', 'delivered', 'cancelled') DEFAULT 'pending',
FOREIGN KEY (user_id) REFERENCES users(user_id)
) ENGINE=InnoDB;
ALTER TABLE users ADD COLUMN last_login DATETIME AFTER updated_at;
ALTER TABLE products MODIFY COLUMN product_name VARCHAR(150) NOT NULL;
ALTER TABLE users DROP COLUMN phone;
ALTER TABLE products ADD INDEX idx_category (category_id);
通过以上步骤和方法,您可以系统地设计和创建MySQL数据库表结构,为应用程序提供高效、可靠的数据存储基础。