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
'programing' 카테고리의 다른 글
C에서 문자열로 변환 (0) | 2023.07.16 |
---|---|
역할 환경을 호출할 때 SHE 예외가 발생하는 이유는 무엇입니까?구성 설정 값("MYKEY")을 가져오시겠습니까? (0) | 2023.07.16 |
mysql은 오라클의 "분석 기능"과 동등합니까? (0) | 2023.07.16 |
임시 테이블에서 필드 이름을 검색하는 방법(SQL Server 2008) (0) | 2023.07.16 |
마이크로서비스 롤백 방법 (0) | 2023.07.16 |