本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用项目的主键读取项目
数据库的一个常见访问模式是从表中读取一个项目。您必须指定所需项目的主键。
SQL
在 SQL 中,可使用 SELECT
语句从表中检索数据。您可以在结果中请求一个或多个列 (或所有列,如果您使用 *
运算符)。WHERE
子句确定要返回的行。
以下是 SELECT
语句,它从 Music 表中检索单个行。WHERE
子句指定主键值。
SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
您可以修改此查询以仅检索一部分列。
SELECT AlbumTitle, Year, Price FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
请注意,此表的主键包含 Artist 和 SongTitle。
DynamoDB
PartiQL
DynamoDB 提供 ExecuteStatement
操作,用于使用 SELECT 语句按主键检索项目。
select AlbumTitle, Year, Price FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
请注意,此表的主键包含艺术和 SongTitle。
所选 PartiQL 语句也可用于查询或扫描 DynamoDB 表
有关使用 Select
和 ExecuteStatement
的代码示例,请参阅PartiQL 为 选择语句 DynamoDB。
ClassicAPIs
DynamoDB 提供了 GetItem
操作,用于按主键检索项目。GetItem
非常高效,因为它提供对项目物理位置的直接访问。(有关更多信息,请参阅 分区和数据分配。)
默认情况下,GetItem
将返回整个项目及其所有属性。
{ TableName: "Music", Key: { "Artist": "No One You Know", "SongTitle": "Call Me Today" } }
您可以添加 ProjectionExpression
参数以仅返回一些属性。
{ TableName: "Music", Key: { "Artist": "No One You Know", "SongTitle": "Call Me Today" }, "ProjectionExpression": "AlbumTitle, Year, Price" }
请注意,此表的主键包含 Artist 和 SongTitle。
DynamoDB 操作非常高效:GetItem
它使用主键值来确定相关项目的确切存储位置,并直接从该位置检索该项目。在按主键值检索项目时,SQL SELECT
语句同样高效。
SQL SELECT
语句支持多种查询和表扫描。DynamoDB 通过其 Query
和 Scan
操作提供相似功能(如查询表和扫描表中所述)。
SQL SELECT
语句可执行表联接,这允许您同时从多个表中检索数据。在标准化数据库表的情况下,联接是最高效的,并且各个表之间的关系很明确。不过,如果您在一个 SELECT
语句中联接的表过多,则会影响应用程序性能。可使用数据库复制、具体化的视图或查询重写来解决此类问题。
DynamoDB 是一个非关系数据库且不支持表联接。如果您将现有应用程序从关系数据库迁移到 DynamoDB,则需要非规范化数据模型以消除联接需要。
有关使用 GetItem
的代码示例,请参阅和 AWS DynamoDB 入门SDKs。