教程: Azure Data Studio使用 TRANSACT
创建并运行查询、存储过程、脚本等是数据库专业人员的核心任务。 本教程演示如何在 T-SQL 编辑器中创建数据库对象的主要功能。
您可以在本教學課程中,了解如何使用 Azure 数据 Studio 來完成下列工作:
- 搜索数据库对象
- 编辑表数据
- 使用代码段快速编写 T-SQL
- 使用查看数据库对象详细信息速览定义和转到定义
必要條件
本教程需要安装 SQL Server 或 Azure SQL 数据库TutorialDB。 若要创建TutorialDB数据库,请完成以下快速入门之一:
快速找到数据库对象并执行常见任务
Azure 数据 Studio 提供了搜索小组件以快速查找数据库对象。 结果列表中与所选对象相关的常见任务提供了上下文菜单等编辑数据表。
-
打开服务器侧栏 (Ctrl + G),展开数据库,然后选择TutorialDB。
-
打开TutorialDB 仪表板通过右击TutorialDB ,然后选择管理从上下文菜单:
-
在仪表板中,右键单击dbo。客户(在搜索小组件),然后选择编辑数据。
提示
对于具有多个对象的数据库,使用搜索小组件来快速查找表、 视图、 你正在寻找的等。
-
编辑电子邮件列中的第一行,类型orlando0@adventure-works.com,然后按Enter以保存更改。
使用 T-SQL 代码段创建存储的过程
Azure 数据 Studio 用于快速创建语句提供了许多内置的 T-SQL 代码片段。
-
按打开新查询编辑器Ctrl + N。
-
类型sql在编辑器中,向下箭头sqlCreateStoredProcedure,然后按选项卡密钥 (或Enter) 以加载创建存储过程代码段。
-
创建存储的过程代码片段有两个字段设置以进行快速编辑StoredProcedureName并SchemaName。 选择StoredProcedureName,右键单击,然后选择更改所有匹配项。 现在,键入getCustomer和全部StoredProcedureName条目更改为getCustomer。
-
更改所有匹配项SchemaName到dbo。
-
代码段中包含占位符参数和需要更新的正文文本。 EXECUTE语句还包含占位符文本,因为它不知道该过程将具有的参数的数目。 对于本教程中更新该代码段因此看起来如以下代码:
SQL复制
-- Create a new stored procedure called 'getCustomer' in schema 'dbo' -- Drop the stored procedure if it already exists IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE SPECIFIC_SCHEMA = N'dbo' AND SPECIFIC_NAME = N'getCustomer' ) DROP PROCEDURE dbo.getCustomer GO -- Create the stored procedure in the specified schema CREATE PROCEDURE dbo.getCustomer @ID int -- add more stored procedure parameters here AS -- body of the stored procedure SELECT c.CustomerId, c.Name, c.Location, c.Email FROM dbo.Customers c WHERE c.CustomerId = @ID FOR JSON PATH GO -- example to execute the stored procedure we just created EXECUTE dbo.getCustomer 1 GO
-
若要创建存储的过程并对其进行测试运行,按F5。
现已创建存储的过程,并结果窗格将显示在 JSON 中返回的客户。 若要查看格式化的 JSON,请单击返回的记录。
使用查看定义
Azure 数据 Studio 提供的功能,若要查看使用窥视定义功能的对象定义。 本部分中创建第二个存储的过程,并使用查看定义查看一个表以快速创建存储过程的正文中包括的列。
-
按打开的新编辑器Ctrl + N。
-
类型sql在编辑器中,向下箭头sqlCreateStoredProcedure,然后按选项卡密钥 (或Enter) 以加载创建存储过程代码段。
-
在键入setCustomer有关StoredProcedureName并dbo为SchemaName
-
替换为@param占位符替换以下参数定义:
SQL复制
@json_val nvarchar(max)
-
存储过程的主体替换为以下代码:
SQL复制
INSERT INTO dbo.Customers
-
在中插入行只是添加了,右键单击dbo。客户,然后选择查看定义。
-
表定义会显示您可以快速查看表中包括的列。 请参阅要轻松地填写你的存储过程的语句的列列表。 完成创建您以前添加来完成的存储过程的正文并关闭速览定义窗口的 INSERT 语句:
SQL复制
INSERT INTO dbo.Customers (CustomerId, Name, Location, Email) SELECT CustomerId, Name, Location, Email FROM OPENJSON (@json_val) WITH( CustomerId int, Name nvarchar(50), Location nvarchar(50), Email nvarchar(50) )
-
刪除 (或註解)查詢底下的 EXECUTE 命令。
-
整个语句应如以下代码所示:
SQL复制
-- Create a new stored procedure called 'setCustomer' in schema 'dbo' -- Drop the stored procedure if it already exists IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE SPECIFIC_SCHEMA = N'dbo' AND SPECIFIC_NAME = N'setCustomer' ) DROP PROCEDURE dbo.setCustomer GO -- Create the stored procedure in the specified schema CREATE PROCEDURE dbo.setCustomer @json_val nvarchar(max) AS -- body of the stored procedure INSERT INTO dbo.Customers (CustomerId, Name, Location, Email) SELECT CustomerId, Name, Location, Email FROM OPENJSON (@json_val) WITH( CustomerId int, Name nvarchar(50), Location nvarchar(50), Email nvarchar(50) ) GO
-
若要创建setCustomer存储过程中,按F5。
使用将查询结果保存为 JSON,以便测试 setCustomer 存储过程
SetCustomer在上一节中创建的存储的过程需要 JSON 数据传递到@json_val参数。 本部分演示如何获取少量格式正确的 JSON 传递到参数,以便可以测试存储的过程。
-
在中服务器右键单击侧栏dbo。客户表,然后单击选择前 1000年行。
-
在结果视图中选择的第一行,请确保选择整行 (单击最左边的列中的数字 1),然后选择另存为 JSON。
-
将文件夹更改为你会记得以便可以删除的文件更高版本 (对于示例桌面版) 并单击的位置保存。JSON 格式设置文件随即打开。
-
在编辑器中选择的 JSON 数据并将其复制。
-
按打开的新编辑器Ctrl + N。
-
上一步骤演示了如何轻松地获取格式正确的数据,以完成对调用setCustomer过程。 您可以看到下面的代码与新客户详细信息使用相同的 JSON 格式,因此我们可以测试setCustomer过程。 语句包含语法来声明参数和运行新的 get 和 set 过程。 可以粘贴前一部分中复制的数据并对其进行编辑,因此,以下示例中,与相同或只需将以下语句粘贴到查询编辑器。
SQL复制
-- example to execute the stored procedure we just created declare @json nvarchar(max) = N'[ { "CustomerId": 5, "Name": "Lucy", "Location": "Canada", "Email": "lucy0@adventure-works.com" } ]' EXECUTE dbo.setCustomer @json_val = @json GO EXECUTE dbo.getCustomer @ID = 5
-
执行该脚本通过按F5。 该脚本插入新客户,并以 JSON 格式返回新客户的信息。 单击要打开格式化的视图的结果。
后续步骤
在本教程中,你将了解:
- 快速搜索架构对象
- 编辑表数据
- 编写使用代码段的 T-SQL 脚本
- 了解如何使用查看定义的数据库对象详细信息,并转到定义