SQL Server 数据库:创建、修改、删除和还原

⚡ 智能摘要

SQL Server 数据库是用于保存表、视图、存储过程和其他对象的容器。创建、修改、删除操作均可执行。ping恢复数据库可以通过 SQL Server Management Studio 或 Transact-SQL 语句完成。

  • 🗄️ 数据库: SQL Server 数据库将表、视图、过程和函数存储在一个组织有序、相互关联的容器中。
  • 🧩 系统与用户: 系统数据库(master、msdb、model、tempdb、resource)自动安装;用户数据库由您创建。
  • 🖱️ 创建: 通过对象资源管理器“新建数据库”对话框或使用 CREATE DATABASE 语句添加数据库。
  • ✏️ 年龄: 使用 ALTER DATABASE 或重命名菜单重命名数据库或更改其文件和选项。
  • 🗑️ 降: 使用 DROP DATABASE 或删除选项删除用户数据库;系统数据库无法删除。
  • 💾 恢复: 使用 RESTORE DATABASE 命令从 .bak 备份文件重建数据库。

SQL Server 数据库的创建、修改、删除和还原

什么是数据库?

数据库是诸如以下对象的集合: 视图、存储过程、触发器和函数。 SQL服务器数据库是存储和链接所有这些相关对象的有序场所。

请看以下几个现实生活中的例子:

  • 书架是用来放置书籍的。
  • 家是我们居住的地方。
  • 停车场是停放车辆的地方,这样的例子不胜枚举。

类似地,数据库就像是所有表、视图和存储过程的“家”。从技术上讲,数据库以井然有序的方式存储数据,以便于访问和检索。在 SQL Server 中,有两种类型的数据库:

  • 系统数据库: 这些数据库在安装 SQL Server 时会自动创建。它们在服务器中扮演着至关重要的角色,尤其是在确保数据库对象正确运行方面。SQL Server 系统数据库的示例包括 master、msdb、model、tempdb 和 resource。
  • 用户数据库: 这些数据库是由像您这样的数据库用户创建的,这些用户已被授予创建数据库的权限。

创建数据库的规则

首先,您需要了解创建新数据库的基本规则:

  • 数据库名称在 SQL Server 实例内必须是唯一的。
  • 数据库名称最多可包含 128 个字符。
  • CREATE DATABASE 语句必须以自动提交模式运行。

下图概述了在 SQL Server 中创建数据库的两种可用方法。

创建 SQL Server 数据库的两种方法:Management Studio 和 Transact-SQL

在 SQL Server 中创建数据库有两种方法:

如何在 SQL Server Management Studio 中创建数据库

以下是使用 SQL Server Management Studio 创建数据库的详细步骤:

步骤1) 在“对象资源管理器”窗口中右键单击“数据库”,然后选择“新建数据库”。

下面显示的是带有“新建数据库”选项的右键菜单。

在对象资源管理器中,右键单击“数据库”节点,并选择“新建数据库”。

步骤2) 此时将显示“新建数据库”屏幕。输入“数据库名称”。“逻辑名称”列将自动填充以下内容:

  • 教育 – 文件类型:行数据和文件组:主文件
  • Edu_log – 文件类型:LOG,文件组:'不适用'

下面显示的是“新建数据库”对话框,其中包含数据库名称及其逻辑文件。

新建数据库对话框,显示 Edu 数据库名称以及 Edu 和 Edu_log 逻辑文件

这里:

  • A) Edu(文件类型:行数据,文件组:PRIMARY)是 .mdf 数据文件。
  • B) Edu_log(文件类型:LOG,文件组:'不适用')是 .ldf 日志文件。

步骤3) (可选)如需更复杂的设置,您可以导航至“选项”和“文件组”页面。对于初学者而言,从“常规”选项卡创建数据库就足够了。

下面显示的是“选项”和“文件组”页面。

新增数据库选项和文件组页面,用于高级设置

步骤4) 点击“添加”(确定按钮)创建数据库。

下方高亮显示的是确认创建的按钮。

在“新建数据库”对话框中点击“确定”按钮,即可创建 Edu 数据库。

结果: “Edu”数据库已创建。您可以扩展“Edu”数据库,其中包含表、视图等。在您创建新表、视图等之前,这些内容最初都是空白的。

对象资源管理器显示了新创建的 Edu 数据库及其空白文件夹。

查看源查询: 您可以查看新创建的“Edu”数据库的源查询。操作步骤如下:右键单击数据库名称 > 脚本数据库为 > 创建到 > 新建查询编辑器窗口。

将脚本数据库创建为新查询编辑器窗口上下文菜单

查询窗口: 生成的 CREATE 脚本将在一个新的查询窗口中打开,如下所示。

查询编辑器窗口显示为 Edu 自动生成的 CREATE DATABASE 脚本。

创建脚本:

USE [master]
GO

CREATE DATABASE [Edu]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'Edu', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQL_MS\MSSQL\DATA\Edu.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
 LOG ON 
( NAME = N'Edu_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQL_MS\MSSQL\DATA\Edu_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )

使用 T-SQL 创建数据库

另一种方法是编写 T-SQL 查询来创建数据库,然后执行它。让我们来看一个最简单的数据库创建 T-SQL 查询。

语法:

CREATE DATABASE <Database_name>

查询:

CREATE DATABASE [Edu_TSQL_file]

点击“执行”按钮运行查询,如下所示。

SSMS 工具栏中的“执行”按钮用于运行 CREATE DATABASE 查询。

结果: 您可以在 SQL 对象资源管理器中看到创建的 Edu_TSQL_file 文件。

对象资源管理器列出了使用 Transact-SQL 创建的 Edu_TSQL_file 数据库。

现在我们来看看如何创建包含明确指定的 .mdf 和 .ldf 文件的数据库。在这里,您可以将文件位置作为查询语句的显式部分指定。

语法:

CREATE DATABASE database_name   
[ CONTAINMENT = { NONE | PARTIAL } ]  
[ ON   
      [ PRIMARY ] <filespec> [ ,...n ]   
      [ , <filegroup> [ ,...n ] ]   
      [ LOG ON <filespec> [ ,...n ] ]   
];

查询:

CREATE DATABASE [Edu_TSQL_file]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'Edu_TSQL_file', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQL_MS\MSSQL\DATA\Edu_TSQL_file.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
 LOG ON 
( NAME = N'Edu_TSQL_file_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQL_MS\MSSQL\DATA\Edu_TSQL_file_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )

如下所示,使用其显式数据和日志文件创建的数据库将显示在对象资源管理器中。

对象资源管理器显示了使用显式 .mdf 和 .ldf 文件创建的 Edu_TSQL_file 数据库

如何修改数据库

与 CREATE DATABASE 查询类似,您也可以修改数据库。您可以重命名数据库、更改文件位置或设置等等。

修改数据库的基本规则:

  • ALTER DATABASE 语句必须以自动提交模式运行。
  • 在显式或隐式事务中不允许执行 ALTER DATABASE。

在 SQL Server 中,有两种方法可以修改数据库:

  • SQL Server Management Studio中
  • 事务处理SQL

如何在 SQL Server Management Studio 中更改数据库

以下是在 SQL Server Management Studio 中修改数据库的步骤。我们来尝试修改预先创建的数据库“Edu”的名称。预先创建的 Edu 数据库如下图所示(位于对象资源管理器中)。

在对象资源管理器数据库列表中选择了预先创建的 Edu 数据库

步骤1) 重命名数据库。右键单击数据库名称,然后单击“重命名”。

在 Edu 数据库上单击右键,选择“重命名”选项,即可打开上下文菜单。

步骤2) 数据库名称将变为可编辑状态。输入新名称并按回车键。

可编辑的教育数据库名称字段,已准备好添加新名称

结果: 数据库名称已从“Edu”更改为“Edu_Alter”。

对象资源管理器显示数据库名称已从 Edu 重命名为 Edu_Alter

使用 Transact-SQL 更改数据库

现在让我们使用 T-SQL 修改数据库。

语法:

ALTER DATABASE <Databse_name>              
MODIFY NAME = <New Name>

查询:

ALTER DATABASE Edu_TSQL
MODIFY NAME = Edu_TSQL_Alter;

单击“执行”运行上述查询。

结果: 数据库名称已从“Edu_TSQL”更改为“Edu_TSQL_Alter”,如下所示。

对象资源管理器显示,在执行 ALTER DATABASE 操作后,数据库已重命名为 Edu_TSQL_Alter。

一般语法: 完整的 ALTER DATABASE 语法支持许多选项,包括重命名、排序规则、文件选项和兼容级别。

ALTER DATABASE { database_name  | CURRENT }  
{   MODIFY NAME = new_database_name   
  | COLLATE collation_name  
  | <file_and_filegroup_options>  
  | SET <option_spec> [ ,...n ] [ WITH <termination> ] 
  | SET COMPATIBILITY_LEVEL = { 140 | 130 | 120 | 110 | 100 | 90 }   
} ;

注意: 以上显示的兼容级别反映的是较早的版本。当前版本新增了 150(SQL Server 2019)、160(SQL Server 2022)和 170(SQL Server 2025)版本,同时仍然支持之前的几个版本。

更改 .mdf/.ldf 文件名

查询:

Alter DATABASE Edu_TSQL_Alter;
MODIFY FILE ( NAME = Edu_TSQL, NEWNAME = Edu_TSQL_newName );

重命名后的逻辑文件会反映在数据库属性中,如下所示。

数据库属性确认已重命名逻辑文件 Edu_TSQL_newName

更改 .mdf/.ldf 文件位置

查询:

Alter DATABASE Edu_TSQL_Alter;
MODIFY FILE ( NAME = Edu_TSQL_NewName, FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQL_MS\MSSQL\DATA\New_File\Edu_TSQL_log.ldf' );

数据库的更新文件路径如下所示。

数据库文件页面显示新的 .ldf 日志文件位置

删除数据库

在 SQL Server 中删除(drop)数据库有两种方法:

  • SQL Server Management Studio中
  • 事务处理SQL

如何在 SQL Server Management Studio 中删除数据库

以下是在 SQL Server Management Studio 中删除数据库的步骤。让我们尝试删除预先创建的数据库“Edu_Alter”。

步骤1) 右键单击数据库,单击“删除”,然后单击“确定”。

删除对象对话框(用于拖放操作)ping SSMS 中的 Edu_Alter 数据库

结果: “Edu_Alter”已从“对象资源管理器”数据库列表中删除。

删除 Edu_Alter 数据库后的对象资源管理器数据库列表

使用 Transact-SQL 删除数据库

让我们尝试删除预先创建的数据库“Edu_TSQL_Alter”。

语法:

DROP DATABASE <Databse_name>

查询:

USE master;  
GO  
DROP DATABASE Edu_TSQL_Alter;  
GO

单击“执行”运行上述查询。

结果: 如下所示,“Edu_TSQL_Alter”已从“对象资源管理器”数据库列表中删除。

使用 T-SQL 删除 Edu_TSQL_Alter 数据库后,对象资源管理器数据库列表如下:

在 SQL Server 中恢复数据库

您可以通过还原之前备份的数据库来创建数据库。这可以通过运行 RESTORE DATABASE 命令来完成,该命令的语法如下:

restore Database <database name> from disk = '<Backup file location + filename>

查询语句应在查询窗口中执行,就像之前的命令一样。例如:

restore database Edu from disk = 'C:\Backup\Edu_full_backup.bak'

您也可以使用 GUI 导航:右键单击数据库 > 恢复数据库 > 设备 > 导入备份文件 > 单击确定。

常见问题

创建数据库需要主数据库中的 CREATE DATABASE、CREATE ANY DATABASE 或 ALTER ANY DATABASE 权限。需要 sysadmin 或 dbcreator 服务器角色成员,或具有相应权限的用户才能执行此操作。 登录可以运行该语句。

单个 SQL Server 实例最多可容纳 32,767 个数据库。这个数字是架构上的硬性限制;实际上,考虑到内存、存储和管理开销,为了获得良好的性能,建议使用远小于此数量的数据库。

不。系统数据库(例如 master、model、msdb、tempdb 和 resource)是引擎必需的,无法删除。只有您创建的用户数据库才能使用 DROP DATABASE 命令或 Delete 选项删除。

SIZE 设置文件初始大小,MAXSIZE 设置文件最大可扩展大小,FILEGROWTH 设置文件每次扩展时增加的空间大小。这些参数同时适用于数据文件和日志文件。

COMPATIBILITY_LEVEL 控制数据库使用的查询处理行为。当前值包括 140(SQL Server 2017)、150(2019)、160(2022)和 170(2025)。ALTER DATABASE SET COMPATIBILITY_LEVEL 命令可以在不将数据库迁移到新服务器的情况下更改此值。

DROP DATABASE 命令会永久删除数据库及其 .mdf 和 .ldf 文件。关闭数据库LINE 只会停止访问,但会将文件保留在磁盘上,因此您可以稍后无需恢复即可将其重新联机。

是的。 GitHub 副驾驶 可以在 SSMS 或编辑器中,通过自然语言提示编写 CREATE DATABASE、ALTER DATABASE 和 DROP DATABASE 语句。在实际服务器上运行这些语句之前,务必检查生成的文件路径、大小和选项。

人工智能和机器学习通过推荐文件大小和增长设置、预测容量、发现配置偏差以及标记有风险的 DROP 或 ALTER 操作来辅助数据库配置。它们为数据库管理员提供支持,而不是取代细致的审核。

总结一下这篇文章: