查詢的時候加入等值條件
有兩個表employees和departments,現在要查詢employees的Last_name和對應的departments的id
SQL> select last_name name,e.department_id eid,d.department_id did,d.department_name from employees e,departments d where e.department_id=d.department_id;輸出:
------------------------------------- ---------- NAME EID DID DEPARTMENT_NAME------------------------------------- ----------Higgins 110 110 Accounting....106 rows selected.注意這里的輸出是 106 條記錄,是因為左邊的表 有一條記錄按照where的條件在右邊的表沒有找到,此情況需要用到外連接查詢
查詢employees的員工last_name,employee_id,salary grades_level(薪資等級)
SQL> select employee_id,last_name,salary,grade_level 2 from employees e,job_grades j 3 where e.salary between j.lowest_sal and j.highest_sal;輸出:
--------------------- ------------------- ---------EMPLOYEE_ID LAST_NAME SALARY GRADE_LEV-------------------------------------------- --------- 101 Kochhar 17000 E....左外連接:左邊的值在右邊沒有對應的值,仍然顯示該值; 相反右外連接就是右表的值在左表沒有對應的值,仍然顯示該值;
SQL> select last_name name,e.department_id eid,d.department_id did,d.department_name from employees e,departments d where e.department_id=d.department_id(+);輸出:
------------------------------------- ---------- NAME EID DID DEPARTMENT_NAME------------------------------------- ----------Higgins 110 110 Accounting....107 rows selected.此時,結果就有了107條記錄了 此時,問題出現了,我們想讓左表和右表都顯示對方沒有的數據,這個時候不能再使用(+)
操作了,需要引入sql 1999語法
使用join
,on
關鍵字可以實現和上面同樣的功能
join
表示鏈接兩張表 on
表示 限制條件
在join
之前使用 left outer
或者rigth outer
或full outer
分別表示左外連接,右外連接,滿外連接(可以吧左右兩張表都不對應的數據全部顯示出來)
要求:查詢公司中員工的老板的信息,因為老板也在員工表,所以是自連接
select emp.last_name,manager.last_name,manager.salary from employees emp,employees manager where emp.manager_id = manager.employee_id and lower(emp.last_name) = 'chen';輸出:
--------------------------------------------------LAST_NAME LAST_NAME SALARY--------------------------------------------------Chen Greenberg 12000---------------...新聞熱點
疑難解答