练习 - 连接到数据库并添加示例数据
在将数据库连接到应用之前,需要验证是否可以进行连接、添加基本表以及使用示例数据。
Azure SQL 数据库的基础结构、软件更新和修补程序由我们维护。 可以像对待任何其他 SQL Server 安装一样对待 Azure SQL 数据库。 例如,可以使用 Visual Studio、SQL Server Management Studio、Azure Data Studio 或其他工具来管理 Azure SQL 数据库。
访问数据库以及将其连接到应用的方式由自己决定。 若要获得一些使用数据库的经验,可以直接从门户连接到数据库、创建表并运行一些基本的 CRUD 操作。 在本课程中,你将学到:
- Cloud Shell 是什么以及如何从门户中访问它。
- 如何从 Azure CLI 访问有关数据库的信息,包括连接字符串。
- 如何使用
sqlcmd
连接到数据库。 - 如何使用基本表和一些示例数据初始化数据库。
Azure Cloud Shell 是什么?
Azure Cloud Shell 是一种基于浏览器的 shell 体验,用于管理和开发 Azure 资源。 将 Cloud Shell 视为在云中运行的交互式控制台。
在后台,Cloud Shell 在 Linux 上运行。 但是,根据想要使用 Linux 环境还是 Windows 环境,有两种体验可供选择:Bash 和 PowerShell。
可从任何位置访问 Cloud Shell。 除了门户网站,还可以从 shell.azure.com、Azure 移动应用或 Visual Studio Code 访问 Cloud Shell。
Cloud Shell 中包含常用工具和文本编辑器。 下面简要介绍 az
、jq
和 sqlcmd
实用工具,在此练习中将使用这三个工具。
az
也称为 Azure CLI。 它是用于处理 Azure 资源的命令行界面。 可使用此接口获取有关数据库的信息,包括连接字符串。jq
是一个命令行 JSON 分析器。 可通过管道将az
命令的输出传送到此工具,以从 JSON 输出中提取重要字段。sqlcmd
可用于在 SQL Server 上执行语句。 可使用sqlcmd
创建与 Azure SQL 数据库的交互式会话。
获取有关 Azure SQL 数据库的信息
在连接到数据库之前,最好先验证该数据库是否存在且处于联机状态。
在这里,使用 az
实用工具列出数据库并显示有关物流数据库的一些信息,包括其最大大小和状态。
访问 shell.azure.com 或在 Azure 门户中,从 Azure 门户窗口的全局控件中选择“Cloud Shell”按钮。
如果提供此选项,请选择“Bash”进行此学习练习。
在“入门”弹出窗口中,选择“不需要存储帐户”。 在“订阅”下拉列表中选择你的订阅。 选择“应用”。 将加载新的 Cloud Shell 终端。
要运行的
az
命令需要资源组的名称和 Azure SQL 逻辑服务器的名称。 若要保存击键,请运行azure configure
命令,将其指定为默认值。将
[server-name]
替换为创建的 Azure SQL 逻辑服务器的名称,并将[resource-group]
替换为用于服务器的资源组。提示
若要粘贴到 Cloud Shell 中,请使用
Ctrl+Shift+V
而不是Ctrl+V
。 使用Ctrl+C
从终端清除当前命令。az configure --defaults group=[resource-group] sql-server=[server-name]
注意
根据你在 Azure 门户中所处的窗格,SQL Server 名称显示为完全限定的域名 (FQDN)(例如,
servername.database.windows.net
)或独立名称 (servername
)。 对于此命令,只需要不带.database.windows.net
后缀的逻辑名称。运行以下
az sql db list
命令,列出 Azure SQL 逻辑服务器上的所有数据库:az sql db list
可获得大段 JSON 作为输出。
由于我们只想获取数据库名称,因此请再次运行该命令。 但此时,通过管道将输出传送到
jq
,以仅显示名称字段。az sql db list | jq '[.[] | {name: .name}]'
应会获得此输出:
[ { "name": "Logistics" }, { "name": "master" } ]
Logistics
是用户数据库。 与在 SQL Server 中一样,master
系统数据库包括服务器元数据,如登录名和系统配置设置。运行以下
az sql db show
命令,获取有关Logistics
数据库的详细信息:az sql db show --name Logistics
与前面一样,可看到大段 JSON 作为输出。
再次运行该命令。 这一次,通过管道将输出传送到
jq
,将输出限制为物流数据库的名称、最大大小和状态。az sql db show --name Logistics | jq '{name: .name, maxSizeBytes: .maxSizeBytes, status: .status}'
你会看到,数据库处于联机状态,以及数据库可以存储的最大数据量。
{ "name": "Logistics", "maxSizeBytes": 2147483648, "status": "Online" }
如果选择了 Azure SQL 数据库免费套餐,则无服务器数据库会自动暂停以节省免费 vCore 秒数,因此你可以在处于非活动状态后看到具有“暂停”状态的
Logistics
数据库。
连接到数据库
一个连接字符串包含应用程序连接到数据库所需的所有信息。 既然还在 Cloud Shell 中,那就先从获取连接字符串开始吧。
从 Cloud Shell 获取连接字符串
运行以下 az sql db show-connection-string
命令,以 sqlcmd
可以使用的格式获取 Logistics
数据库的连接字符串:
```azurecli
az sql db show-connection-string --client sqlcmd
```
Your output resembles the following example. Copy this output for use in the next step.
```output
"sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U <username> -P <password> -N -l 30"
```
从 Azure 门户获取连接字符串
Azure 门户为可以轻松访问 Azure SQL 数据库的各种数据提供程序提供了连接字符串。
- 在 Azure 门户中,导航到 SQL 数据库。
- 在 SQL 数据库的服务菜单中,在“设置”下,选择“连接字符串”。
- 选择所需的数据提供程序和连接方法。
使用 Visual Studio Code 连接到数据库
让我们使用图形工具连接到新的 Azure SQL 数据库。 Visual Studio Code 是一种适用于 Linux、macOS 和 Windows 的常用开源代码编辑器。 它支持扩展,包括 mssql 扩展。 你可以使用该扩展来查询 SQL Server、Azure SQL 数据库、Azure SQL 托管实例、Fabric 中的 SQL 数据库以及其他平台。
下载并安装 Visual Studio Code。
在 Visual Studio Code 中,选择窗口一侧活动栏中的“扩展”图标,打开“扩展”视图。 搜索 mssql 并选择“安装”以添加扩展。 将 mssql 扩展添加到本地工作站。
提示
对于数据库对象的未来应用程序项目开发,还使用适用于 Visual Studio Code 的 SQL 数据库项目扩展。 此工具允许你在源代码管理中使用数据库、捕获现有数据库架构、设计新对象以及发布到数据库。
在扩展列表中,选择“SQL Server”扩展。
在“连接”下,选择“添加连接”。
在“配置文件名称”中为新连接提供自定义的易记名称。
可通过多种方式提供连接信息:
- 选择“参数”手动输入 Azure SQL 逻辑服务器名称、数据库名称、用户名和密码。
- 选择“连接字符串”以粘贴数据库的连接字符串,然后添加用户名和密码。
- 选择“浏览 Azure”以在 VS Code 中连接到 Azure 订阅,并从列表中选择新的 Azure SQL 数据库。
对于此学习练习,请选择“浏览 Azure”。 从 VS Code 连接到 Azure 订阅。
从列表中选择你的订阅。
从列表中选择你的资源组。
从列表中选择你的服务器和数据库。
在将“身份验证类型”设置为“SQL 登录”的情况下,提供我们在上一个模块中创建的“用户名”和“密码”。
选择“连接” 。
成功连接时,“添加连接”对话框消失。 它会被服务器连接以及“表”、“视图”等的对象资源管理器替代。
使用 Visual Studio Code 查询数据库
让我们运行一系列命令,在 Azure SQL 数据库中执行基本的 CRUD(创建、读取、更新、删除)操作。
右键单击“连接”下的服务器名称行,然后选择“新建查询”。
在新建查询窗口中,让我们通过粘贴以下命令创建一个名为
Drivers
的新表来创建第一个数据库对象。CREATE TABLE Drivers (DriverID int IDENTITY(1,1), LastName varchar(255), FirstName varchar(255), OriginCity varchar(255)); GO
该表包含四列:唯一标识符、司机的姓氏和名字以及司机出发城市。
选择“执行查询”按钮,在查询窗口中运行 T-SQL 命令。
提示
若要在查询窗口中执行多个 T-SQL 命令中的某一个,请拖动并选择所需的查询,然后单击“执行”。
与 Visual Studio Code 中的几乎所有内容一样,键盘快捷方式可在 Visual Studio Code 中自定义。 在 Windows 中,“执行”的默认键盘快捷方式是
Ctrl + Shift + E
。接下来,运行以下 T-SQL 语句,通过查询数据库元数据来验证
Drivers
表是否存在:SELECT name FROM sys.tables; GO
在“查询结果”选项卡的“结果”下,应看到表列表中存在
Drivers
。name ------- Drivers
接下来,我们在表中添加一行。 运行以下 T-SQL 语句,在表中添加一个示例行:
INSERT INTO Drivers (LastName, FirstName, OriginCity) VALUES ('Zirne', 'Laura', 'Springfield'); GO
此输出指示操作已成功:
3:14:01 PM Started executing query at Line 7 (1 row affected) Total execution time: 00:00:00.044
若要查看插入的行,请运行以下 T-SQL 语句,列出表中所有行的
DriverID
和OriginCity
列:SELECT DriverID, OriginCity FROM Drivers; GO
你会获得一个结果,包含在上一步中所创建的行的
DriverID
和OriginCity
。DriverID OriginCity ----------- -------------------------- 1 Springfield
让我们更新行并更改
OriginCity
。 运行以下 T-SQL 语句,将DriverID
为1
的司机的出发城市从“Springfield”更改为“Boston”:UPDATE Drivers SET OriginCity='Boston' WHERE DriverID=1; GO
应收到一条消息,确认“查询结果”窗口中的查询执行:
3:14:29 PM Started executing query at Line 13 (1 row affected) Total execution time: 00:00:00.031
运行以下 T-SQL 语句以再次列出
DriverID
和OriginCity
列:SELECT DriverID, OriginCity FROM Drivers; GO
现在你应获得以下输出。 请注意
OriginCity
如何反映对 Boston 的更新。DriverID OriginCity ----------- -------------------------- 1 Boston
最后,我们通过运行以下 T-SQL 语句删除记录,从而删除该行:
DELETE FROM Drivers WHERE DriverID=1; GO
3:15:00 PM Started executing query at Line 16 (1 row affected) Total execution time: 00:00:00.017
运行以下 T-SQL 语句以验证
Drivers
表格为空:SELECT COUNT(*) FROM Drivers; GO
你可以看到表中不包含任何行。
----------- 0
现在,你已大致了解了如何从 Cloud Shell 和 Visual Studio 中使用 Azure SQL 数据库。 可以将连接字符串用于偏好的 SQL 管理工具,包括 SQL Server Management Studio、Visual Studio 或自定义应用程序。
借助 Cloud Shell,可以轻松访问和使用任何类型的 Azure 资源。 由于 Cloud Shell 基于浏览器,因此可以从 Windows、macOS 或 Linux(在任何带有 Web 浏览器的系统上)访问它。
你获得了在 Visual Studio Code 中运行 T-SQL 命令的一些实践经验,并练习了 T-SQL 技能。
在下一单元中,我们将结束此模块并介绍如何关闭数据库。