使用T-SQL语句创建数据库和表
在数据库管理中,T-SQL(Transact-SQL)是SQL Server的核心语言,用于管理关系型数据库,通过T-SQL,用户可以高效地创建数据库、定义表结构、设置约束以及管理数据,本文将详细介绍如何使用T-SQL语句创建数据库和表,涵盖基本语法、参数说明及实用示例。

创建数据库的基本语法
创建数据库是数据管理的第一步,T-SQL中使用CREATE DATABASE语句来完成这一操作,基本语法如下:
CREATE DATABASE database_name
[
ON
[
<filespec> [, ...n ]
[ , <filegroup> [, ...n ] ]
]
[ LOG ON { <filespec> [, ...n ] } ]
]
[;]
database_name是数据库名称,需符合SQL Server的命名规则。ON子句用于定义数据文件和文件组,而LOG ON子句用于定义日志文件,如果不指定文件细节,SQL Server会使用默认值自动创建文件。
定义数据文件和文件组
数据文件是存储实际数据的物理文件,通常以.mdf为扩展名,文件组是数据文件的逻辑集合,便于管理和分配数据,以下是一个示例,创建一个名为SalesDB的数据库,并指定数据文件和日志文件的初始大小、增长方式及路径:
CREATE DATABASE SalesDB
ON PRIMARY
(
NAME = 'SalesDB_Data',
FILENAME = 'C:\Data\SalesDB_Data.mdf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 10%
)
LOG ON
(
NAME = 'SalesDB_Log',
FILENAME = 'C:\Data\SalesDB_Log.ldf',
SIZE = 2MB,
MAXSIZE = 50MB,
FILEGROWTH = 1MB
);
此示例中,PRIMARY指定主数据文件,SIZE定义初始大小,MAXSIZE限制最大容量,FILEGROWTH设置自动增长比例或固定值。
创建表的基本语法
表是数据库中存储数据的基本结构,使用CREATE TABLE语句创建表时,需定义列名、数据类型、约束等信息,基本语法如下:

CREATE TABLE table_name
(
column1 data_type [ CONSTRAINT constraint1 ],
column2 data_type [ CONSTRAINT constraint2 ],
...
[ CONSTRAINT constraint_name ]
);
column_name是列名,data_type指定列的数据类型(如INT、VARCHAR、DATETIME等),CONSTRAINT用于定义主键、外键、唯一约束等。
定义列和数据类型
列的数据类型决定了存储的数据格式和范围,常见的数据类型包括:
- 数值类型:
INT(整数)、DECIMAL(精确小数)、FLOAT(浮点数)。 - 字符串类型:
CHAR(固定长度)、VARCHAR(可变长度)、TEXT(大文本)。 - 日期时间类型:
DATE(日期)、DATETIME(日期和时间)。 - 其他类型:
BIT(布尔值)、UNIQUEIDENTIFIER(唯一标识符)。
创建一个Customers表,包含客户ID、姓名、邮箱和注册日期:
CREATE TABLE Customers
(
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(100) NOT NULL,
Email VARCHAR(255) UNIQUE,
RegistrationDate DATETIME DEFAULT GETDATE()
);
添加约束
约束用于保证数据的完整性和一致性,常见约束包括:
- 主键(PRIMARY KEY):唯一标识表中的每一行。
- 外键(FOREIGN KEY):确保表间引用完整性。
- 唯一约束(UNIQUE):防止列中出现重复值。
- 检查约束(CHECK):限制列的取值范围。
- 非空约束(NOT NULL):强制列必须包含值。
创建一个Orders表,并添加外键约束关联Customers表:

CREATE TABLE Orders
(
OrderID INT PRIMARY KEY,
OrderDate DATETIME NOT NULL,
CustomerID INT,
Amount DECIMAL(10, 2),
CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID)
REFERENCES Customers(CustomerID)
);
使用默认值和计算列
默认值用于在插入数据时自动填充指定值,而计算列则基于其他列的值动态生成。
CREATE TABLE Products
(
ProductID INT PRIMARY KEY,
ProductName VARCHAR(100),
Price DECIMAL(10, 2),
DiscountPercentage DECIMAL(5, 2) DEFAULT 0,
FinalPrice AS (Price * (1 - DiscountPercentage / 100))
);
删除数据库和表
如果不再需要数据库或表,可使用DROP语句删除,需注意,删除操作不可逆,且会丢失所有数据:
DROP DATABASE SalesDB; DROP TABLE Customers;
相关问答FAQs
如何修改已创建的表结构?
使用ALTER TABLE语句可以修改表结构,例如添加列、删除列或修改列定义,示例:
ALTER TABLE Customers ADD Phone VARCHAR(20); ALTER TABLE Customers DROP COLUMN Email; ALTER TABLE Customers ALTER COLUMN CustomerName VARCHAR(150);
如何查看数据库和表的定义信息?
使用系统存储过程或查询视图可以获取对象定义信息。
- 查看数据库定义:
EXEC sp_helpdb 'SalesDB'; - 查看表定义:
EXEC sp_help 'Customers'; - 查看列信息:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Customers';