2013-12-09 2 views
6

쉼표 사용 또는 두 테이블 간의 조인의 차이점은 무엇입니까? 이들 두 코드로쉼표와 SQL의 조인의 차이점

: 당신이 준 특정 코드를 기반으로

SELECT studentId, tutorId FROM student, tutor; 


SELECT studentId, tutorId FROM student JOIN tutor; 
+0

이러한 "쉼표 조인"은 오래된 코드이므로 계속 지원되는 것은 아닙니다. 또한 읽기 쉽고 유연합니다. 전반적으로 사용하지 않는 것이 좋습니다. WHERE 절이 부정확하여 예상보다 훨씬 많은 행을 얻는 것은 쉽습니다. – Tobberoth

+1

SQL Ansi 컨소시엄은 수십 년 동안 이러한 암시 적 조인 (쉼표)을 없애려고합니다. 그러나 많은 레거시 시스템과 많은 레거시 프로그래머가 있으며 그럴 가능성은 희박합니다. 명시 적 조인으로 가면 코드가 훨씬 명확 해집니다. – jean

답변

4

을 실행 실제 차이가 없습니다를 수행 할 때 매우 중요하다, 결합 조건을 지정할 수 있지만, 가독성가된다 직장에서 일관성과 오류 완화 문제 :

SELECT col1, col2 
FROM tab1, tab2, tab3,tab4 
WHERE tab1.id=tab2.tab1_id 
AND tab4.id = tab2.tab3_id 
AND tab4.id = tab3.tab4_id; 
01 :

당신은 끝낼 것이다, 당신은 내부 조인하기의 구식 방법을 사용하는 경우 4 개 테이블 했다 상상 명시 적 INNER를 사용 23,516,

는 것 조인

SELECT col1, col2 
FROM tab1 
INNER JOIN tab2 ON tab1.id = tab2.tab1_id 
INNER JOIN tab3 ON tab3.id = tab2.tab3_id 
INNER JOIN tab4 ON tab4.id = tab3.tab4_id; 

후자는 바로이 함께 가입 정확히 테이블 앞에을 보여줍니다. ON 절을 넣는 것을 잊어 버리기가 쉽기 때문에 WHERE에 다른 AND를 추가하거나 잘못된 조건을 모두 추가하는 것보다 가독성이 향상되고 오류가 발생하지 않습니다 (위의 쿼리 에서처럼).

또한 다른 유형의 JOINS를 작성하고 명시 적으로 작성하는 경우 INNER를 다른 것으로 변경하면 코드가 일관되게 생성됩니다.

2

모든에서 차이가 없다.

은 그러나, JOIN 운영자 구문을 사용하여, 당신은, LEFT JOIN의 또는 RIGHT JOIN

+0

실제 차이점이 하나뿐이기 때문에 조인은 조건절보다 먼저 평가됩니다. 외부 파트너가 다른 결과를 초래하는 매우 드문 경우가 있습니다. – jean