SQL Server 2019数据库的操作
一、 前置准备:SQL Server 2019 安装步骤
1. 安装前期准备
- 下载安装介质:前往 微软官方下载中心 下载 SQL Server 2019,可选择「开发者版(Developer)」(免费用于开发和测试)或「企业版/标准版」(商用需授权)。
- 检查系统要求:支持 Windows 10 1809 及以上、Windows Server 2019 及以上,需 4GB 以上内存(推荐 8GB+)、10GB 以上可用磁盘空间。
- 关闭无关杀毒软件和防火墙(安装完成后可重新开启)。
2. 分步安装操作
- 运行下载的安装程序
setup.exe,进入 SQL Server 安装中心,选择左侧「安装」,点击右侧「全新 SQL Server 独立安装或向现有安装添加功能」。 - 产品密钥步骤:开发者版可直接选择「免费授权的版本」中的「SQL Server Developer」,点击「下一步」。
- 许可条款步骤:勾选「我接受许可条款」,点击「下一步」。
- 微软更新步骤:可选是否启用 Microsoft Update,推荐勾选(便于后续补丁更新),点击「下一步」。
- 安装规则步骤:等待系统检查完成,无错误(黄色警告可忽略,红色错误需修复)后点击「下一步」。
- 功能选择步骤:
- 核心勾选「数据库引擎服务」(必备,用于数据库存储和管理)。
- 可选勾选「SQL Server 管理工具 - 基本」(包含 SSMS 简化版,若需完整版可后续单独安装)。
- 确认安装路径(可修改默认路径,避免C盘空间不足),点击「下一步」。
- 实例配置步骤:选择「默认实例」(便于后续使用,实例名默认为
MSSQLSERVER)或「命名实例」,确认实例根目录,点击「下一步」。 - 服务器配置步骤:
- 「服务账户」:可保持默认系统账户,也可配置专用域账户。
- 「启动类型」:数据库引擎服务推荐设置为「自动」,确保开机自启。
- 点击「下一步」。
- 数据库引擎配置步骤(关键步骤 ):
- 「服务器身份验证模式」:选择「混合模式(SQL Server 身份验证和 Windows 身份验证)」,便于后续多种场景连接。
- 「指定 SQL Server 管理员」:设置 sa 账户密码(需牢记,复杂度符合要求:字母+数字+特殊字符),同时可添加当前 Windows 用户为管理员。
- 「数据目录」:可修改数据库文件、日志文件的默认存储路径,点击「下一步」。
- 后续步骤:保持默认配置,依次点击「下一步」,最后点击「安装」,等待安装完成(耗时约10-30分钟,取决于硬件配置)。
- 安装完成:勾选「安装完成后关闭此向导」,点击「关闭」。
3. 补充:SSMS(SQL Server 管理工作室)安装
- 若安装时未勾选完整 SSMS,前往 微软官方下载 SSMS 下载最新版本。
- 运行 SSMS 安装程序,勾选「我接受许可条款」,点击「安装」,等待完成后重启电脑。
- 启动 SSMS,输入服务器名称(默认实例为「localhost」或「.」),身份验证选择「SQL Server 身份验证」,输入 sa 账户和密码,点击「连接」,即可进入 SQL Server 操作界面。
二、 核心知识点与语法、案例
2.1 数据库组成(基础概念)
SQL Server 2019 数据库由 数据库文件(数据文件) 和 日志文件 组成,所有数据库操作均基于这两类文件存储。
-
数据库文件(Data File)
- 用于存储数据库的实际数据(表、视图、索引等)。
- 分类:主数据文件(
.mdf)、次数据文件(.ndf)。 - 特性:每个数据库必须有且仅有一个主数据文件,次数据文件可选(用于拆分大数据、扩展存储到不同磁盘)。
-
日志文件(Log File)
- 用于存储数据库的所有事务日志(增删改、创建/删除对象等操作记录),用于数据恢复。
- 后缀:
.ldf。 - 特性:每个数据库至少有一个日志文件,可多个(提升日志写入性能),日志文件不存储实际数据,仅记录操作轨迹。
-
系统数据库
SQL Server 安装完成后,默认自带4个核心系统数据库,用于支撑数据库引擎的正常运行,禁止随意修改或删除。
系统数据库 后缀名 核心作用 master .mdf/.ldf 记录 SQL Server 实例的所有系统级信息(实例配置、数据库列表、登录账户等),实例的「总控数据库」。 model .mdf/.ldf 所有新建数据库的「模板数据库」,新建数据库时会复制 model 数据库的结构和配置。 msdb .mdf/.ldf 用于 SQL Server 代理(作业调度、备份/还原任务、警报等)的存储,记录自动化任务信息。 tempdb .mdf/.ldf 临时数据库,存储临时表、临时变量、查询中间结果等,每次 SQL Server 实例重启后会被清空并重建(基于 model 模板)。
2.2 创建数据库
方式1:使用对象资源管理器(图形界面,适合新手)
- 启动 SSMS,连接到 SQL Server 实例,展开左侧「对象资源管理器」中的服务器节点。
- 右键点击「数据库」,选择「新建数据库」。
- 在「新建数据库」窗口中,填写核心配置:
- 「数据库名称」:输入自定义名称(如
StudentDB)。 - 「所有者」:保持默认(
sa)或选择指定用户。 - 「数据文件」:可修改主数据文件的「初始大小」(默认 8MB)、「自动增长」(默认按 64MB 增长,无限制)、「路径」(存储位置)。
- 「日志文件」:可修改日志文件的「初始大小」(默认 8MB)、「自动增长」、「路径」。
- 「数据库名称」:输入自定义名称(如
- 无需额外配置时,直接点击「确定」,即可完成数据库创建(刷新「数据库」节点可看到新建的数据库)。
方式2:使用 Transact-SQL(T-SQL)创建数据库(核心,适合开发/自动化)
核心语法
sql
-- 基础语法(默认配置,仅指定数据库名)
CREATE DATABASE 数据库名称;
-- 完整语法(自定义数据文件、日志文件配置)
CREATE DATABASE 数据库名称
ON PRIMARY -- 主文件组(SQL Server 默认主文件组为 PRIMARY)
(
-- 主数据文件配置(必须指定)
NAME = 数据文件逻辑名称, -- 逻辑名:用于 T-SQL 操作中引用文件
FILENAME = '物理文件路径+文件名.mdf', -- 物理名:磁盘上的实际文件路径和名称
SIZE = 初始大小, -- 如 10MB、1GB,无单位默认按 MB 计算
MAXSIZE = 最大大小, -- 如 500MB、UNLIMITED(无限制)
FILEGROWTH = 自动增长增量 -- 如 10MB、10%(按当前大小的百分比增长)
)
LOG ON -- 日志文件配置
(
-- 日志文件配置(至少一个)
NAME = 日志文件逻辑名称,
FILENAME = '物理文件路径+文件名.ldf',
SIZE = 初始大小,
MAXSIZE = 最大大小,
FILEGROWTH = 自动增长增量
);
案例代码(带详细注释)
案例1:基础创建(默认配置)
sql
-- 案例1:创建名为 StudentDB 的数据库,使用所有默认配置(主数据文件 .mdf、日志文件 .ldf 均按默认大小/增长策略)
-- 默认存储路径:SQL Server 安装目录下的 Data 文件夹
CREATE DATABASE StudentDB;
GO -- GO 是 T-SQL 批处理结束标记,用于分隔多个 T-SQL 语句块
案例2:完整配置创建(自定义文件大小、路径、增长策略)
sql
-- 案例2:创建名为 EmployeeDB 的数据库,自定义数据文件和日志文件的所有配置
CREATE DATABASE EmployeeDB
ON PRIMARY -- 主文件组
(
-- 主数据文件配置
NAME = EmployeeDB_Data, -- 数据文件逻辑名(可自定义,建议与数据库名关联,便于识别)
FILENAME = 'D:\SQL Server Data\EmployeeDB_Data.mdf', -- 物理文件路径(需确保 D 盘存在「SQL Server Data」文件夹,否则会创建失败)
SIZE = 20MB, -- 初始大小 20MB
MAXSIZE = 500MB, -- 最大大小 500MB,达到后不再自动增长
FILEGROWTH = 10MB -- 自动增长增量 10MB,每次空间不足时增加 10MB
)
LOG ON -- 日志文件配置
(
NAME = EmployeeDB_Log, -- 日志文件逻辑名
FILENAME = 'D:\SQL Server Data\EmployeeDB_Log.ldf', -- 日志文件物理路径
SIZE = 10MB, -- 日志文件初始大小 10MB
MAXSIZE = 200MB, -- 日志文件最大大小 200MB
FILEGROWTH = 5MB -- 日志文件自动增长增量 5MB
);
GO
案例3:创建带次数据文件的数据库(用于大数据库扩展)
sql
-- 案例3:创建名为 SalesDB 的数据库,包含主数据文件和1个次数据文件(.ndf),以及1个日志文件
CREATE DATABASE SalesDB
ON PRIMARY
(
-- 主数据文件
NAME = SalesDB_Primary_Data,
FILENAME = 'D:\SQL Server Data\SalesDB_Primary.mdf',
SIZE = 50MB,
MAXSIZE = 1000MB,
FILEGROWTH = 20MB
),
-- 次数据文件(无需指定 PRIMARY,默认归属于主文件组,后缀为 .ndf)
(
NAME = SalesDB_Secondary_Data,
FILENAME = 'E:\SQL Server Secondary Data\SalesDB_Secondary.ndf', -- 存储在 E 盘,分散磁盘压力
SIZE = 100MB,
MAXSIZE = 2000MB,
FILEGROWTH = 50MB
)
LOG ON
(
NAME = SalesDB_Log,
FILENAME = 'D:\SQL Server Data\SalesDB_Log.ldf',
SIZE = 30MB,
MAXSIZE = 300MB,
FILEGROWTH = 10MB
);
GO
2.3 管理数据库
2.3.1 修改数据库(核心:修改容量、配置等)
知识点1:增加数据库容量(扩展数据文件/日志文件大小)
当数据库存储空间不足时,可通过两种方式扩展:手动增大文件固定大小 、修改自动增长策略(推荐,无需手动干预)。
核心语法
sql
-- 语法1:修改数据文件/日志文件的自动增长策略、最大大小
ALTER DATABASE 数据库名称
MODIFY FILE
(
NAME = 文件逻辑名称, -- 必须指定要修改的文件逻辑名(可通过查看数据库信息获取)
MAXSIZE = 新的最大大小,
FILEGROWTH = 新的自动增长增量
);
-- 语法2:手动增大文件的当前大小(直接设置 SIZE 为更大的值,SIZE 必须大于当前文件大小)
ALTER DATABASE 数据库名称
MODIFY FILE
(
NAME = 文件逻辑名称,
SIZE = 新的当前大小 -- 新大小 > 现有大小
);
案例代码(带详细注释)
sql
-- 前提:先确认要修改的数据库文件逻辑名(后续查看数据库信息会讲解如何获取)
-- 案例1:修改 EmployeeDB 数据库的主数据文件,更新自动增长策略和最大大小
ALTER DATABASE EmployeeDB
MODIFY FILE
(
NAME = EmployeeDB_Data, -- 对应创建时的主数据文件逻辑名
MAXSIZE = 1000MB, -- 最大大小从 500MB 改为 1000MB
FILEGROWTH = 20MB -- 自动增长增量从 10MB 改为 20MB
);
GO
-- 案例2:手动增大 EmployeeDB 数据库的日志文件当前大小(从 10MB 改为 50MB)
ALTER DATABASE EmployeeDB
MODIFY FILE
(
NAME = EmployeeDB_Log, -- 对应创建时的日志文件逻辑名
SIZE = 50MB -- 新大小 50MB > 原有 10MB,修改成功
);
GO
知识点2:缩减数据库容量(收缩数据文件/日志文件)
当数据库文件占用空间过大,但实际数据量较小时,可收缩文件释放多余磁盘空间(注意:不建议频繁收缩,会产生磁盘碎片,影响查询性能)。
核心语法
sql
-- 语法1:收缩整个数据库(所有数据文件和日志文件,释放多余空间)
DBCC SHRINKDATABASE
(
数据库名称, -- 要收缩的数据库名
剩余可用空间百分比 -- 收缩后保留的可用空间(如 10,表示保留 10% 空闲空间)
);
-- 语法2:收缩指定的单个文件(更精准,推荐)
DBCC SHRINKFILE
(
文件逻辑名称 OR 文件ID, -- 要收缩的文件逻辑名或文件ID
目标大小 -- 收缩后的目标大小(MB,必须小于当前文件的实际数据占用大小+保留空间)
);
-- 补充:收缩日志文件前,建议先备份日志(避免日志无法收缩),并将数据库恢复模式改为「简单」
ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE;
GO
案例代码(带详细注释)
sql
-- 案例1:收缩 StudentDB 数据库,收缩后保留 5% 的可用空间
DBCC SHRINKDATABASE(StudentDB, 5);
GO
-- 案例2:收缩 EmployeeDB 数据库的主数据文件,目标大小改为 30MB
-- 步骤1:先确认 EmployeeDB_Data 文件的实际数据占用(需小于 30MB,否则收缩失败)
-- 步骤2:执行收缩命令
DBCC SHRINKFILE(EmployeeDB_Data, 30);
GO
-- 案例3:收缩 EmployeeDB 数据库的日志文件,目标大小改为 15MB
-- 步骤1:将数据库恢复模式改为简单(便于收缩日志)
ALTER DATABASE EmployeeDB SET RECOVERY SIMPLE;
GO
-- 步骤2:收缩日志文件
DBCC SHRINKFILE(EmployeeDB_Log, 15);
GO
-- 步骤3:(可选)将数据库恢复模式改回完整(便于后续完整备份和数据恢复)
ALTER DATABASE EmployeeDB SET RECOVERY FULL;
GO
知识点3:查看数据库信息
常用方式有两种:图形界面(对象资源管理器)、T-SQL 语句(精准查询,适合开发)。
核心语法(T-SQL)
sql
-- 语法1:查看当前实例下所有数据库的基本信息(名称、创建时间、状态等)
SELECT * FROM sys.databases; -- sys.databases 是系统视图,存储所有数据库的元数据
-- 语法2:查看指定数据库的文件信息(逻辑名、物理路径、大小、增长策略等)
USE 数据库名称; -- 切换到目标数据库
GO
SELECT * FROM sys.database_files; -- sys.database_files 是当前数据库的文件视图
-- 语法3:使用系统存储过程查看数据库详细信息
EXEC sp_helpdb 数据库名称; -- sp_helpdb 是系统存储过程,返回数据库的完整配置信息
案例代码(带详细注释)
sql
-- 案例1:查看当前 SQL Server 实例下所有数据库的基本信息
SELECT
name AS 数据库名称,
create_date AS 创建时间,
state_desc AS 数据库状态,
recovery_model_desc AS 恢复模式
FROM sys.databases; -- 只查询关键字段,便于阅读
GO
-- 案例2:查看 EmployeeDB 数据库的文件详细信息
USE EmployeeDB; -- 切换到 EmployeeDB 数据库
GO
SELECT
name AS 文件逻辑名称,
physical_name AS 物理文件路径,
size * 8 / 1024 AS 文件大小_GB, -- sys.database_files 中 size 单位是 8KB,转换为 GB
max_size AS 最大大小,
filegrowth AS 自动增长增量,
type_desc AS 文件类型
FROM sys.database_files;
GO
-- 案例3:使用系统存储过程查看 SalesDB 数据库的完整信息
EXEC sp_helpdb SalesDB;
GO
知识点4:数据库更名
修改数据库的名称,注意:更名前需确保数据库无活动连接(无用户正在使用),否则更名失败。
核心语法
sql
-- 语法1:使用 ALTER DATABASE 语句更名(推荐,T-SQL 标准语法)
ALTER DATABASE 旧数据库名称
MODIFY NAME = 新数据库名称;
GO
-- 语法2:使用系统存储过程更名(兼容旧版本 SQL Server)
EXEC sp_renamedb 旧数据库名称, 新数据库名称;
GO
案例代码(带详细注释)
sql
-- 案例:将 StudentDB 数据库更名为 StudentInfoDB
-- 步骤1:(可选)先断开该数据库的所有活动连接(避免更名失败)
ALTER DATABASE StudentDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- SINGLE_USER:设置数据库为单用户模式,仅允许当前连接
-- WITH ROLLBACK IMMEDIATE:立即回滚所有未完成的事务,并断开其他活动连接
GO
-- 步骤2:执行更名操作(推荐使用 ALTER DATABASE 语法)
ALTER DATABASE StudentDB
MODIFY NAME = StudentInfoDB;
GO
-- 步骤3:(可选)将数据库恢复为多用户模式(允许其他用户连接)
ALTER DATABASE StudentInfoDB SET MULTI_USER;
GO
知识点5:删除数据库
删除无用的数据库,释放磁盘空间,注意:删除数据库后,所有数据和日志文件将被永久删除,无法恢复(除非有备份),操作需谨慎。
核心语法
sql
-- 语法1:基础删除语法
DROP DATABASE 数据库名称;
GO
-- 语法2:同时删除多个数据库
DROP DATABASE 数据库名称1, 数据库名称2;
GO
案例代码(带详细注释)
sql
-- 案例1:删除 StudentInfoDB 数据库(确认无备份需求后执行)
-- 步骤1:(可选)断开所有活动连接
ALTER DATABASE StudentInfoDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- 步骤2:执行删除操作
DROP DATABASE StudentInfoDB;
GO
-- 案例2:同时删除 EmployeeDB 和 SalesDB 数据库
ALTER DATABASE EmployeeDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE SalesDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE EmployeeDB, SalesDB;
GO
三、 综合性案例
案例需求:完整实现「企业客户数据库(CustomerDB)」的创建、配置、管理、查询、更名、删除全流程
- 创建数据库,自定义数据文件(主+次)、日志文件配置。
- 查看数据库信息,确认配置无误。
- 扩展数据库容量(修改自动增长策略和手动增大文件大小)。
- 收缩数据库多余空间。
- 将数据库更名为 EnterpriseCustomerDB。
- 最终删除该数据库(仅用于演示,实际场景按需保留)。
完整代码(带详细注释)
sql
-- 步骤1:创建 CustomerDB 数据库(主数据文件+次数据文件+日志文件)
CREATE DATABASE CustomerDB
ON PRIMARY
(
-- 主数据文件
NAME = CustomerDB_Primary,
FILENAME = 'D:\SQL Server Data\CustomerDB_Primary.mdf',
SIZE = 30MB,
MAXSIZE = 800MB,
FILEGROWTH = 15MB
),
-- 次数据文件
(
NAME = CustomerDB_Secondary,
FILENAME = 'E:\SQL Server Data\CustomerDB_Secondary.ndf',
SIZE = 50MB,
MAXSIZE = 1000MB,
FILEGROWTH = 25MB
)
LOG ON
(
NAME = CustomerDB_Log,
FILENAME = 'D:\SQL Server Data\CustomerDB_Log.ldf',
SIZE = 20MB,
MAXSIZE = 400MB,
FILEGROWTH = 10MB
);
GO
-- 步骤2:查看 CustomerDB 数据库的详细信息(确认文件配置、状态)
-- 2.1 查看数据库基本信息
SELECT
name AS 数据库名称,
create_date AS 创建时间,
state_desc AS 状态
FROM sys.databases WHERE name = 'CustomerDB';
GO
-- 2.2 查看数据库文件详细信息
USE CustomerDB;
GO
SELECT
name AS 文件逻辑名,
physical_name AS 物理路径,
size * 8 / 1024 AS 文件大小_GB,
filegrowth AS 自动增长增量
FROM sys.database_files;
GO
-- 步骤3:扩展数据库容量
-- 3.1 修改主数据文件的最大大小和自动增长策略
ALTER DATABASE CustomerDB
MODIFY FILE
(
NAME = CustomerDB_Primary,
MAXSIZE = 1500MB,
FILEGROWTH = 30MB
);
GO
-- 3.2 手动增大次数据文件的当前大小(从 50MB 改为 100MB)
ALTER DATABASE CustomerDB
MODIFY FILE
(
NAME = CustomerDB_Secondary,
SIZE = 100MB
);
GO
-- 步骤4:收缩数据库多余空间
-- 4.1 收缩整个数据库,保留 3% 可用空间
DBCC SHRINKDATABASE(CustomerDB, 3);
GO
-- 4.2 收缩日志文件,目标大小改为 25MB(先改为简单恢复模式)
ALTER DATABASE CustomerDB SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE(CustomerDB_Log, 25);
GO
ALTER DATABASE CustomerDB SET RECOVERY FULL;
GO
-- 步骤5:将 CustomerDB 更名为 EnterpriseCustomerDB
-- 5.1 断开所有活动连接
ALTER DATABASE CustomerDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- 5.2 执行更名
ALTER DATABASE CustomerDB
MODIFY NAME = EnterpriseCustomerDB;
GO
-- 5.3 恢复多用户模式
ALTER DATABASE EnterpriseCustomerDB SET MULTI_USER;
GO
-- 步骤6:(可选)删除 EnterpriseCustomerDB 数据库(演示用,实际按需保留)
ALTER DATABASE EnterpriseCustomerDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE EnterpriseCustomerDB;
GO
总结
- SQL Server 2019 安装核心是勾选「数据库引擎服务」、配置「混合模式身份验证」和 sa 密码,SSMS 是后续操作的核心工具。
- 数据库核心由
.mdf(主数据)、.ndf(次数据)、.ldf(日志)文件组成,系统数据库(master/model/msdb/tempdb)禁止随意修改。 - 核心 T-SQL 语句:
CREATE DATABASE(创建)、ALTER DATABASE(修改/更名)、DBCC SHRINKDATABASE/SHRINKFILE(收缩)、DROP DATABASE(删除)、sys.databases/sys.database_files(查询信息)。 - 数据库管理需注意:扩展容量无性能风险,收缩容量易产生碎片,删除数据库前需确认有备份,更名前需断开活动连接。