读书人

oracle联接

发布时间: 2013-04-09 16:45:09 作者: rapoo

oracle连接

print?

1 两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行 ,这种连接称为左(右) 外联接。

2 两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行 ,这种连接称为满 外联接。

3

4

5

6 内连接

7

8 select empno,ename,sal,dname,loc from emp,dept

9

10 where emp.deptno=dept.deptno;

11

12

13 外连接

14

15 SELECT emp.column, dept.column --右外连接

16

17 FROM emp, dept

18

19 WHERE emp.column(+) = dept.column;

20

21 SELECT emp.column, dept.column --左外连接

22

23 FROM emp, dept

24

25 WHERE emp.column = dept.column(+);

26

27 外连接的符号是(+),(+)要放在字段名后。(+)对面的那个表,会全部显示。

28

29 左外连接时,加号在等号的右边

30

31 select d.dname,e.ename,e.deptno

32

33 from dept d,emp e

34

35 where d.deptno = e.deptno(+)

36

37 order by d.deptno;

38

39 右外连接

40

41 select empno, ename, job, sal, dept.deptno, dname, loc

42

43 2 from emp, dept

44

45 3 where emp.deptno(+) = dept.deptno;

46

47

48 满外联接

49

50 SELECT e.last_name, e.department_id, d.department_name

51 FROM employees e

52 FULL OUTER JOIN departments d

53 ON (e.department_id = d.department_id) ;

54

55

56 自连接:

57

58 把表自身的镜像当成另外一个表

59

60 SELECT worker.last_name || ' works for '

61 || manager.last_name

62 FROM employees worker, employees manager

63 WHERE worker.manager_id = manager.employee_id ;

64

65

66 笛卡尔集

67

68 笛卡尔集会在下面条件下产生:

69 省略连接条件

70 连接条件无效

71 所有表中的所有行互相连接

72 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件。

73 在实际运行环境下,应避免使用全笛卡

74

75

76 叉集

77

78

79 使用CROSS JOIN 子句使连接的表产生叉集。

80 叉集和笛卡尔集是相同的。

81

82

83 SELECT last_name, department_name

84 FROM employees

85 CROSS JOIN departments ;

86

87

88 自然连接

89

90 NATURAL JOIN 子句,会以两个表中具有相同名字的列为条件创建等值连接。

91 在表中查询满足等值条件的数据。

92 如果只是列名相同而数据类型不同,则会产生错误。

93

94

95 SELECT department_id, department_name,

96 location_id, city

97 FROM departments

98 NATURAL JOIN locations ;

99

100

101 使用 USING 子句创建连接

102

103 在NATURAL JOIN 子句创建等值连接时,可以使用 USING 子句指定等值连接中需要用到的列。

104 使用 USING 可以在有多个列满足条件时进行选择。

105 不要给选中的列中加上表名前缀或别名。

106 NATURAL JOIN 和 USING 子句经常同时使用。

107

108 SELECT e.employee_id, e.last_name, d.location_id

109 FROM employees e JOIN departments d

110 USING (department_id) ;

111

112

113 使用ON 子句创建连接

114

115 自然连接中是以具有相同名字的列为连接条件的。

116 可以使用 ON 子句指定额外的连接条件。

117 这个连接条件是与其它条件分开的。

118 ON 子句使语句具有更高的易读性。

119

120

121 SELECT e.employee_id, e.last_name, e.department_id,

122 d.department_id, d.location_id

123 FROM employees e JOIN departments d

124 ON (e.department_id = d.department_id);

125

126

127 使用 ON 子句创建多表连接

128

129

130 SELECT employee_id, city, department_name

131 FROM employees e JOIN departments d

132 ON d.department_id = e.department_id

133 JOIN locations l

134 ON d.location_id = l.location_id;

读书人网 >编程

热点推荐