oracle语句的级联问题,这个语句e.mgr=m.empno(+) 谁可以给我讲讲这个是什么意思还带有(+)详细解答哦!
发布网友
发布时间:2022-05-15 02:51
我来回答
共5个回答
热心网友
时间:2023-10-05 06:53
(+)是外连接,表示当前条件等号左侧的表为主表,如果等号条件成立,查询中如果有等号右侧表中的字段,按照关联条件查询出数据,如果右侧没有条件符合,那么查询中补空。
举个例子,假设emp和dept表数据如下:
emp: emp_id, emp_name, dept_id
001 张三 10
002 李四 10
003 王五 20
004 赵六 30
dept: dept_id dept_name
10 部门1
20 部门2
查询语句:select emp_id, emp_name, dept_name
from emp, dept
where emp.dept_id = dept.dept_id(+);
从上面两表能看出来,emp表中的最后一行数据,dept_id为30,在dept表没有对应的数据,使用直连(即不带加号)只能查询到前三行数据,可是使用外连,以emp为主表,那么emp表的数据就都可以查到。结果如下:
emp_id emp_name dept_name
001 张三 部门1
002 李四 部门1
003 王五 部门2
004 赵六 NULL(空,没有数据)
热心网友
时间:2023-10-05 06:54
一楼完全误导啊。。(+)真是外连接的意思,你这么写就相当于是左外连接,也就是e.mgr这个表的内容将全部被查询
第二个问题这写表是数据库的实例表,没有中文名,emp代表employer也就是雇员表,而dept代表的department也就是部门表
热心网友
时间:2023-10-05 06:54
这个(+)代表内连接的意思,举个例子 MGR字段对应的EMPNO字段如果没有数的话也显示结果。
例子:不使用(+)结果是:
mgr empno
cleck 7759
jobs 8792
cleck 8100
这样对显示2个字段都有值才显示。
如果加(+)
mgr empno
cleck 7759
jobs 8792
cleck 8100
linkes
-----linkes 对应的没有值但是也显示,+在那边那边就有无值.
热心网友
时间:2023-10-05 06:55
(+)是oracle的语法,相当于SQL99标准当中的LETF JOIN,RIGHT JOIN ,如果(+)出现在左连表示RIGHT JOIN ,出现在右连表示LEFT JOIN 。这种写法只限于oracle数据,如果迁移到其它数据库无法运行.
scott用户中有什么表建议用scott用户登录到数据库后执行以下语句:
SELECT object_name FROM user_objects WHERE object_type='TABLE'
热心网友
时间:2023-10-05 06:55
左连接。 employee department