链接条件是不等号,不等值连接
select e.empno,e.ename,e.sal,s.grade
from emp e,salgrade s
where e.sal between s.losal and s.hisal;
select e.empno,e.ename,e.sal,s.grade
from emp e,salgrade s
where e.sal between s.hisal and s.losal;
*******************************************************
SQL> select * from salgrade;
GRADE LOSAL HISAL
---------- ---------- ----------
1 700 1200
2 1201 1400
3 1401 2000
4 2001 3000
5 3001 9999
SQL> select e.empno,e.ename,e.sal,s.grade
2 from emp e,salgrade s
3 where e.sal between s.losal and s.hisal;
EMPNO ENAME SAL GRADE
---------- ---------- ---------- ----------
7369 SMITH 800 1
7900 JAMES 950 1
7876 ADAMS 1100 1
7521 WARD 1250 2
7654 MARTIN 1250 2
7934 MILLER 1300 2
7844 TURNER 1500 3
7499 ALLEN 1600 3
7782 CLARK 2450 4
7698 BLAKE 2850 4
7566 JONES 2975 4
EMPNO ENAME SAL GRADE
---------- ---------- ---------- ----------
7788 SCOTT 3000 4
7902 FORD 3000 4
7839 KING 5000 5
已选择14行。
SQL> select e.empno,e.ename,e.sal,s.grade
2 from emp e,salgrade s
3 where e.sal between s.highsal and s.losal;
where e.sal between s.highsal and s.losal
*
第 3 行出现错误:
ORA-00904: "S"."HIGHSAL": 标识符无效
SQL> select e.empno,e.ename,e.sal,s.grade
2 from emp e,salgrade s
3 where e.sal between s.hisal and s.losal;
未选定行
不等值连接
示例:查询员工信息,要求显示:员工号、姓名、月薪、薪水的级别
select e.empno,e.ename,e.sal,s.grade
from emp e,salgrade s
where e.sal between s.losal and s.hisal;
between小值and大值
不等值连接
select e.empno,e.ename,e.sal,s.grade
from emp e,salgrade s
where e.sal between s.losal and s.hisal;
运用between and 查询条件 小值在前and 大值在后
select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal --用between小值在前
运用between and 查询条件 小值在前and 大值在后
select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal;
between and
必须小值在前,大值在后,若颠倒会出现未选定行错误。
对于between来说小值必须在左边,大值必须在右边。
select e.ename,e.sal,s.grade
from emp e,salgrade s
where e.sal between s.losal and s.hisal
1超过一张表就属于多表查询
2多表查询基于笛卡尔集
3.加上自己的筛选条件(等于连接 不等于连接 外连接 自连接)
between and,小值在前,大值在后
等值连接:连接条件后为等号
不等值连接:连接条件后不为等号