SQL语句用于创建表(Create Table)是数据库操作中的基础之一。创建表时,你需要指定表名、列名、数据类型以及可能的其他约束(如主键、外键、唯一约束、非空约束等)。下面是一些创建表的SQL语句示例,涵盖了不同的场景和数据类型。
示例 1: 简单的用户表
CREATE TABLE Users (
UserID INT PRIMARY KEY,
Username VARCHAR(50) NOT NULL,
Email VARCHAR(100) UNIQUE,
Password VARCHAR(255) NOT NULL,
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP
);
这个示例创建了一个Users
表,包含用户ID(主键)、用户名(非空)、电子邮件(唯一且非空)、密码(非空)以及创建时间(默认值为当前时间戳)。
示例 2: 包含外键的订单表
假设我们还有一个Products
表,我们需要创建一个Orders
表来存储订单信息,并包含与Products
表相关联的外键。
首先,Products
表的定义可能如下:
CREATE TABLE Products (
ProductID INT PRIMARY KEY,
ProductName VARCHAR(100),
Price DECIMAL(10, 2)
);
Orders
表的定义可能如下:
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
ProductID INT,
OrderDate DATE,
Quantity INT,
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);
在这个示例中,Orders
表有一个ProductID
列,它是Products
表的外键。这意味着每个订单都必须与一个存在的产品相关联。
示例 3: 带有自增主键的表
在很多情况下,我们希望数据库自动为每条新记录分配一个唯一的ID。这可以通过将主键列设置为自增(AUTO_INCREMENT)来实现(注意:AUTO_INCREMENT
是MySQL的特定语法,其他数据库系统可能有不同的实现方式)。
sql复制代码
CREATE TABLE Articles ( | |
ArticleID INT AUTO_INCREMENT PRIMARY KEY, | |
Title VARCHAR(255) NOT NULL, | |
Content TEXT, | |
Published BOOLEAN DEFAULT FALSE | |
); |
在这个示例中,ArticleID
列是自动递增的主键,每当插入新记录时,MySQL都会自动为其分配一个唯一的整数值。
示例 4: 包含枚举和集合的表
在某些情况下,你可能希望某列只能包含预定义的值集合。这可以通过枚举(ENUM)类型或集合(SET)类型来实现。
CREATE TABLE Surveys (
SurveyID INT AUTO_INCREMENT PRIMARY KEY,
Question VARCHAR(255),
Answer ENUM('Yes', 'No', 'Maybe')
);
CREATE TABLE Profiles (
ProfileID INT AUTO_INCREMENT PRIMARY KEY,
Hobbies SET('Reading', 'Swimming', 'Hiking', 'Gaming')
);
在这个示例中,Surveys
表的Answer
列只能包含'Yes'、'No'或'Maybe'中的一个值,而Profiles
表的Hobbies
列可以包含'Reading'、'Swimming'、'Hiking'和'Gaming'中的零个或多个值(以逗号分隔)。