当前位置:网站首页>SQL learning notes nine connections 2

SQL learning notes nine connections 2

2022-07-01 06:35:00 Small dollar

Equivalent connection vs Non equivalent connection

SELECT last_name,salary ,job_grades.grade_level from employees,job_grades
WHERE employees.salary >= job_grades.lowest_sal AND employees.salary < job_grades.highest_sal;

External connection , Internal connection

The left outer join , Right connection
-sql 92 Syntax implementation external connection
SELECT a.first_name,a.employee_id,a.department_id FROM employees a ,departments b
WHERE a.department_id = b.department_id(+);
-mysql I won't support it sql92 grammar -

-99 Syntax left outer join

SELECT a.first_name,a.employee_id,a.department_id FROM employees a LEFT OUTER JOIN departments b
ON a.department_id = b.department_id;
outer Can be omitted
The left outer connection shows the whole picture on the left
The right outer connection is the whole picture on the right

union

because sql in full join You can't use , Therefore use union Take the union of two tables

  • union all Two graphs a Map and b Figure merge , There is an extra copy of the repeated part , Although redundant , But in the development, try to use union all

 Insert picture description here

Chinese : Internal connection
SELECT a.first_name,a.employee_id,a.department_id FROM employees a JOIN departments b
ON a.department_id = b.department_id;

Top left
SELECT a.first_name,a.employee_id,a.department_id FROM employees a LEFT JOIN departments b
ON a.department_id = b.department_id;

Top right
SELECT a.first_name,a.employee_id,a.department_id FROM employees a RIGHT JOIN departments b
ON a.department_id = b.department_id;

Middle left

SELECT a.first_name,a.employee_id,a.department_id FROM employees a LEFT JOIN departments b
ON a.department_id = b.department_id
WHERE a.department_id = NULL;

Middle right

SELECT a.first_name,a.employee_id,a.department_id FROM employees a RIGHT JOIN departments b
ON a.department_id = b.department_id
WHERE b.deparment_id = NULL;

Full outer join
Top left UNION ALL Middle right
SELECT a.first_name,a.employee_id,a.department_id FROM employees a LEFT JOIN departments b
ON a.department_id = b.department_id;
UNION ALL
SELECT a.first_name,a.employee_id,a.department_id FROM employees a RIGHT JOIN departments b
ON a.department_id = b.department_id
WHERE b.deparment_id = NULL;

原网站

版权声明
本文为[Small dollar]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/182/202207010620432164.html