inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

장래쌤과 함께하는 쉽고 재미있는 SQL 이야기

JOIN함수 질문입니다.

해결된 질문

261

deeir

작성한 질문수 5

1

안녕하세요.

현재 SQLD시험 공부를 하다가 의문점이 생겨 질문을 남깁니다.

강사님께서는 JOIN문에서

SELECT e.emp_id, e.emp_name, d.dept_name, e.phone

FROM employee AS e

JOIN department AS d ON e.dept_id = d.dept_id;

라고 코드를 작성해주셨는데

 

SQLD책에는

SELECT employee.emp_id, employee.emp_name department.dept_name, employee.phone

FROM employee, department

WHERE employee.dept_id = department.dept_id;

형식이라고 나와 있습니다.

WHERE은 '조건'으로 배웠는데,

JOIN문 사용하지 않고, 책에 나오듯이 WHERE만으로 JOIN을 해도 문제가 없나요?

 

sql mysql oracle dbms/rdbms mssql

답변 1

1

장래쌤

안녕하세요?

우선 두 쿼리문의 결과는 대부분 같습니다.

첫 번째 쿼리문, 즉 제가 강의에서 다룬 쿼리문은 ANSI SQL 표준을 따르는 명시적 조인 방식입니다. JOIN 구문을 사용함으로써 어떤 테이블이 어떻게 조인되는지 명확하게 표현됩니다. 조인의 조건이 ON 절에 명시적으로 표현되어 있어서, 나중에 쿼리를 수정하거나 디버깅할 때 좋습니다. 그리고 명시적 조인은 조인 조건을 빼먹는 실수를 방지해줍니다. 예를 들면 CROSS JOIN을 피할 수 있습니다.

두 번째 쿼리문은 비명시적 조인 방식을 사용합니다. 조인 조건이 WHERE 절에 명시되어 있습니다. 짧고 간결하게 작성될 수 있으며, 일부 오래된 데이터베이스 시스템 또는 간단한 쿼리에 적합할 수 있습니다. 하지만 대부분의 쿼리에서는 WHERE 절 내의 조인 조건과 필터 조건이 섞여 가독성이 저하될 수 있습니다. 또한 조인이 WHERE 절에 섞여 있어, 나중에 쿼리를 수정하거나 확장하는데 어려움을 겪을 수 있습니다. 그리고 조인 조건을 잘못 작성하거나 빼먹는 경우가 발생할 수 있으며, 이는 예기치 않은 CROSS JOIN으로 이어질 수 있습니다.

그래서 명시적 조인을 사용하는 첫 번째 쿼리 방식이 요즘의 SQL 작성법에 더 적합합니다. 이 방식은 쿼리의 의도를 분명히 하고, 가독성 및 유지보수성을 높여줍니다. 대부분의 데이터베이스 시스템과 SQL 표준에서는 명시적 조인을 권장하고 있습니다. 따라서, 저는 첫 번째 쿼리 사용을 강력히 추천합니다.

하지만, SQLD에서 다루는 쿼리문은 예전 방식의 쿼리문입니다. 그리고 ORACLE 데이터베이스를 기준으로 합니다. 저는 이게 마음에 들지 않습니다. 왜 특정 제품을 기준으로 시험을 보는지 모르겠어요. 아뭏든 SQLD 시험을 목표로 한다면, 적절하지 않더라도, SQLD 관련 책의 내용을 중심으로 공부하셔야 합니다. 하지만 실무에서는 첫 번째 방법을 사용하기를 다시 한번 권고합니다. 무슨 뜻인지 아시겠지요?^^

질문해 주셔서 감사합니다~

0

deeir

자세한 답변 덕분에 자세히 이해할 수 있었습니다!! 🙂

감사합니다~

간단한 오타 제보입니다.

0

3

0

큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.

0

19

1

실제 FK제약조건을 설정하지 않는이유

0

19

1

create view

0

121

2

json 배열 파싱

0

185

2

insert into 구문

0

171

2

PDF 자료 문의

0

140

2

집계 연산자에 대한 질문

0

125

1

array_agg 배열 해제

0

196

2

null 수강 관련 문의

0

108

1

테이블 생성 후 조건 수정 방법

0

265

2

주차별 데이터에서 전 주 데이터 가져오기

0

180

1

여러 컬럼 중 null값이 아닌 값 가져오기

0

428

1

누적 백분위 구하기 질문

0

731

1

Join 질문

0

174

1

pdf 문의드립니다

1

188

1

regexp like 에 특정 특수기호 포함

1

356

1

컬럼 안 공백 문자열 제외

1

226

1

USING 조인 질문드립니다.

0

312

2

ELT 함수와 FIELD함수 질문입니다.

0

313

1

뷰 변경 질문입니다.

0

335

2

[질문] 3. '다양한 데이터 집계 _ 심각할 수 있는 집계 함수와 NULL값의 관계' 수업 내용 질문

0

224

1

대문자 질문입니다!

0

206

1

mysql 설치 오류로 학습 불가

0

234

1