
Redshift主键的定义
Redshift为用户提供不同类型的功能,其中主键是Redshift提供的功能之一。基本上,Redshift支持参考完整性约束,如主键、外键和唯一键。基本上,主键是约束之一,它在表的创建过程中被用来识别表的唯一记录。基本上,有两种方式来定义约束,比如在创建时间表时,第二种方式是我们可以根据用户的要求,使用alter命令在现有表中添加主键约束。基本上,Redshift支持主键、外键和唯一键等参考性完整性约束。
语法
基本上,有两种方法可以在Redshift中创建主键,如下所示。首先,我们可以在创建表时创建主键,如下所示。
create table table_name (colm name 1 data type(size), colm name 2 data type(size), colm name N data type(size) specified constraint name(Primary Key) (specified colm name));
解释一下
在上面的语法中,我们使用创建表语句来创建带有主键约束的表,如上面的语法所示。在这里,我们指定了不同数据类型的不同列名和它们的大小,如图所示。在语法的最后,我们需要根据用户的要求,添加作为主键的约束名称。
第二种方法是,我们可以使用alter命令将主键约束添加到现有的表中,如下所示。
alter table specified table name add specified constraint name primary key (specified colm name);
解释一下
在上面的语法中,我们使用alter table命令将主键添加到现有的表中,在这个语法中,我们需要传递作为主键的约束名称,以及我们需要分配主键的指定列名。以上提到的语法取决于用户需求,也就是说,根据用户需求,我们可以使用任何一种语法。
主键如何在Redshift中工作?
现在让我们看看主键在Redshift中是如何工作的,如下所示。
基本上,唯一性、主键和外键的要求只是指示性的;它们并没有被Amazon Redshift实现。尽管如此,主键和外键被用作安排线索,如果你的ETL循环或你的应用程序中的一些其他互动实现了它们的可信性,它们就应该被宣布。
例如,问题组织者在某些可测量的计算中利用了主键和外键。它这样做是为了诱导唯一性和参考性联系,影响子查询的装饰性策略。通过这样做,它可以安排巨大数量的连接并消除多余的连接。
组织者使用这些键连接,但它希望Amazon Redshift表中的所有键都是实质性的堆叠。在你的应用程序允许无效的外键或主键的情况下,一些查询可能会返回错误的结果。例如,如果主键不特别,SELECT DISTINCT查询可能会返回复制行。尽量不要在你质疑其合法性的情况下为你的表描述键的要求。然后,当你意识到主键和外键以及唯一性要求是合法的时候,你应该一直宣布这些要求。
Amazon Redshift授权了NOT NULL段的要求。
基本上,键约束是用来识别唯一记录的,也是按照用户的要求用作索引的。作为一个明确用于信息仓库的列式数据集,Redshift在索引方面有另一种处理方式。它不支持通常在不同的数据集中使用的标准记录,以使查询的性能更好。所有类型的键都是一样的,比如distkey、sortkey,这些键可以根据需求应用多个列。基本上,Redshift支持创建主键、唯一键和外键。在任何情况下,类似的文档都表示这些只是指示性的,并没有实施。如果你的信息堆叠措施保证了它们的真实性,那么就应该利用它们,因为它们被用作安排线索来推进问题的执行。在任何情况下,如果你质疑它们的合法性,你就不应该对它们进行定性。例如,如果你不知道这个项目名称对于一个表格来说是否真的很特别,就不要为它做一个有趣的关键限制。在任何情况下,在你确定的情况下,都要使它成为信息库马达在执行查询时可以利用的东西。
例子
现在让我们来看看Redshift中索引的不同例子,以便更好地理解如下。现在让我们看看第一种方法,即使用创建表语句,如下所示。
create table product(
product_id int not null,
product_name varchar(255) not null,
product_cost decimal(15,2) not null,
primary key (product_id));
解释一下
在上面的例子中,我们在创建表的过程中使用了创建表语句来创建索引,如图所示,在这个例子中,我们创建了一个具有不同数据类型的不同属性的产品表,如图所示。这里我们在product_id列名上添加了主键,如图所示。最后的输出或者我们可以说是上述语句的最终结果,我们可以通过以下截图来说明。

在成功创建表后,我们能够在产品表中插入唯一的值,这里我们在product_id列上指定了一个主键,这意味着product_id包含了唯一的值,但是当我们试图插入相同的值时,这时显示了一个错误信息。
现在让我们来看看如何使用alter table命令在现有的表中添加索引,如下所示。
假设我们有一个已经创建的没有任何索引的产品表,我们需要在这个表中添加索引,这时我们可以使用以下语句。
alter table product add primary key(product_id);
解释
在上面的例子中,我们使用alter命令向现有的表添加索引,这里我们在product_id列上添加了主键,如图所示。最终的输出或者我们可以说是上述语句的最终结果,我们可以用下面的截图来说明,如下图所示。

总结
我们希望通过这篇文章你能了解更多关于Redshift主键的知识。从上面的文章中,我们了解了Redshift主键的基本概念以及语法,我们也看到了Redshift主键的不同例子。从这篇文章中,我们了解了如何以及何时使用Redshift主键。