ORACLE数据库---多表链接查询

前端之家收集整理的这篇文章主要介绍了ORACLE数据库---多表链接查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

ORACLE多表连接查询

一.概念

1.主键 PRIMARY KEY

约束唯一标识数据库表中的每条记录。

a.主键必须包含唯一的值。

b.主键列不能包含 NULL 值。

b.每个表都应该有一个主键,并且每个表只能有一个主键。

2.外键 FOREIGN KEY

一个表中的FOREIGN KEY指向另一个表中的PRIMARYKEY

另一张表中与这张表的某个字段的类型及字段名相同的字段,一般是用作关联两张或两张以上的数据表时用的。

3.关系

外键一定是另外某个表的主键

例如: WHEREemp.deptno=dept.deptno

二.普通查询

概念:无条件的连表查询,会产生笛卡尔积

范例:

SELECT * FROM emp,dept

三.内连接查询 重点

连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

1、等值连接

在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

语法:

SELECT column_name(s)

FROM table1,table2

WHERE table1.column_name=table2.column_name

说明:

在表中应存在至少一个匹配时,才会关键字返回行。

2、自连接

自己和自己的镜像进行比较,使用内连接或外连接把一个表中的行同该表中另外一些行连接起来.

SELECT ta.column_name,tb.column_name

FROM table1 ta,table1 tb

WHERE ta.column_name1=tb.column_name2

说明:

它主要用在查询比较相同的信息。为连接同一个表,必须为该表在FROM子句中指定两个别名,这样才能在逻辑上把该表作为两个不同的表使用。

四.外连接查询 重点

概念:即在等值连接的基础上,加上被连接表的不匹配数据.

1.左连接

从左表(table1)那里返回所有的行,即使在右表(table2)中没有匹配的行。

语法:

SELECT *

FROM table1,table2

WHERE table1.column_name=table2.column_name(+)

2.右连接

从右表(table2)那里返回所有的行,即使在左表(table1)中没有匹配的行。

语法:

SELECT *

FROM table1,table2

WHERE table1.column_name(+)=table2.column_name

五.1999语法(了解)

(一)内连接

1.等值连接

关键字:INNER JOIN ...ON

SELECT column_name(s)

FROM table_name1

INNER JOIN table_name2

ON table_name1.column_name=table_name2.column_name

(二)外连接

2.左(外)连接

关键字:LEFT {OUTER}JOIN ...ON

SELECT column_name(s)

FROM table_name1

LEFT {OUTER}JOIN table_name2

ON table_name1.column_name=table_name2.column_name

3.右(外)连接

关键字:RIGHT {OUTER}JOIN ...ON

SELECT column_name(s)

FROM table_name1

RIGHT {OUTER}JOIN table_name2

ON table_name1.column_name=table_name2.column_name

4.交叉连接(CROSS JOIN)

产生笛卡尔积

范例:

SELECT * FROMempCROSSJOINdept;

5.自然连接(NATURAL JOIN)

自动进行关联字段的匹配

范例:

SELECT * FROM emp NATURALJOIN dept;

(三)子句

1.USING

直接指定关联的操作列

范例:

SELECT * FROMemp eJOIN dept dUSING(deptno);

SELECT * FROMemp eJOIN dept dUSING(deptno)WHERE deptno=20;

2.ON

表示用户自己编写连接的条件

范例:

SELECT * FROMemp e

JOIN dept d ON(e.deptno=d.deptno)WHERE e.deptno=20;

原文链接:https://www.f2er.com/oracle/213454.html

猜你在找的Oracle相关文章