在 SQL Server 中创建数据库

数据库是我们可以存储业务数据的位置。数据库使用表以规范化的方式存储我们的信息。因此,通过在 SQL Server 中创建数据库,我们可以轻松地选择、更新和删除业务数据。

在 SQL Server 中创建数据库的查询语法如下所示。

CREATE DATABASE DName

让我们通过每个示例来看看如何在 SQL Server 中创建数据库、重命名和删除数据库。在我们开始创建新数据库之前,让我们看看服务器中可用的数据库列表。当前实例中可用的数据库列表是。

View available DBs inside a Object Explorer 1

如何在 SQL Server 中创建数据库示例

在此示例中,我们创建一个名为 New_Database 的新数据库。因此,在 服务器 查询窗口中将 DName 替换为 New_Database。

  • 关于附加分离数据库的文章,以将 MDF 和 LDF 文件从一台计算机复制到另一台计算机。
CREATE DATABASE New_Database;

单击“执行”按钮以执行命令。

命令已成功执行,您可以在我们的对象资源管理器中看到 New_Database。如果您在 SQL Server 对象资源管理器中没有找到新创建的数据库,请单击刷新按钮。

How to Create Database in SQL Server 3

让我们看看当我们再次执行相同的创建数据库命令时会发生什么。它抛出错误,提示:New_database 已存在。请选择不同的名称。

DB Already Exists Error Message 4

如何检查数据库名称是否存在?

在组织中,我们可能拥有也可能不拥有了解可用数据库的权限。因此,始终建议检查名称是否已存在。这可以通过两种方式完成

以下 SQL Server 语句仅在系统中没有 New_database 时才执行创建数据库语句。

IF NOT EXISTS 
   (
     SELECT name FROM master.dbo.sysdatabases 
     WHERE name = N'New_Database'
    )
CREATE DATABASE [New_Database]

我们只是将 If Not Exists 替换为 If Exists 并添加了一个 select 语句来显示消息。以下语句涉及的步骤是

  • Select 语句将在系统中检查数据库名称 New_database。
  • 如果 New_database 已存在,则以下查询将显示一条消息,提示数据库已存在。
  • 如果数据库不存在,则只执行以下 else 块代码。这意味着 SQL Server 创建数据库命令仅在系统数据库中没有 New_database 时才执行
IF EXISTS 
   (
     SELECT name FROM master.dbo.sysdatabases 
    WHERE name = N'New_Database'
    )
BEGIN
    SELECT 'Database Name already Exist' AS Message
END
ELSE
BEGIN
    CREATE DATABASE [New_Database]
    SELECT 'New DB is Stored'
END
How to Create Database in SQL Server 5

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

要创建新数据库,首先,打开 Management Studio。右键单击下面显示的文件夹,然后从上下文菜单中选择“新建...”选项。

How to Create Database in SQL Server 8

选择选项后,将打开以下窗口。这里我们保留所有者为默认值,数据库名称为 New_database,如下所示。单击“确定”创建新数据库。

Click Ok button 9

让我们看看当我们使用现有名称创建数据库时会发生什么。正如您所观察到的,它正在抛出错误

DB Name Already Exists Error 1801

如何在 SQL Server 中删除数据库?

要删除数据库,我们可以简单地使用以下语法,Drop 的语法是

DROP DATABASE [DName]

在此示例中,我们将删除 New_Database。因此,您必须将 [DName] 替换为所需的名称。因此,在查询窗口中,请编写以下 Drop Database 查询。

让我们看看当我们再次执行相同的 Drop 命令时会发生什么

Delete or Drop 6

上面的屏幕截图显示它正在抛出错误,提示:它不存在。更好的方法是检查名称是否存在。因为有时,您的同事或团队负责人可能会删除您尝试删除的数据库。

IF EXISTS 
   (
     SELECT name FROM master.dbo.sysdatabases 
     WHERE name = N'New_Database'
    )
DROP DATABASE [New_Database]
Messages
-------
Command(s) completed successfully.

If exists 块中的 select 语句将检查数据库名称 New_database 是否在系统中。如果为 True(数据库存在),则只执行下一个 DROP 语句。否则,它将跳过并且不执行删除。

如何在 SQL Server 中重命名数据库?

要重命名数据库,我们可以简单地使用系统存储过程 sp_renamed,语法是

SP_RENAMEDB [Old Name],[New Name]

在此示例中,我们将 New_Dt 重命名为 New_Db。因此,在查询窗口中,请编写以下查询。

SP_RENAMEDB  [New_Dt],[New_Db]
Messages
-------
The name 'New_Db' has been set.

重命名数据库以及文件

本节向您展示如何重命名数据库以及文件(MDF 和 LDF)。为此重命名数据库演示,我们创建了一个数据库 OldNameDB。

DB in Object Explorer 1

以下查询将向您显示逻辑文件名和数据库的物理位置。

USE master
GO

SELECT name, physical_name, type_desc, state_desc, size 
FROM sys.master_files
WHERE database_id = DB_ID(N'NewNameDB')
GO
SQL Server Rename Database along with Files 2

使用查询重命名数据库

通常,我们使用 sp_renamedb 存储过程来重命名数据库。但是,这只会更改此处显示的名称。

EXEC sp_renamedb 'NewNameDB', 'OldNameDB'
Messages
--------
The name 'NewNameDB' has been set.

您可以在 SQL Server 对象资源管理器中看到新名称

View the New Name in SSMS Object Explorer 4

让我执行以下 数据库 查询

USE master
GO

SELECT name, physical_name, type_desc, state_desc, size 
FROM sys.master_files
WHERE database_id = DB_ID(N'NewNameDB')
GO

从输出中可以看出,sp_renamedb 没有更改逻辑数据库名称或代表数据库的文件。

SQL Server Rename Database along with Files 5

让我将数据库重命名为 OldNameDB,并按指定方式执行以下操作。

重命名数据库以及文件

在 SQL Server 中重命名数据库以及文件涉及修改 MDF 和 LDF 文件名。它将修改数据库的逻辑名称。

-- Set the db to Single User
ALTER DATABASE OldNameDB 
SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE OldNameDB 
MODIFY FILE (NAME = N'OldNameDB', NEWNAME = N'NewNameDB')
GO

ALTER DATABASE OldNameDB 
MODIFY FILE (NAME = N'OldNameDB_log', NEWNAME = N'NewNameDB_log')
GO
Set the db to Single User 6

它将分离 OldNameDB 数据库。分离数据库后,您可以在物理位置修改文件名。

USE master
GO

EXEC sp_detach_db @dbname = N'OldNameDB'
GO
Messages
--------
Commands completed successfully.

导航到数据库的位置

View MDF and LDF in local hard drive 8

我们重命名了 MDF 和 LDF 名称

Change Names in hard drive 9

它将使用我们之前更改的文件名创建一个名为 NewNameDB 的新数据库。

USE master
GO

CREATE DATABASE NewNameDB ON
(FILENAME = N'C:\Program Files\Microsoft ...\MSSQL14.MSSQLSERVER\MSSQL\DATA\NewNameDB.mdf'),
(FILENAME = N'C:\Program Files\Microsoft .....\MSSQL14.MSSQLSERVER\MSSQL\DATA\NewNameDB_log.ldf') 
FOR ATTACH
GO
Messages
--------
Commands completed successfully.

现在您可以看到具有新名称的数据库

View Changes in SSMS 11

让我看看逻辑文件名和文件

USE master
GO

SELECT name, physical_name, type_desc, state_desc, size 
FROM sys.master_files
WHERE database_id = DB_ID(N'NewNameDB')
GO
SQL Server Rename Database along with Files 12

我想我忘了将数据库设置为多用户。

ALTER DATABASE NewNameDB SET MULTI_USER
GO
Messages
--------
Commands completed successfully.