자연 조인
테이블을 조인할 때마다 둘 이상의 테이블에 나타나는 열(조인된 열)이 하나 이상 있어야 합니다. 표준 조인(이전 장에서 소개한 내부 조인)은 동일한 열이 여러 번 나타나는 경우에도 모든 데이터를 반환합니다. 자연 조인은 여러 항목을 제외하므로 각 열은 한 번만 반환됩니다.
이 작업을 수행하는 방법은 무엇입니까? 대답은 시스템이 작업을 수행하는 것이 아니라 사용자가 직접 수행한다는 것입니다. 자연 조인은 해당 고유 열만 선택할 수 있는 조인입니다. 이는 일반적으로 한 테이블에 와일드카드( SELECT * )를 사용하고 다른 모든 테이블의 열에 명시적 하위 집합을 사용하여 수행됩니다. 예는 다음과 같습니다.
입력:
select c.*,o.order_num,o.order_date,oi.prod_id,oi.quantity,oi.item_price from customers as c,orders as o,orderitems as oi where c.cust_id = o,cust_id and oi.order_num = o.order_num and prod_id = 'FB';
분석: 이 예에서는 와일드카드가 첫 번째 테이블에만 사용됩니다. 다른 모든 열은 명시적으로 나열되므로 중복된 열은 검색되지 않습니다.
사실 지금까지 우리가 만들어 온 모든 내부 연결은 자연스러운 연결이고, 자연스러운 연결이 아닌 내부 연결은 절대 사용하지 않을 가능성이 높습니다.
외부 조인
한 테이블의 행을 연관된 다른 테이블의 행과 결합하는 많은 조인입니다. 그러나 때로는 관련 행이 없는 행을 포함해야 하는 경우도 있습니다. 예를 들어 다음 작업을 완료하려면 조인을 사용해야 할 수 있습니다.
1. 아직 주문하지 않은 고객을 포함하여 각 고객이 주문한 수를 계산합니다.
2. 아직 주문하지 않은 제품을 포함한 모든 제품 및 주문 수량을 나열합니다.
3. 아직 주문하지 않은 고객을 포함하여 평균 판매량을 계산합니다.
위 예에서 조인에는 관련 테이블에 관련 행이 없는 행이 포함되어 있습니다. 이러한 유형의 조인을 외부 조인이라고 합니다.
다음 SELECT 문은 간단한 내부 조인을 제공합니다. 모든 고객과 주문을 검색합니다.
입력:
select customers.cust_id,orders.order_num from customers inner join orders on customers.cust_id = orders.cust_id;
출력:
분석: 이전 장에서 본 내부 조인과 유사하게 이 SELECT 문은 OUTER JOIN 키워드를 사용하여 조인 유형을 지정합니다(WHERE 하위 지정 대신). 문장에서). 그러나 두 테이블의 행을 연결하는 내부 조인과 달리 외부 조인에는 관련 행이 없는 행도 포함됩니다. OUTER JOIN 구문을 사용할 때 RIGHT 또는 LEFT 키워드를 사용하여 모든 행을 포함하는 테이블을 지정해야 합니다. (RIGHT는 OUTER JOIN의 오른쪽에 있는 테이블을 나타내고 LEFT는 OUTER JOIN의 왼쪽에 있는 테이블을 나타냅니다.) 외부 조인). 위의 예에서는 LEFT OUTER JOIN을 사용하여 FROM 절의 왼쪽 테이블(고객 테이블)에서 모든 행을 선택합니다. 오른쪽 테이블의 모든 행을 선택하려면 다음 예와 같이 RIGHT OUTER JOIN을 사용해야 합니다.
Input:
select customers.cust_id,orders.order_num from customers right outer join orders on orders.cust_id = customers.cust_id;
without *= 연산자: MySQL은 다른 DBMS에서 널리 사용되는 연산자인 단순화된 문자 *= 및 =*의 사용을 지원하지 않습니다.
외부 조인의 유형: 외부 조인에는 왼쪽 외부 조인과 오른쪽 외부 조인의 두 가지 기본 형태가 있습니다. 이들 간의 유일한 차이점은 관련 테이블의 순서입니다. 즉, FROM 또는 WHERE 절에서 테이블의 순서를 반대로 하여 왼쪽 외부 조인을 오른쪽 외부 조인으로 변환할 수 있습니다. 따라서 두 가지 유형의 외부 조인을 서로 바꿔서 사용할 수 있으며 어느 것을 사용할지는 순전히 편의의 문제입니다.
위 내용은 mysql 고급 조인-자연 조인, 외부 조인 사용 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!