数据库中,如果将所有的数据都存放到一张表中,会存在表结构不清晰、扩展性差等问题。因此需要设计多张表,通过外键(FOREIGN KEY)处理表之间的关系。一张表的FOREIGN KEY指向另一张表的PRIMARY KEY。
以表3-33 orders表结构为例,首先创建orders表。接着创建lineitem表,表示在线商品的信息,其中l_orderkey为FOREIGN KEY,表示订单编号,指向orders表的o_orderkey,如图3-8所示。
图3-8 orders、lineitem双表关系结构
执行下面的SQL语句,创建lineitem表。
CREATE TABLE lineitem(
l_orderkey INTEGER,
l_tax DOUBLE,
FOREIGN KEY (l_orderkey) REFERENCES orders(o_orderkey)
);
创建lineitem表之后,执行下面的SQL语句,插入数据:
INSERT INTO lineitem(l_orderkey, l_tax) VALUES(1, 2.34);
INSERT INTO lineitem(l_orderkey, l_tax) VALUES(2, 2.34);
实例中,插入(1,2.34)成功,但插入(2,2.34)失败。这是因为在执行操作的时候,数据库系统通过外键约束从orders表检查l_orderley对应的外键o_orderkey中的值,在存在记录{1}时接受了操作请求;在不存在记录{2}时,拒绝了操作请求。这样就保证了lineitem表中的每条记录在orders中都有对应的数据存在,即维护了引用完整性。实例中SQL语句执行结果状态如图3-9所示。

图3-9 SQL执行结果字段状态表
以表3-33 orders表结构为例,首先创建orders表。接着创建lineitem表,表示在线商品的信息,其中l_orderkey为FOREIGN KEY,表示订单编号,指向orders表的o_orderkey,如图3-8所示。

执行下面的SQL语句,创建lineitem表。
CREATE TABLE lineitem(
l_orderkey INTEGER,
l_tax DOUBLE,
FOREIGN KEY (l_orderkey) REFERENCES orders(o_orderkey)
);
创建lineitem表之后,执行下面的SQL语句,插入数据:
INSERT INTO lineitem(l_orderkey, l_tax) VALUES(1, 2.34);
INSERT INTO lineitem(l_orderkey, l_tax) VALUES(2, 2.34);
实例中,插入(1,2.34)成功,但插入(2,2.34)失败。这是因为在执行操作的时候,数据库系统通过外键约束从orders表检查l_orderley对应的外键o_orderkey中的值,在存在记录{1}时接受了操作请求;在不存在记录{2}时,拒绝了操作请求。这样就保证了lineitem表中的每条记录在orders中都有对应的数据存在,即维护了引用完整性。实例中SQL语句执行结果状态如图3-9所示。

图3-9 SQL执行结果字段状态表
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年3月国产数据库大事记
墨天轮编辑部
521次阅读
2025-04-03 15:21:16
内蒙古公司成功完成新一代BOSS云原生系统割接上线
openGauss
192次阅读
2025-03-24 09:40:40
第4期 openGauss 中级认证OGCP直播班招生中!3月30日开课
墨天轮小教习
155次阅读
2025-03-17 15:48:40
openGauss 7.0.0-RC1 版本正式发布!
Gauss松鼠会
127次阅读
2025-04-01 12:27:03
openGauss 7.0.0-RC1 版本体验:一主一备快速安装指南
孙莹
107次阅读
2025-04-01 10:30:07
从数据库源码比较 PostgreSql和OpenGauss的启动过程
maozicb
77次阅读
2025-03-24 15:55:04
一文快速上手openGauss
进击的CJR
71次阅读
2025-03-26 16:12:54
openGauss HASH JOIN原理
lbsswhu
59次阅读
2025-03-18 10:45:01
openGauss 学习之路:集群部署实战探索
openGauss
49次阅读
2025-03-21 10:34:13
openGauss问题记录:开启备机归档且备机stop情况下,执行gs_probackup失败
zym
42次阅读
2025-03-18 19:06:13