쉼표 사용 또는 두 테이블 간의 조인의 차이점은 무엇입니까? 이들 두 코드로쉼표와 SQL의 조인의 차이점
: 당신이 준 특정 코드를 기반으로
SELECT studentId, tutorId FROM student, tutor;
SELECT studentId, tutorId FROM student JOIN tutor;
쉼표 사용 또는 두 테이블 간의 조인의 차이점은 무엇입니까? 이들 두 코드로쉼표와 SQL의 조인의 차이점
: 당신이 준 특정 코드를 기반으로
SELECT studentId, tutorId FROM student, tutor;
SELECT studentId, tutorId FROM student JOIN tutor;
을 실행 실제 차이가 없습니다를 수행 할 때 매우 중요하다, 결합 조건을 지정할 수 있지만, 가독성가된다 직장에서 일관성과 오류 완화 문제 :
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를 다른 것으로 변경하면 코드가 일관되게 생성됩니다.
이러한 "쉼표 조인"은 오래된 코드이므로 계속 지원되는 것은 아닙니다. 또한 읽기 쉽고 유연합니다. 전반적으로 사용하지 않는 것이 좋습니다. WHERE 절이 부정확하여 예상보다 훨씬 많은 행을 얻는 것은 쉽습니다. – Tobberoth
SQL Ansi 컨소시엄은 수십 년 동안 이러한 암시 적 조인 (쉼표)을 없애려고합니다. 그러나 많은 레거시 시스템과 많은 레거시 프로그래머가 있으며 그럴 가능성은 희박합니다. 명시 적 조인으로 가면 코드가 훨씬 명확 해집니다. – jean