加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 16:14:26 所属栏目:百科 来源:网络整理
导读:ORACLE多表连接查询 一.概念 1.主键 PRIMARY KEY 约束唯一标识数据库表中的每条记录。 a.主键必须包含唯一的值。 b.主键列不能包含 NULL 值。 b.每个表都应该有一个主键,并且每个表只能有一个主键。 2.外键 FOREIGN KEY 一个表中的 FOREIGN KEY 指向另一个

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读