강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của deeir6802
deeir6802

câu hỏi đã được viết

Câu chuyện SQL dễ dàng và thú vị cùng thầy Jangrae

JOIN함수 질문입니다.

Đã giải quyết

Viết

·

254

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을 해도 문제가 없나요?

 

sqlmysqloracledbms/rdbmsmssql

Câu trả lời 1

1

jangrae님의 프로필 이미지
jangrae
Người chia sẻ kiến thức

안녕하세요?

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

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

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

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

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

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

deeir님의 프로필 이미지
deeir
Người đặt câu hỏi

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

감사합니다~

Hình ảnh hồ sơ của deeir6802
deeir6802

câu hỏi đã được viết

Đặt câu hỏi