主键约束(PRIMARY KEY)可以看作非空约束和唯一约束的集合:既不允许为NULL,也不允许重复,且一张表只能有一个主键约束。
例如:创建表orders实现主键约束。orders表为订单信息表,希望每个订单都有一个唯一且有效的标识可供查找。本例通过主键约束实现o_orderkey,其表示订单编号,o_totalprice表示订单金额,如表3-33所示。
表3-33 orders表结构
执行下面的SQL语句,创建orders表。
CREATE TABLE orders(
o_orderkey INTEGER PRIMARY KEY,
o_totalprice DOUBLE
);
接着进行数据插入操作,分别插入NULL值和重复值进行测试。具体SQL语句如下:
INSERT INTO orders(o_orderkey, o_totalprice) VALUES(0, 10.1);
INSERT INTO orders(o_orderkey, o_totalprice) VALUES(0, 20.2);
INSERT INTO orders(o_orderkey, o_totalprice) VALUES(NULL, 30.3);
INSERT INTO orders(o_orderkey, o_totalprice) VALUES(1, 40.4);
以上四条插入语句,第一条顺利插入;对于重复值报了“violates unique constraint”错误;对于NULL报了“violates not-NULL constraint”错误;第四条语句可以顺利执行。对于表中的记录,主键通过保证一个有效且唯一的数据,保证了实体完整性。所有语句执行结果字段状态如图3-7所示。

图3-7 SQL执行结果字段状态表
例如:创建表orders实现主键约束。orders表为订单信息表,希望每个订单都有一个唯一且有效的标识可供查找。本例通过主键约束实现o_orderkey,其表示订单编号,o_totalprice表示订单金额,如表3-33所示。
表3-33 orders表结构
| orders | ||
| Column | o_orderkey | o_totalprice |
| Type | INTEGER | DOUBLE |
CREATE TABLE orders(
o_orderkey INTEGER PRIMARY KEY,
o_totalprice DOUBLE
);
接着进行数据插入操作,分别插入NULL值和重复值进行测试。具体SQL语句如下:
INSERT INTO orders(o_orderkey, o_totalprice) VALUES(0, 10.1);
INSERT INTO orders(o_orderkey, o_totalprice) VALUES(0, 20.2);
INSERT INTO orders(o_orderkey, o_totalprice) VALUES(NULL, 30.3);
INSERT INTO orders(o_orderkey, o_totalprice) VALUES(1, 40.4);
以上四条插入语句,第一条顺利插入;对于重复值报了“violates unique constraint”错误;对于NULL报了“violates not-NULL constraint”错误;第四条语句可以顺利执行。对于表中的记录,主键通过保证一个有效且唯一的数据,保证了实体完整性。所有语句执行结果字段状态如图3-7所示。

图3-7 SQL执行结果字段状态表
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




