教程:在 Azure SQL 数据库中设计关系数据库
适用于:Azure SQL 数据库
Azure SQL 数据库是 Azure 中的关系数据库即服务 (DBaaS)。 本教程介绍如何执行下列操作:
- 连接到数据库
- 使用 T-SQL 命令创建表
- 使用 BCP 大容量加载数据
- 使用 T-SQL 命令查询数据
注意
本教程使用 Azure SQL 数据库。 你也可以使用弹性池中的共用数据库或 SQL 托管实例。 若要连接到 SQL 托管实例,请参阅以下 SQL 托管实例快速入门:快速入门:配置 Azure VM 以连接到 Azure SQL 托管实例和快速入门:配置从本地到 Azure SQL 托管实例的点到站点连接。
先决条件
- 使用 SQL Server Management Studio(最新版本)或 Azure SQL 数据库的 Azure 门户查询编辑器。
- 你还可以使用 Azure Data Studio (ADS) 遵循相同的教程。
- BCP 和 SQLCMD(最新版本)。
- 如果没有 Azure 订阅,可在开始前创建一个试用帐户。
- 如果尚未创建Azure SQL 数据库,请访问快速入门:创建单一数据库。
登录到 Azure 门户
登录 Azure 门户。
创建服务器级 IP 防火墙规则
Azure SQL 数据库在服务器级别创建 IP 防火墙。 此防火墙阻止外部应用程序和工具连接到服务器和服务器上的任何数据库,除非防火墙规则允许其 IP 通过防火墙。 若要启用与数据库的外部连接,必须首先为 IP 地址(或 IP 地址范围)添加 IP 防火墙规则。 遵循这些步骤创建服务器级 IP 防火墙规则。
重要
通过端口 1433 进行的 Azure SQL 数据库通信。 如果尝试从企业网络内部连接到此服务,则该网络的防火墙可能不允许经端口 1433 的出站流量。 如果是这样,则无法连接到数据库,除非管理员打开端口 1433。
部署完成后,请从 Azure 门户菜单中选择“SQL 数据库”,或在任何页面上搜索并选择“SQL 数据库”。
在“SQL 数据库”页上选择“yourDatabase”。 此时会打开数据库的概览页,其中显示了完全限定的服务器名称(例如
contosodatabaseserver01.database.chinacloudapi.cn
),并提供了其他配置的选项。复制此完全限定的服务器名称,将其用于从 SQL Server Management Studio 连接到服务器和数据库。
在“设置”下选择“网络” 。 选择“公共访问”选项卡,然后选择“公用网络访问”下的“所选网络”以显示“防火墙规则”部分。
在工具栏上选择“添加客户端 IPv4”,将当前的 IP 地址添加到新的 IP 防火墙规则。 IP 防火墙规则可以针对单个 IP 地址或一系列 IP 地址打开端口 1433。
选择“保存”。 此时会针对当前的 IP 地址创建服务器级 IP 防火墙规则,在服务器上打开端口 1433。
选择“确定”,然后关闭“防火墙设置”页。
你的 IP 地址现在可以通过 IP 防火墙。 现在可以使用 SQL Server Management Studio 或其他所选工具连接到数据库。 确保使用之前创建的服务器管理员帐户。
重要
默认情况下,所有 Azure 服务都允许通过 SQL 数据库 IP 防火墙进行访问。 在此页上选择“关”可禁止所有 Azure 服务进行访问。
连接到数据库
Azure SQL 数据库位于逻辑 SQL Server 中。 可以使用登录信息连接到逻辑 SQL Server 的 master
,然后连接到数据库。 或者,使用包含的用户,可以直接连接到 Azure SQL 数据库。
使用 SQL Server Management Studio 连接到 Azure SQL 数据库。
打开 SQL Server Management Studio。
在“连接到服务器”对话框中,输入以下信息。 将其他选项保留为默认值。
设置 建议值 说明 服务器类型 数据库引擎 此值是必需的。 服务器名称 完全限定的 Azure SQL 数据库逻辑服务器名称 例如 your_logical_azure_sql_server.database.chinacloudapi.cn
。身份验证 SQL Server 身份验证 使用 SQL Server 身份验证输入用户名和密码。 Microsoft Entra 身份验证 若要使用 Microsoft Entra ID 进行连接,对于 Microsoft Entra 服务器管理员,请选择 Microsoft Entra MFA。 有关详细信息,请参阅使用 Azure SQL 配置和管理 Microsoft Entra 身份验证。 登录 服务器管理员帐户 如果使用 SQL Server 身份验证,则为创建服务器时指定的帐户。 密码 服务器管理员帐户的密码 如果使用 SQL Server 身份验证,则为创建服务器时指定的密码。 选择“连接到服务器”对话框中的“选项”。 在“连接到数据库”部分输入 yourDatabase,以连接到此数据库。
选择“连接” 。 此时会在 SSMS 中打开“对象资源管理器”窗口。
在对象资源管理器中展开“数据库”,然后展开 yourDatabase,查看示例数据库中的对象 。
在“对象资源管理器”中,右键单击 yourDatabase,并选择“新建查询”。 此时会打开一个空白查询窗口,该窗口连接到数据库。
在数据库中创建表
使用 Transact-SQL 创建 4 个表,这些表是大专院校的学生管理系统的模型:
Person
Course
Student
Credit
以下关系图显示了这些表的相互关系。 其中一些表引用其他表中的列。 例如,Student
表引用 Person
表的 PersonId
列。 请研究此关系图,了解本教程中各种表的相互关系。 若要深入了解如何创建有效的规范化数据库表,请参阅设计规范化数据库。 有关如何选择数据类型的信息,请参阅 Data types(数据类型)。 默认情况下,表在默认 dbo
架构中创建,这意味着表的两部分名称将为 dbo.Person
。
注意
还可以使用 SQL Server Management Studio 中的表设计器来创建和设计表。
在查询窗口中,执行以下 T-SQL 查询以在数据库中创建四个表:
-- Create Person table CREATE TABLE Person ( PersonId INT IDENTITY PRIMARY KEY, FirstName NVARCHAR(128) NOT NULL, MiddelInitial NVARCHAR(10), LastName NVARCHAR(128) NOT NULL, DateOfBirth DATE NOT NULL ) -- Create Student table CREATE TABLE Student ( StudentId INT IDENTITY PRIMARY KEY, PersonId INT REFERENCES Person (PersonId), Email NVARCHAR(256) ) -- Create Course table CREATE TABLE Course ( CourseId INT IDENTITY PRIMARY KEY, Name NVARCHAR(50) NOT NULL, Teacher NVARCHAR(256) NOT NULL ) -- Create Credit table CREATE TABLE Credit ( StudentId INT REFERENCES Student (StudentId), CourseId INT REFERENCES Course (CourseId), Grade DECIMAL(5,2) CHECK (Grade <= 100.00), Attempt TINYINT, CONSTRAINT [UQ_studentgrades] UNIQUE CLUSTERED ( StudentId, CourseId, Grade, Attempt ) )
展开“对象资源管理器”中 yourDatabase 下的“表”节点以查看创建的新表。
将数据加载到表
在“下载”文件夹中创建名为 sampleData 的文件夹,为数据库存储示例数据。 例如
c:\Users\<your user name>\Downloads
。右键单击以下链接并将它们保存到 sampleData 文件夹。
打开新的 Windows 命令提示符窗口并导航到 sampleData 文件夹。 例如
cd c:\Users\<your user name>\Downloads
。执行以下
bcp
命令,将示例数据插入表,使用环境值替换“服务器”、“数据库”、“用户”和“密码”的值。bcp Course in SampleCourseData -S <server>.database.chinacloudapi.cn -d <database> -U <user> -P <password> -q -c -t "," bcp Person in SamplePersonData -S <server>.database.chinacloudapi.cn -d <database> -U <user> -P <password> -q -c -t "," bcp Student in SampleStudentData -S <server>.database.chinacloudapi.cn -d <database> -U <user> -P <password> -q -c -t "," bcp Credit in SampleCreditData -S <server>.database.chinacloudapi.cn -d <database> -U <user> -P <password> -q -c -t ","
现已将示例数据加载到了之前创建的表中。
查询数据
执行以下 T-SQL 查询,从数据库表中检索信息。
第一个查询将联接所有 4 个表,以查找由“Dominick Pope”授课的分数高于 75% 的学生。 在查询窗口中执行以下 T-SQL 查询:
-- Find the students taught by Dominick Pope who have a grade higher than 75%
SELECT person.FirstName, person.LastName, course.Name, credit.Grade
FROM Person AS person
INNER JOIN Student AS student ON person.PersonId = student.PersonId
INNER JOIN Credit AS credit ON student.StudentId = credit.StudentId
INNER JOIN Course AS course ON credit.CourseId = course.courseId
WHERE course.Teacher = 'Dominick Pope'
AND Grade > 75;
此查询将联接所有 4 个表,以查找“Noe Coleman”注册过的课程。 在查询窗口中执行以下 T-SQL 查询:
-- Find all the courses in which Noe Coleman has ever enrolled
SELECT course.Name, course.Teacher, credit.Grade
FROM Course AS course
INNER JOIN Credit AS credit ON credit.CourseId = course.CourseId
INNER JOIN Student AS student ON student.StudentId = credit.StudentId
INNER JOIN Person AS person ON person.PersonId = student.PersonId
WHERE person.FirstName = 'Noe'
AND person.LastName = 'Coleman';
提示
若要了解有关编写 SQL 查询的更多信息,请访问教程:编写 Transact-SQL 语句。
相关内容
- 教程:使用 Azure Data Studio (ADS) 在 Azure SQL 数据库中设计关系数据库
- Azure SQL 数据库有哪些新增功能?
- 配置和管理内容参考信息 - Azure SQL 数据库
提示
准备好开始开发 .NET 应用程序了吗? 此免费 Learn 模块介绍如何开发和配置可查询 Azure SQL 数据库的 ASP.NET 应用程序,包括创建简单数据库。
下一步
转向下一教程,了解如何使用 Visual Studio 和 C# 设计数据库。