Skip to content

SQL CREATE TABLE

SQL CREATE TABLE 语句用于创建新的数据库表。

语法

sql
CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    column3 datatype constraint,
    ...
    constraint_name constraint_type (column_list)
);

常用数据类型

  • INT:整数类型
  • VARCHAR(n):可变长度字符串,最大长度为 n
  • CHAR(n):固定长度字符串,长度为 n
  • DATE:日期类型
  • DATETIME:日期和时间类型
  • BOOLEAN:布尔类型
  • DECIMAL(p,s):小数类型,p 是总位数,s 是小数位数

常用约束

  • PRIMARY KEY:主键约束,唯一标识表中的每条记录
  • FOREIGN KEY:外键约束,用于建立表之间的关系
  • UNIQUE:唯一约束,确保列的值唯一
  • NOT NULL:非空约束,确保列不能为 NULL
  • CHECK:检查约束,用于限制列的值的范围
  • DEFAULT:默认约束,为列设置默认值

示例

示例 1:创建一个简单的学生表

sql
CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL,
    grade VARCHAR(20) NOT NULL,
    gender VARCHAR(10)
);

执行结果:创建一个名为 students 的表,包含 id、name、age、grade 和 gender 列。

示例 2:创建带有外键约束的表

sql
-- 创建学生表
CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL,
    grade VARCHAR(20) NOT NULL
);

-- 创建成绩表,带有外键约束
CREATE TABLE scores (
    id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT NOT NULL,
    subject VARCHAR(50) NOT NULL,
    score DECIMAL(5,2) NOT NULL,
    FOREIGN KEY (student_id) REFERENCES students(id)
);

执行结果:创建一个名为 scores 的表,其中 student_id 列是外键,引用 students 表的 id 列。

示例 3:创建带有检查约束的表

sql
CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL CHECK (age >= 0 AND age <= 100),
    grade VARCHAR(20) NOT NULL,
    gender VARCHAR(10) CHECK (gender IN ('男', '女', '未知'))
);

执行结果:创建一个名为 students 的表,其中 age 列的值必须在 0 到 100 之间,gender 列的值必须是 '男'、'女' 或 '未知'。

示例 4:创建带有默认值的表

sql
CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL DEFAULT 18,
    grade VARCHAR(20) NOT NULL DEFAULT '高一',
    gender VARCHAR(10) DEFAULT '未知'
);

执行结果:创建一个名为 students 的表,其中 age 列的默认值为 18,grade 列的默认值为 '高一',gender 列的默认值为 '未知'。

不同数据库系统的语法差异

MySQL

sql
CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

SQL Server

sql
CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    ...
);

PostgreSQL

sql
CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    ...
);

注意事项

  1. 表名:表名必须唯一,不能与数据库中现有的表名重复。

  2. 列名:列名在表中必须唯一。

  3. 数据类型:为每个列选择合适的数据类型,以确保数据的完整性和有效性。

  4. 约束:根据业务需求,为列添加适当的约束,以确保数据的完整性和一致性。

  5. 性能考虑:对于大型表,应该考虑添加索引,以提高查询性能。

小结

SQL CREATE TABLE 语句是创建新数据库表的基本语句,通过指定表名、列名、数据类型和约束,可以创建一个符合业务需求的表结构。不同的数据库系统可能有不同的语法和选项,需要根据实际使用的数据库系统选择正确的语法。