SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019数据库的操作(2)

SQL Server 2019数据库的操作

一、 前置准备:SQL Server 2019 安装步骤

1. 安装前期准备

  1. 下载安装介质:前往 微软官方下载中心 下载 SQL Server 2019,可选择「开发者版(Developer)」(免费用于开发和测试)或「企业版/标准版」(商用需授权)。
  2. 检查系统要求:支持 Windows 10 1809 及以上、Windows Server 2019 及以上,需 4GB 以上内存(推荐 8GB+)、10GB 以上可用磁盘空间。
  3. 关闭无关杀毒软件和防火墙(安装完成后可重新开启)。

2. 分步安装操作

  1. 运行下载的安装程序 setup.exe,进入 SQL Server 安装中心,选择左侧「安装」,点击右侧「全新 SQL Server 独立安装或向现有安装添加功能」。
  2. 产品密钥步骤:开发者版可直接选择「免费授权的版本」中的「SQL Server Developer」,点击「下一步」。
  3. 许可条款步骤:勾选「我接受许可条款」,点击「下一步」。
  4. 微软更新步骤:可选是否启用 Microsoft Update,推荐勾选(便于后续补丁更新),点击「下一步」。
  5. 安装规则步骤:等待系统检查完成,无错误(黄色警告可忽略,红色错误需修复)后点击「下一步」。
  6. 功能选择步骤:
    • 核心勾选「数据库引擎服务」(必备,用于数据库存储和管理)。
    • 可选勾选「SQL Server 管理工具 - 基本」(包含 SSMS 简化版,若需完整版可后续单独安装)。
    • 确认安装路径(可修改默认路径,避免C盘空间不足),点击「下一步」。
  7. 实例配置步骤:选择「默认实例」(便于后续使用,实例名默认为 MSSQLSERVER)或「命名实例」,确认实例根目录,点击「下一步」。
  8. 服务器配置步骤:
    • 「服务账户」:可保持默认系统账户,也可配置专用域账户。
    • 「启动类型」:数据库引擎服务推荐设置为「自动」,确保开机自启。
    • 点击「下一步」。
  9. 数据库引擎配置步骤(关键步骤 ):
    • 「服务器身份验证模式」:选择「混合模式(SQL Server 身份验证和 Windows 身份验证)」,便于后续多种场景连接。
    • 「指定 SQL Server 管理员」:设置 sa 账户密码(需牢记,复杂度符合要求:字母+数字+特殊字符),同时可添加当前 Windows 用户为管理员。
    • 「数据目录」:可修改数据库文件、日志文件的默认存储路径,点击「下一步」。
  10. 后续步骤:保持默认配置,依次点击「下一步」,最后点击「安装」,等待安装完成(耗时约10-30分钟,取决于硬件配置)。
  11. 安装完成:勾选「安装完成后关闭此向导」,点击「关闭」。

3. 补充:SSMS(SQL Server 管理工作室)安装

  1. 若安装时未勾选完整 SSMS,前往 微软官方下载 SSMS 下载最新版本。
  2. 运行 SSMS 安装程序,勾选「我接受许可条款」,点击「安装」,等待完成后重启电脑。
  3. 启动 SSMS,输入服务器名称(默认实例为「localhost」或「.」),身份验证选择「SQL Server 身份验证」,输入 sa 账户和密码,点击「连接」,即可进入 SQL Server 操作界面。

二、 核心知识点与语法、案例

2.1 数据库组成(基础概念)

SQL Server 2019 数据库由 数据库文件(数据文件)日志文件 组成,所有数据库操作均基于这两类文件存储。

  1. 数据库文件(Data File)

    • 用于存储数据库的实际数据(表、视图、索引等)。
    • 分类:主数据文件(.mdf)、次数据文件(.ndf)。
    • 特性:每个数据库必须有且仅有一个主数据文件,次数据文件可选(用于拆分大数据、扩展存储到不同磁盘)。
  2. 日志文件(Log File)

    • 用于存储数据库的所有事务日志(增删改、创建/删除对象等操作记录),用于数据恢复。
    • 后缀:.ldf
    • 特性:每个数据库至少有一个日志文件,可多个(提升日志写入性能),日志文件不存储实际数据,仅记录操作轨迹。
  3. 系统数据库

    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:使用对象资源管理器(图形界面,适合新手)
  1. 启动 SSMS,连接到 SQL Server 实例,展开左侧「对象资源管理器」中的服务器节点。
  2. 右键点击「数据库」,选择「新建数据库」。
  3. 在「新建数据库」窗口中,填写核心配置:
    • 「数据库名称」:输入自定义名称(如 StudentDB)。
    • 「所有者」:保持默认(sa)或选择指定用户。
    • 「数据文件」:可修改主数据文件的「初始大小」(默认 8MB)、「自动增长」(默认按 64MB 增长,无限制)、「路径」(存储位置)。
    • 「日志文件」:可修改日志文件的「初始大小」(默认 8MB)、「自动增长」、「路径」。
  4. 无需额外配置时,直接点击「确定」,即可完成数据库创建(刷新「数据库」节点可看到新建的数据库)。
方式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)」的创建、配置、管理、查询、更名、删除全流程

  1. 创建数据库,自定义数据文件(主+次)、日志文件配置。
  2. 查看数据库信息,确认配置无误。
  3. 扩展数据库容量(修改自动增长策略和手动增大文件大小)。
  4. 收缩数据库多余空间。
  5. 将数据库更名为 EnterpriseCustomerDB。
  6. 最终删除该数据库(仅用于演示,实际场景按需保留)。

完整代码(带详细注释)

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

总结

  1. SQL Server 2019 安装核心是勾选「数据库引擎服务」、配置「混合模式身份验证」和 sa 密码,SSMS 是后续操作的核心工具。
  2. 数据库核心由 .mdf(主数据)、.ndf(次数据)、.ldf(日志)文件组成,系统数据库(master/model/msdb/tempdb)禁止随意修改。
  3. 核心 T-SQL 语句:CREATE DATABASE(创建)、ALTER DATABASE(修改/更名)、DBCC SHRINKDATABASE/SHRINKFILE(收缩)、DROP DATABASE(删除)、sys.databases/sys.database_files(查询信息)。
  4. 数据库管理需注意:扩展容量无性能风险,收缩容量易产生碎片,删除数据库前需确认有备份,更名前需断开活动连接。
相关推荐
鄭郑2 小时前
STM32学习笔记--I2C封装与OLED(2026.2.1)
笔记·stm32·学习
踩坑小念3 小时前
秒杀场景下如何处理redis扣除状态不一致问题
数据库·redis·分布式·缓存·秒杀
萧曵 丶3 小时前
MySQL 语句书写顺序与执行顺序对比速记表
数据库·mysql
酒鼎4 小时前
学习笔记(4)HTML5新特性(第3章)- WebSocket
笔记·学习·html5
Wiktok4 小时前
MySQL的常用数据类型
数据库·mysql
-Springer-4 小时前
STM32 学习 —— 个人学习笔记2-2(新建工程)
笔记·stm32·学习
tb_first4 小时前
万字超详细苍穹外卖学习笔记4
java·spring boot·笔记·学习·spring·mybatis
曹牧4 小时前
Oracle 表闪回(Flashback Table)
数据库·oracle
J_liaty4 小时前
Redis 超详细入门教程:从零基础到实战精通
数据库·redis·缓存