SQL 建表语句详解

📅 发布时间:2026/7/17 12:04:38 👁️ 浏览次数:
SQL 建表语句详解
SQL 建表语句详解在 SQL 中创建表Table是数据库设计的基础。表是存储数据的基本单位每个表由行和列组成。创建表的过程涉及到定义表的结构包括列名、数据类型、约束等。本文将详细介绍 SQL 中的建表语句并通过示例帮助读者更好地理解。1. 基本语法创建表的基本语法如下CREATE TABLE table_name ( column1 datatype constraint, column2 datatype constraint, column3 datatype constraint, ... );table_name表的名称。column1, column2, column3列的名称。datatype列的数据类型。constraint列的约束条件。2. 数据类型SQL 支持多种数据类型常见的有整数类型INT,BIGINT,SMALLINT,TINYINT浮点数类型FLOAT,DOUBLE,DECIMAL(p, s)字符串类型CHAR(n),VARCHAR(n),TEXT日期和时间类型DATE,TIME,DATETIME,TIMESTAMP布尔类型BOOLEAN3. 约束约束用于保证数据的完整性和一致性常见的约束有主键约束PRIMARY KEY唯一标识表中的每一行。唯一约束UNIQUE确保列中的所有值都是唯一的。非空约束NOT NULL确保列中的值不能为空。默认值约束DEFAULT为列提供默认值。外键约束FOREIGN KEY确保一个表中的数据与另一个表中的数据一致。检查约束CHECK确保列中的值满足特定条件。4. 示例下面通过一个具体的示例来演示如何创建一个表。假设我们要创建一个名为students的表用于存储学生的信息包括学号、姓名、性别、出生日期和班级。CREATE TABLE students ( student_id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, gender CHAR(1) CHECK (gender IN (M, F)), birth_date DATE, class_id INT, FOREIGN KEY (class_id) REFERENCES classes(class_id) );在这个示例中student_id是主键唯一标识每个学生。name是学生的姓名不能为空。gender是学生的性别只能是 ‘M’ 或 ‘F’。birth_date是学生的出生日期。class_id是学生所在的班级是一个外键引用classes表中的class_id。5. 创建带有默认值的表有时候我们需要为某些列设置默认值例如学生的入学日期。CREATE TABLE students ( student_id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, gender CHAR(1) CHECK (gender IN (M, F)), birth_date DATE, class_id INT, enrollment_date DATE DEFAULT CURRENT_DATE, FOREIGN KEY (class_id) REFERENCES classes(class_id) );在这个示例中enrollment_date列的默认值是当前日期。6. 创建带有复合主键的表有时候我们需要使用多个列作为主键例如订单表中的订单号和产品号。CREATE TABLE order_details ( order_id INT, product_id INT, quantity INT, PRIMARY KEY (order_id, product_id), FOREIGN KEY (order_id) REFERENCES orders(order_id), FOREIGN KEY (product_id) REFERENCES products(product_id) );在这个示例中order_id和product_id共同组成主键。7. 创建带有检查约束的表检查约束用于确保列中的值满足特定条件例如学生的年龄必须在 18 到 30 岁之间。CREATE TABLE students ( student_id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, gender CHAR(1) CHECK (gender IN (M, F)), birth_date DATE, class_id INT, enrollment_date DATE DEFAULT CURRENT_DATE, age INT CHECK (age 18 AND age 30), FOREIGN KEY (class_id) REFERENCES classes(class_id) );在这个示例中age列的值必须在 18 到 30 岁之间。8. 创建带有唯一约束的表唯一约束用于确保列中的所有值都是唯一的例如学生的邮箱地址。CREATE TABLE students ( student_id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, gender CHAR(1) CHECK (gender IN (M, F)), birth_date DATE, class_id INT, enrollment_date DATE DEFAULT CURRENT_DATE, email VARCHAR(100) UNIQUE, FOREIGN KEY (class_id) REFERENCES classes(class_id) );在这个示例中email列的值必须是唯一的。9. 创建带有自增列的表自增列用于自动生成唯一的标识符例如学生的学号。CREATE TABLE students ( student_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, gender CHAR(1) CHECK (gender IN (M, F)), birth_date DATE, class_id INT, enrollment_date DATE DEFAULT CURRENT_DATE, FOREIGN KEY (class_id) REFERENCES classes(class_id) );在这个示例中student_id列是自增列每次插入新记录时会自动生成一个唯一的学号。10. 创建带有注释的表注释用于为表和列提供说明便于理解和维护。CREATE TABLE students ( student_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 学生的唯一标识, name VARCHAR(50) NOT NULL COMMENT 学生的姓名, gender CHAR(1) CHECK (gender IN (M, F)) COMMENT 学生的性别, birth_date DATE COMMENT 学生的出生日期, class_id INT COMMENT 学生所在的班级, enrollment_date DATE DEFAULT CURRENT_DATE COMMENT 学生的入学日期, FOREIGN KEY (class_id) REFERENCES classes(class_id) ) COMMENT学生信息表;在这个示例中为表和列添加了注释便于理解其含义。总结通过本文的讲解我们详细介绍了 SQL 中的建表语句包括基本语法、数据类型、约束、示例等内容。希望读者能够通过这些内容更好地理解和掌握 SQL 建表语句的使用方法。在实际应用中根据具体需求选择合适的数据类型和约束可以有效地保证数据的完整性和一致性。