ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**sql92语法:** - 只支持内连接:包括 1)等值连接 2)非等值连接(常用于对区间的判断) 3)自连接 - 查询条件与部分筛选条件都写在where关键字后面,可读性较差 **sql99语法:** - 支持内连接与外连接,连接条件写在on关键字后,之后的筛选条件可以正常写 <br> ## 3.1内连接 * 案例:查询每个工种、每个部门的部门名、工种名和最低工资(三表连接) ``` select d.department_name,j.job_title,min(salary) from employees e join departments d on e.department_id=d.department_id join jobs j on e.job_id=j.job_id group by j.job_title,d.department_name ``` * 案例:非等值连接 ``` select j.job_level,count(*) 个数 from employees e join job_grade j on e.salary between j.lowest_sal and j.highest_sal ``` * 案例:选择每个员工的姓名和他的管理者的姓名(自连接) ``` select e1.first_name,e2.first_name from employees e1 join employees e2 on e1.manager_id=e2.first_name ``` ## 3.2外连接(左外,右外,全外(MySql不支持),交叉连接(相当于笛卡尔积)) - 左外连接,已左表为主表,主表的信息都会出现,从表有信息则显示,没有则显示null值 - 右外连接,已右表为主表,主表的信息都会出现,从表有信息则显示,没有则显示null值 > 左外连接,右外连接可以互相转换 * 案例查询部门名为 SAL 或 IT 的员工信息 ``` SELECT d.department_name,e.* FROM departments d LEFT JOIN employees e on d.department_id=e.department_id WHERE d.department_name='SAL' or department_name='IT'; ``` ***********************************************************************************