programing

SQL에서 ON 절과 using 절의 차이

telebox 2023. 7. 16. 13:16
반응형

SQL에서 ON 절과 using 절의 차이

저는 오라클에서 조인과 관련된 과제를 하고 있습니다.어떤 점에서 저는 USING과 ON 조항의 차이점이 무엇인지 고수했습니다.

ON 조항을 사용하면 무제한 테이블에 가입할 수 있는 것으로 알고 있습니다.USING 절을 사용하여 무제한 테이블에 가입하는 것이 가능합니까? 어떻게 합니까? 예를 들어 설명해 주시겠습니까?

  • USING절:이렇게 하면 이름으로 조인 키를 지정할 수 있습니다.

  • ON절:이 구문을 사용하면 두 테이블 모두에서 조인 키의 열 이름을 지정할 수 있습니다.

USING 절

USING 절은 여러 개의 열이 동일한 이름을 공유하지만 이러한 공통 열을 모두 사용하여 가입하지 않으려는 경우에 사용됩니다.USING 절에 나열된 열에는 WHERE 절을 포함하여 문에 한정자를 둘 수 없습니다.

ON 절

ON 절은 두 테이블에서 열 이름이 일치하지 않는 테이블을 조인하는 데 사용됩니다.조인 조건은 WHERE 절의 필터 조건에서 제거됩니다.

오라클

select department_name, city
from departments
JOIN locations
USING (location_id); -- specify the same column name 
                     -- for both of the tables for the join
select department_name, city
from departments dept
join locations loc
on (dept.location_id = loc.id); -- specify different column name 
                                -- for the tables for the join.

위의 답변 외에도 중요한 차이점은 ON 절이 조인된 각 테이블의 열을 개별적으로 보존한다는 점입니다. USING 절은 조인된 테이블의 열을 단일 열로 병합합니다.이는 예를 들어 결합된 테이블 중 하나에 일치하는 행이 없는 경우에만 결과 집합에 행을 유지하려는 경우에 중요할 수 있습니다.이를 위해 일반적으로 다음과 같은 WHERE 절의 조건과 함께 OUTER JOIN을 사용합니다.

SELECT t1.*
  FROM TABLE_1 t1
  LEFT OUTER JOIN TABLE_2 t2
    ON (t2.KEY_FIELD = t1.KEY_FIELD)
  WHERE t2.KEY_FIELD IS NULL

이 경우 TABLE_2로 가정합니다.KEY_FIELD는 TABLE_2의 기본 키에 속하므로 데이터가 TABLE_2에 실제로 있는 경우에는 절대 NULL이 될 수 없습니다.만약, 위 조인 후 TABLE_2.조인된 집합에 KEY_FIELD가 NULL을 포함하고 있습니다. 즉, 해당 TABLE_1 행과 일치하는 TABLE_2 행이 없습니다.이것은 때때로 유용할 수 있습니다.

공유하고 즐기세요.

위의 답변에 대한 추가 정보.

using절은 조인된 열을 한 번만 인쇄합니다.

A.id  B.id
1      1
2      2
3      3

Select * from A JOIN B using(id);

출력은 다음과 같습니다.

id
1
2
3

그러나 On 절에서

Select * from A JOIN B on A.id=B.id;

출력은.

id     id
1      1
2      2
3      3

둘 다 "무제한" 테이블을 결합할 수 있습니다.차이점은 사용 시 조인 열의 이름이 동일해야 한다는 것입니다.

select emp.ename, dept.dname
from emp join dept using (deptno);

ON 버전은 조인 열의 이름이 다른 경우에도 작동합니다.

select emp.ename, emp2.ename manager_name
from emp join emp emp2 on (emp.mgr = emp2.empno);

USING절:

SELECT * FROM COUNTRIES JOIN CITIES USING (COUNTRY)

위의 쿼리는 다음 사이에서 내부 조인을 수행합니다.COUNTRIES과 식과그탁그CITIES 조건으로 한 표COUNTRIES.COUNTRY 와같과 .CITIES.COUNTRY

ON절:

SELECT * FROM COUNTRIES JOIN CITIES ON (COUNTRIES.COUNTRY = CITIES.COUNTRY)

위 쿼리는 on 절을 사용하여 내부 조인 작업을 수행합니다.

SELECT s.SID, s.SNAME, a.CNAME, c.MAJOR
FROM STUDENT s JOIN COLLEGE c
ON s.SID = c.SID;

SELECT SID, s.SNAME, a.CNAME, a.MAJOR
FROM STUDENT s JOIN COLLEGE c
USING (SID);

USING추가:이렇게 하면 이름으로 조인 키를 지정할 수 있습니다.

ON두 테이블 모두에서 조인 키의 열 이름을 지정할 수 있습니다.

On만 아니라 뿐아라니만절▁as▁clause라.Using절은 동일한 작업을 수행하지만 열 이름이 동일하면 다음을 수행합니다.USING그렇지 않으면 열 이름이 동일하지 않으면 다음으로 이동합니다.ON

언급URL : https://stackoverflow.com/questions/10432107/difference-between-on-clause-and-using-clause-in-sql

반응형