目录SQL 建表语句详解
1. 基本语法
2. 数据类型
3. 约束
4. 示例
5. 创建带有默认值的表
6. 创建带有复合主键的表
7. 创建带有检查约束的表
8. 创建带有唯一约束的表
9. 创建带有自增列的表
10. 创建带有注释的表
总结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布尔类型:BOOLEAN
3. 约束
约束用于保证数据的完整性和一致性,常见的约束有:主键约束: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 建表语句的使用方法。
在实际应用中,根据具体需求选择合适的数据类型和约束,可以有效地保证数据的完整性和一致性。
您可能感兴趣的文章:MySQL建表语句基础及示例详解如何在navicat中利用sql语句建表+添加数据使用SQL语句创建数据库与创建表操作指南Java实现一键获取Mysql所有表字段设计和建表语句的工具类MySQL如何查看建库建表语句
