SQL Create Table
SQL CREATE TABLE 语句
Section titled “SQL CREATE TABLE 语句”SQL CREATE TABLE 语句
Section titled “SQL CREATE TABLE 语句”CREATE TABLE 语句是 SQL 中用于在数据库中定义新表结构的基础。表是组织数据的主要方式,由行(记录)和列(字段)组成。每个表在其模式(schema)内必须有一个唯一的名称。
可以将 CREATE TABLE 看作是在输入任何数据之前绘制电子表格的蓝图。你决定每列叫什么以及它将包含哪种信息。
SQL CREATE TABLE 语法
Section titled “SQL CREATE TABLE 语法”CREATE TABLE table_name ( column_name1 data_type [constraints], column_name2 data_type [constraints], column_name3 data_type [constraints], … [table_constraints] );
让我们分解一下语法:
table_name:你为表选择的名称(例如,Employees,Products)。column_name1,column_name2,…:表中每列的名称(例如,EmployeeID,ProductName,HireDate)。data_type:指定每列可以存储的数据种类。常见的数据类型包括:INT或INTEGER:用于整数(例如,1, 100, -50)。VARCHAR(n):用于最大长度为n的变长字符串(例如,‘John Doe’, ‘Product Description’)。在某些系统如 SQL Server 中,使用NVARCHAR(n)支持 Unicode 字符。CHAR(n):用于固定长度的字符串。如果字符串短于n,通常会用空格填充。TEXT或CLOB:用于非常长的文本字符串(例如,文章,长评论)。DECIMAL(p, s)或NUMERIC(p, s):用于具有固定精度(总共p位数字)和标度(小数点后s位数字)的数字(例如,123.45)。FLOAT或REAL:用于近似数值数据(浮点数)。DATE:用于日期(例如,‘2024-07-15’)。TIMESTAMP或DATETIME:用于日期和时间值(例如,‘2024-07-15 10:30:00’)。BOOLEAN(在某些系统中是BIT):用于布尔值(真/假)。BLOB或BYTEA:用于二进制数据,如图像或文件。constraints(可选):应用于列或表中的数据的规则。常见的列约束包括:NOT NULL:确保列不能有NULL(空)值。UNIQUE:确保列中的所有值都是唯一的。PRIMARY KEY(主键):NOT NULL和UNIQUE的组合。唯一标识表中的每一行。一个表只能有一个主键。FOREIGN KEY(外键):将一个表中的列(或多列)链接到另一个表中的主键,强制执行参照完整性。CHECK:确保列中的所有值满足特定条件。DEFAULT:如果在插入时没有指定值,则为列设置一个默认值。
提示:不同数据库系统(如 PostgreSQL、MySQL、SQL Server、Oracle)之间,具体的数据类型及其名称可能略有差异。请始终查阅你的特定 RDBMS 文档以获取精确细节。如需一般概览,你可以搜索“SQL Data Types Comparison”。
SQL CREATE TABLE 示例
Section titled “SQL CREATE TABLE 示例”让我们创建一个名为 Employees 的表,用于存储公司员工的信息。它将包含 ID、名字、姓氏、电子邮件、入职日期和部门 ID 等列。
CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, -- Uniquely identifies each employee FirstName VARCHAR(100) NOT NULL, -- First name cannot be empty LastName VARCHAR(100) NOT NULL, -- Last name cannot be empty Email VARCHAR(255) UNIQUE, -- Email must be unique for each employee HireDate DATE, -- Date the employee was hired DepartmentID INT, -- ID of the department they belong to Salary DECIMAL(10, 2) CHECK (Salary >= 0) -- Salary must be non-negative);在此示例中:
EmployeeID是一个整数,并且是此表的PRIMARY KEY(主键)。这意味着每个EmployeeID必须是唯一的且不能为空(not null),作为员工的主要标识符。FirstName和LastName是长度可变、最多 100 个字符的字符串,且为NOT NULL,这意味着每个员工都必须提供这两个值。Email是一个长度可变、最多 255 个字符的字符串,且必须是UNIQUE(唯一的)。HireDate存储入职日期。DepartmentID是一个整数。我们以后可能会将其设为FOREIGN KEY(外键),引用一个Departments表。Salary是一个十进制数,可以存储像50000.00这样的值,并且CHECK约束确保它不能为负数。
执行此语句后,会创建一个空的 Employees 表结构。它已准备好使用 INSERT INTO 语句填充数据。
空的 “Employees” 表结构概念上看起来像这样(暂无数据):
EmployeeID | FirstName | LastName | Email | HireDate | DepartmentID | Salary
最佳实践:选择合适的数据类型和定义 PRIMARY KEY(主键)对于数据完整性和性能至关重要。此外,考虑哪些列不应允许 NULL 值。
实际应用:在一个项目的开始阶段,你会使用 CREATE TABLE 来定义数据库模式(schema),例如,根据你的应用程序需求创建 Users、Products、Orders、Comments 等表。