–省略连接条件 –连接条件无效 –所有表 –举例 查询名和表名随便起的,不要在意细节 “despasc_id”在两个表都存在
select Psion.employ_id,Psion.desp_id,Psion.despasc_id,section.despasc_id, section.desaa_name from Psion,section正确写法:
select Psion.employ_id,Psion.desp_id,Psion.despasc_id,section.despasc_id, section.desaa_name from Psion,section where Psion.despasc_id=section.despasc_id看起来舒服的写法:
select Psion.employ_id,Psion.desp_id,Psion.despasc_id,section.despasc_id, section.desaa_name from Psion e,section d where e.despasc_id=d.despasc_id整理后: 其实就是别名
select e.employ_id,e.desp_id,e.despasc_id,section.despasc_id, d.desaa_name from Psion e,section d where e.despasc_id=d.despasc_id举例:
//左外连接 select e.employ_id,e.desp_id,f.desp_name from employ e, fors f where e.desp_id=f.desp_id(+) //右外连接 select e.employ_id,e.desp_id,f.desp_name from employ e, fors f where e.desp_id(+)=f.desp_id内连接
select employ_id,desp_id,depament_name from emplpy join depaments using(desp_id) //这种写法必须列名一致,数据类型一致 //推荐 select employ_id,d.desp_id,depament_name from emplpy e join depaments d on e.desp_id=d.desp_id—举例 查询公司员工“zhangsan”的manager的信息
//该方法先获取manager_id select last_name,manager_id from employ where lower(last_name) ='zhangsan' //如果不知道字符串大小写 可lower(查询id) //然后使用 select last_name,salary,email from employ where emply_id=108 //不推荐–自连接
//推荐 select emp.last_name,manager.last_name,manager.salary, manager.email from employ emp, employ manager where emp.manager_id=manager.employe_id and lower(emp.last_name)='zhangsan'