JOIN 연산자가 나타나기 위한 전제 조건
테이블의 데이터 양이 증가함에 따라 중복 값이 자주 나타납니다. 예를 들어 제품 테이블에는 브랜드 이름이 있습니다. 때때로 반복됩니다. 예를 들어 다음과 같은 데이터를 포함하는 별도의 브랜드 테이블을 갖는 것이 유용할 것입니다.
- ID - 브랜드 ID;
- 이름 – 브랜드 이름;
- company_owner - 브랜드 소유자 회사 이름
- company_contacts - 브랜드 소유자 회사의 연락처입니다.
그런 다음 모든 주소를 넣을 수 있는 주소 테이블을 만들고 싶습니다.
- id – id 주소;
- 국가;
- 지역;
- 도시;
- 거리;
- 집;
- 지퍼.
또한 이 테이블에는 브랜드 소유 회사의 주소뿐만 아니라 고객 및 직원의 주소도 저장할 수 있습니다. 그리고 이 접근 방식은 단순히 데이터 양(테이블의 행 수)이 증가한 결과입니다. 이렇게 하면 테이블의 데이터를 더 쉽게 조작하고 무결성을 유지할 수 있습니다.
직원이 5명일 경우 직업 열에 직업을 입력하면 됩니다 . 회사에 5,000명의 직원이 있는 경우 x 직업 목록과 해당 책임이 있는 테이블이 필요합니다.
그런데 Java 언어에도 비슷한 것이 있습니다. 메서드에 많은 코드가 있는 경우 이를 여러 메서드로 나누려는 욕구가 있습니다. 클래스에 메서드가 많으면 여러 클래스로 나누고 싶습니다.
이것이 대규모 데이터베이스에 수천 개의 테이블이 있는 이유입니다. 그리고 거의 모든 쿼리는 한 번에 여러 테이블에서 실행됩니다. 그리고 각각 1,000개의 레코드가 있는 3개 테이블 행의 데카르트 곱은 이미 10억 행입니다.
그러나 WHERE를 사용하여 10억 개의 행을 필터링하는 데 몇 시간이 걸릴 수 있습니다. 따라서 SQL 언어 작성자는 JOIN 연산자라는 솔루션을 제공했습니다.
JOIN 연산자 소개
JOIN 연산자는 테이블의 모든 행에 대한 데카르트 곱이 필요하지 않고 ID를 사용하여(또는 다른 방식으로) 서로 참조하는 서로 다른 테이블의 행을 스마트하게 접착하는 것을 SQL 서버에 명시적으로 알리는 데 사용됩니다. . 서버에는 JOIN 연산자를 사용하여 테이블 조인을 처리하는 별도의 알고리즘이 있으므로 이러한 작업을 훨씬 빠르게 수행할 수 있습니다. JOIN 연산자의 일반적인 형식은 다음과 같습니다.
table 1 JOIN table 2 ON condition
여기서는 테이블 table1 과 table2를 하나의 테이블로 결합하고 조인 기준으로 조건을 사용해야 한다고 말합니다 .
이전 예를 들어 보겠습니다.
SELECT * FROM employee, task WHERE emploee.id = task.emploee_id
그리고 JOIN 연산자를 사용하여 다시 작성합니다.
SELECT * FROM employee JOIN task ON emploee.id = task.emploee_id
우리의 경우 두 쿼리 모두 동일한 결과를 제공하지만 이는 쿼리가 매우 단순하기 때문입니다. 앞으로 WHERE를 사용하면 정확히 행 필터를 구축할 수 있으며 ON 뒤에 지정된 필터를 사용하면 테이블 연결을 위한 복잡한 스크립트를 작성할 수 있습니다. JOIN 문을 사용할 때 별칭(테이블 별칭)을 사용할 수도 있습니다. 예:
SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id