查询使用Oracle外键完成多表联查(oracle外联)

## 查询使用Oracle外键完成多表联查

## 一、外键

在Oracle数据库中,外键是通过约束来实现的,它可以保证两个表中定义的关系是有效的。一般情况下,外键是定义在一个表中的一列或多列,可以引用另外一个表中某个字段的数据。

## 二、联表查询

多表查询(JOIN query)是一种查询数据来自于多个数据表的一种SQL语句,它利用多个数据表归结于一起,从而提取出用户需要的数据,从而可以更有效的利用数据库的结构,用来解决数据的隔离,同时还减少数据的冗余问题。

## 三、使用外键完成多表联查

使用Oracle外键完成多表联查时,需要在两个表中都首先设定好外键,可以通过以下SQL语句来查询:

“`sql

SELECT col1,col2,col3

FROM table1, table2

WHERE table1.fk_id = table2.pk_id


其中,table1是主表,table2是外表,fk_id是table1中的一个外键,pk_id是table2中的主键,这里外键和主键之间是一对一关系。

## 四、实例

假设存在`Person`和`AddressBook`两张表。

```sql
CREATE TABLE Person
(
id INTEGER PRIMARY KEY,
first_name VARCHAR(25) NOT NULL,
last_name VARCHAR(25),
address_book_id INTEGER
);

“`sql

CREATE TABLE ADDRESS_BOOK

(

id INTEGER PRIMARY KEY,

street VARCHAR(50) NOT NULL,

city VARCHAR(30) NOT NULL,

country VARCHAR(25) NOT NULL

);


从上面可以看出,`Person`表中的address_book_id与`AddressBook`表中的id进行相关联。这里address_book_id是Person表中外键,而id是AddressBook表中的主键。

要查询相关信息,可以使用以下查询语句:

```sql
SELECT p.id, p.first_name, p.last_name, a.street, a.city, a.country
FROM Person p, AddressBook a
WHERE p.address_book_id = a.id;

由此可知,可以通过查询使用Oracle外键完成多表联查,可以有效的减少数据的冗余问题,达到资源的有效调配。


数据运维技术 » 查询使用Oracle外键完成多表联查(oracle外联)