跳转到内容

SQL创建表

来自代码酷
Admin留言 | 贡献2025年5月12日 (一) 00:20的版本 (Page creation by admin bot)

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)

SQL创建表[编辑 | 编辑源代码]

介绍[编辑 | 编辑源代码]

SQL创建表是数据库设计中的基础操作,用于定义表的结构并存储数据。表是关系型数据库的核心组件,由行(记录)和列(字段)组成。通过CREATE TABLE语句,用户可以指定表名、列名、数据类型以及约束条件(如主键、外键、唯一性等)。本文将详细介绍如何创建表,并提供实际案例和代码示例。

语法[编辑 | 编辑源代码]

CREATE TABLE的基本语法如下:

CREATE TABLE table_name (
    column1 datatype [constraints],
    column2 datatype [constraints],
    ...
    [table_constraints]
);

其中:

  • table_name:要创建的表的名称。
  • column1, column2, ...:表的列名。
  • datatype:列的数据类型(如INT, VARCHAR, DATE等)。
  • constraints:可选的列级约束(如PRIMARY KEY, NOT NULL等)。
  • table_constraints:可选的表级约束(如复合主键、外键等)。

数据类型[编辑 | 编辑源代码]

SQL支持多种数据类型,常见的有:

数据类型 描述
INT 整数
VARCHAR(n) 可变长度字符串,最大长度为n
CHAR(n) 固定长度字符串,长度为n
DATE 日期(YYYY-MM-DD)
DECIMAL(p, s) 精确小数,p为总位数,s为小数位数
BOOLEAN 布尔值(TRUE/FALSE

约束条件[编辑 | 编辑源代码]

约束用于确保数据的完整性和一致性,常见的约束包括:

  • PRIMARY KEY:唯一标识表中的每一行。
  • FOREIGN KEY:确保引用其他表的列值有效。
  • NOT NULL:列值不能为空。
  • UNIQUE:列值必须唯一。
  • CHECK:确保列值满足特定条件。
  • DEFAULT:为列设置默认值。

示例[编辑 | 编辑源代码]

基本表示例[编辑 | 编辑源代码]

创建一个名为students的表,包含学生ID、姓名、年龄和入学日期:

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT,
    enrollment_date DATE
);

带约束的表示例[编辑 | 编辑源代码]

创建一个带外键约束的courses表,引用students表:

CREATE TABLE courses (
    course_id INT PRIMARY KEY,
    course_name VARCHAR(100) NOT NULL,
    student_id INT,
    FOREIGN KEY (student_id) REFERENCES students(student_id)
);

复合主键示例[编辑 | 编辑源代码]

创建一个enrollments表,使用复合主键:

CREATE TABLE enrollments (
    student_id INT,
    course_id INT,
    enrollment_date DATE,
    PRIMARY KEY (student_id, course_id)
);

实际应用场景[编辑 | 编辑源代码]

案例:电商数据库设计[编辑 | 编辑源代码]

假设我们需要为电商平台设计一个简单的数据库,包含customersproductsorders表:

-- 创建customers表
CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE,
    registration_date DATE DEFAULT CURRENT_DATE
);

-- 创建products表
CREATE TABLE products (
    product_id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price DECIMAL(10, 2) CHECK (price > 0),
    stock_quantity INT DEFAULT 0
);

-- 创建orders表
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

表关系图[编辑 | 编辑源代码]

使用Mermaid绘制表之间的关系:

erDiagram customers ||--o{ orders : "places" orders ||--|{ order_items : "contains" products ||--o{ order_items : "included in"

注意事项[编辑 | 编辑源代码]

1. 命名规范:表名和列名应具有描述性,避免使用SQL关键字。 2. 数据类型选择:根据实际需求选择合适的数据类型,例如VARCHAR适用于变长字符串,而CHAR适用于定长字符串。 3. 约束使用:合理使用约束以确保数据完整性,但避免过度约束导致性能下降。 4. 性能优化:对于大型表,考虑使用索引提高查询效率。

总结[编辑 | 编辑源代码]

CREATE TABLE是SQL中定义表结构的基础命令。通过合理设计表、选择数据类型和添加约束,可以构建高效、可靠的数据库。本文提供了从基础到高级的示例,帮助初学者和高级用户掌握表的创建方法。