如果想同时查找两个表中的数据应该怎么办呢?
oracle提供了几个连接的语法
SELECT table1.column,table2.column
FROM table1,table2
WHERE table1.column1=table2.column
其中from后面是多个表的表名,where后面是连接的条件,当多个表中有相同的字段时,把表名可以作为列名的前缀。
内连接
SELECT
emp.empno,emp.ename,emp.job,emp.mgr,emp.hiredate,emp.sal,emp.comm,emp.deptno,dept.dname
FROM emp,dept
WHERE emp.deptno=dept.deptno;
有些表的名字比较长,我们可以使用表别名,上面的代码可以修改为
SELECT
x.empno,x.ename,x.job,x.mgr,x.hiredate,x.sal,x.comm,x.deptno,y.dname
FROM emp x,dept y
WHERE x.deptno=y.deptno;
可以来提高效率
我们也可以继续添加一些条件
SELECT
emp.empno,emp.ename,emp.job,emp.mgr,emp.hiredate,emp.sal,emp.comm,emp.deptno,dept.dname
FROM emp,dept
WHERE emp.deptno=dept.deptno AND emp.deptno=20;

上面是oracle的语法,在ANSI SQL中内连接的标准语法是使用INNER
JION来连接两个表,通过ON子句来制定两个表的连接条件
SELECT
x.empno,x.ename,x.job,x.mgr,x.hiredate,x.sal,x.comm,x.deptno,y.dname
FROM emp x INNER JOIN dept y ON x.deptno=y.deptno;
得到上面一致的结果
SELECT
x.empno,x.ename,x.job,x.mgr,x.hiredate,x.sal,x.comm,x.deptno,y.dname
FROM emp x INNER JOIN dept y ON x.deptno=y.deptno
WHERE x.deptno=20;
同上。