创建表
定义
CREATE TABLE是SQL中的数据定义语言(DDL)语句,用于在数据库中创建新的表。表是关系型数据库中存储数据的基本单位,由行(记录)和列(字段)组成。
作用
创建表是数据库设计的基础,它提供了以下优势:
- 结构化数据存储:将数据组织成行和列的形式
 - 数据完整性保证:通过约束确保数据的正确性
 - 数据关系管理:通过主键和外键建立表之间的关系
 - 数据访问控制:可以针对表级别设置访问权限
 - 数据查询优化:通过合理的表结构提高查询效率
 
例子
-- 创建用户表
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    full_name VARCHAR(100) NOT NULL,
    phone VARCHAR(20),
    birth_date DATE,
    gender ENUM('Male', 'Female', 'Other'),
    status ENUM('Active', 'Inactive', 'Suspended') DEFAULT 'Active',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建学生表
CREATE TABLE students (
    student_id VARCHAR(20) PRIMARY KEY,
    user_id INT UNIQUE,
    grade INT NOT NULL CHECK (grade BETWEEN 1 AND 12),
    class_name VARCHAR(50),
    enrollment_date DATE NOT NULL,
    graduation_date DATE,
    gpa DECIMAL(3,2) CHECK (gpa BETWEEN 0.00 AND 4.00),
    credits_earned INT DEFAULT 0,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- 创建课程表
CREATE TABLE courses (
    course_id VARCHAR(10) PRIMARY KEY,
    course_name VARCHAR(100) NOT NULL,
    description TEXT,
    credits INT NOT NULL CHECK (credits > 0),
    department VARCHAR(50) NOT NULL,
    prerequisite VARCHAR(10),
    max_students INT DEFAULT 30,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (prerequisite) REFERENCES courses(course_id)
);
图表说明
flowchart TD
    subgraph 数据库表结构
        subgraph 数据类型
            num[数值类型]
            str[字符串类型]
            date[日期时间类型]
            bin[二进制类型]
        end
        subgraph 约束类型
            notnull[NOT NULL]
            unique[UNIQUE]
            pk[PRIMARY KEY]
            fk[FOREIGN KEY]
            check[CHECK]
            def[DEFAULT]
        end
        subgraph 特殊属性
            auto[AUTO_INCREMENT]
            time[TIMESTAMP]
            enum[ENUM]
        end
        subgraph 表关系
            one2one[一对一]
            one2many[一对多]
            many2many[多对多]
        end
    end
    num --> str
    str --> date
    date --> bin
    notnull --> unique
    unique --> pk
    pk --> fk
    fk --> check
    check --> def
    auto --> time
    time --> enum
    one2one --> one2many
    one2many --> many2many
详细说明
创建表涉及以下几个重要方面:
- 
数据类型
- 数值类型:INT, DECIMAL, FLOAT等
 - 字符串类型:CHAR, VARCHAR, TEXT等
 - 日期时间类型:DATE, TIME, DATETIME等
 - 二进制类型:BLOB, VARBINARY等
 
 - 
约束类型
- NOT NULL:确保列不能为空
 - UNIQUE:确保列值唯一
 - PRIMARY KEY:主键约束
 - FOREIGN KEY:外键约束
 - CHECK:检查约束
 - DEFAULT:默认值约束
 
 - 
特殊属性
- AUTO_INCREMENT:自动递增
 - TIMESTAMP:时间戳
 - ENUM:枚举类型
 
 - 
表关系
- 一对一关系
 - 一对多关系
 - 多对多关系
 
 
推演说明
表的设计过程体现了数据库设计的演进:
- 
基础表设计
- 确定字段和数据类型
 - 设置基本约束
 - 定义主键
 
 - 
关系表设计
- 建立表间关系
 - 设置外键约束
 - 处理级联操作
 
 - 
高级表设计
- 添加索引
 - 优化存储结构
 - 考虑性能因素
 
 
注意事项
- 
命名规范
- 使用有意义的表名和字段名
 - 遵循命名约定
 - 避免使用保留字
 
 - 
数据类型选择
- 选择合适的数据类型
 - 考虑存储空间
 - 注意精度要求
 
 - 
约束使用
- 合理使用约束
 - 避免过度约束
 - 考虑性能影响
 
 - 
索引设计
- 为常用查询字段创建索引
 - 避免过多索引
 - 考虑索引维护成本
 
テーブルの作成は、データベース設計の基本です。適切なデータ型の選択、制約の設定、リレーションシップの確立により、効率的で整合性のあるデータ構造を構築することができます。テーブル設計は、アプリケーションの性能と保守性に直接影響するため、慎重に行う必要があります。