编写SQL查询来查找IBM DB2 for Linux和Windows数据库中的外键关系

当一个数据库中存在大量外键约束时,您可能发现难以可视化表之间的外键关系。本文将探讨如何编写 SQL 查询来查找 DB2 for Linux, UNIX, and Windows 中的外键关系。

文中将讨论以下变体。

给定一个外键父表,返回 RI(参照
完整性)子表和后代表,以及从附表到这些子表和后代表的 RI 关系路径。 修改所提供的查询,以返回数据库中所有表的结果。

样例模式

清单 1 中所示的样例模式将用于本文中的示例。

清单 1. 样例模式

set schema newton; create table grandparent (i1 int not ">null primary key, i2 int, i3 int);create table parent (i1 int not null primary key, i2 int);create table parent2 (i1 int not null primary key, i2 int);create table child (i1 int not null primary key, i2 int, i3 int);create table grandchild (i1 int not null primary key, i2 int, i3 int); alter table parent add constraint fkp1 foreign key (i2) references grandparent;alter table parent2 add constraint fkp2 foreign key (i2) references grandparent;alter table child add constraint fk1 foreign key (i2) references parent;alter table child add constraint fk2 foreign key (i3) references parent2;alter table grandchild add constraint fk3 foreign key (i2) references child;alter table grandchild add constraint fk4 foreign key (i3) references parent2; create table gp (i1 int not null, i2 int not null, i3 int, primary key (i1, i2));create table p1 (i1 int not null primary key, i2 int, i3 int);create table c11 (i1 int not null primary key, i2 int);create table c12 (i1 int not null primary key, i2 int); alter table p1 add constraint fkp1 foreign key (i2, i3) references gp;alter table c11 add constraint fkc11 foreign key (i2) references p1;alter table c12 add constraint fkc12 foreign key (i2) references p1;alter table gp add constraint fkgp1 foreign key (i2) references c12; create table self (i1 int not null primary key, i2 int);alter table self add constraint fk_self foreign key (i2) references self;

时间: 2024-09-21 07:52:33

编写SQL查询来查找IBM DB2 for Linux和Windows数据库中的外键关系的相关文章

如何通过IBM DB2 for Linux、UNIX和Windows支持250000次SQL查询

2011 年的黑色星期五,美国顶尖零售商如何通过 IBM DB2 for Linux.UNIX 和 Windows 每秒钟成功支持 250,000 次 SQL 查询. 黑色星期五(美国感恩节过后的星期五)是零售商一年之中最繁忙的一天.这一天之后紧跟着网络星期一和另外几天活动高峰期.在此期间,零售商的网站性能对于全年盈利至关重要.几大领先零售商纷纷选用 IBM® http://www.aliyun.com/zixun/aggregation/3914.html">Commerce Serve

IBM DB2 pureScale集群化数据库架构和技术概述

本系列文章共分为两个部分,第 1 部分介绍了 DB2 pureScale 的架构和技术,第 2 部分将介绍 DB2 pureScale 应用程序配置. 持续可用性.应用程序集群透明度和极限容量:无论在怎样的市场营销资料中,这些热门关键词总是与 IBM DB2 pureScale 密不可分.但它们真正的含义是什么? DB2 pureScale 绝不只是一项特性,而是一种观察 DB2 数据库的全新方式.您在http://www.aliyun.com/zixun/aggregation/11872.h

如何区分SQL数据库中的主键与外键_MsSql

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

如何区分SQL数据库中的主键与外键

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

select-两表有外键关系,但没有外键约束,根据A 表ID 查找B 表

问题描述 两表有外键关系,但没有外键约束,根据A 表ID 查找B 表 Select s.ID as SID,s.NAME as SNAME,d.ID as DID,d.NAME as DNAME,d.SEQ as DSEQ,d.SYSDATE as DSYSDATE,d.ISACTIVES as DISACTIVES From TSPC as s,TSPCDETAIL as d where s.ID=d.SPECID and SID=#{SID},根据id 查找 TSPCDETAIL 可以这样写

sql server中的外键约束

server sql server中建立外键约束有3中方式:1.Enterprise Manager中,Tables,Design Table,设置Table的properties,   可以建立constraint, reference key;2.Enterprise Manager中,Diagrams, new Diagrams,建立两个表的关系.3.直接用transact sql语句. 三个方法都需要先建立数据表.-- 创建表author :CREATE TABLE [dbo].[aut

用java编写代码,实现将多套试题,读入mysql数据库中

问题描述 用java编写代码,实现将多套试题,读入mysql数据库中 我想做一个自动生成试卷的系统,供教师使用,想把多套试卷录入数据库,用java编写代码,实现将多套试题,读入mysql数据库中 解决方案 自动生成试卷,需要做一个题库吧.通过题库的随机算法生成新的试卷 解决方案二: 是将一套样题的卷子拆解成若干道题目吗?首先要实现拆分啊,好像有点难...不如上网上直接找题目来的快 解决方案三: 是的,需要做题库,试题录入题库.试卷从中随机取出.. 解决方案四: 嗯,我已经将几套试题按题型录入数据

SQL Server 2008与IBM DB2对比

Microsoft SQL Server 2008提供了更好的性能和扩展性.高有效性.行业领先的安全性.更容易的管理能力.提高的开发人员生产力.领先的商业智能和数据仓储能力.一个用于主机OLTP的平台和SAP集成--所有这些都以低于IBM DB2的总体拥有成本提供.基于此,许多公司从DB2移植到了SQL Server.目前SQL Server在新的关系型数据库管理系统许可证市场中所占的份额高于DB2. 对比方面 · 总体拥有成本(TCO)和ROI · 性能和可扩展性 · 高有效性 · 安全性 ·

Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)_Android

由于考虑到数据库的安全性,不被轻易SQL注入,执行查询语句时,一般不使用直接拼接的语句,而是使用参数传递的方法.然后在使用参数传递的方法中时,发现当使用like方式查询数据时,很容易出现一个问题. 错误案例: 复制代码 代码如下: String myname = "abc";String sql = "select * from mytable where name like '?%'";Cursor cursor = db.rawQuery(sql, new St