실제 프로젝트에서는 여러 테이블 사이에 관계가 존재합니다. 하나의 테이블에 있는 모든 데이터를 검색하는 것은 불가능합니다. 테이블 연결이 없으면 많은 작업이 필요합니다. 예를 들어, 테이블 B에서 데이터를 검색하려면 테이블 A에서 제한 조건을 찾아야 합니다. 작동하려면 여러 테이블이 필요할 뿐만 아니라 그다지 효율적이지 않습니다. 예를 들어, 책의 예:
코드는 다음과 같습니다.
SELECT FId FROM T_Customer WHERE FName='MIKE'
이 SQL 문은 2, 즉 FId 값을 반환합니다. MIKE라는 고객은 2이므로 T_Order로 이동하여 FCustomerId가 2인 레코드를 검색할 수 있습니다.
코드는 다음과 같습니다.
SELECT FNumber,FPrice FROM T_Order WHERE FCustomerId=2
다음을 살펴보겠습니다. 테이블 연결을 자세히 설명합니다. 테이블 조인에는 크로스 조인(CROSS JOIN), 내부 조인(INNER JOIN), 외부 조인(OUTTER JOIN) 등 다양한 유형이 있습니다.
(1) INNER JOIN: 내부 조인은 두 테이블을 결합하여 두 테이블의 연결 조건을 만족하는 데이터만 얻는 것입니다.
코드는 다음과 같습니다:
SELECT o.FId,o.FNumber,o.FPrice, c.FId,c.FName,c .FAge FROM T_Order o JOIN T_Customer c ON o.FCustomerId= c.FId
참고: 대부분의 데이터베이스 시스템에서 INNER JOIN의 INNER는 선택 사항이며 INNER JOIN이 기본 연결 방법입니다. .
테이블 연결을 사용할 때, 두 개의 테이블만 연결하는 것에 국한되지 않습니다. 많은 테이블에 접속해야 하는 상황이 많기 때문입니다. 예를 들어, 필요한 정보를 검색하려면 T_Order 테이블도 T_Customer 및 T_OrderType 테이블에 연결되어야 합니다.
코드는 다음과 같습니다. #🎜 🎜#
SELECT o.FId,o.FNumber,o.FPrice, c.FId,c.FName,c .FAge FROM T_Order o JOIN T_Customer c ON o.FCustomerId= c.FId INNER JOIN T_OrderType ON T_Order.FTypeId= T_OrderType.FId
암시적 예를 살펴보겠습니다.
코드는 다음과 같습니다.
SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge, T_Order.FId, T_Order.FNumber, T_Order.FPrice FROM T_Customer, T_Order
명시적 연결을 사용하는 경우, CROSS JOIN을 사용해야 합니다. 예는 다음과 같습니다.
코드는 다음과 같습니다.
SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge, T_Order.FId, T_Order.FNumber, T_Order.FPrice FROM T_Customer CROSS JOIN T_Order
(3) 외부 연결(OUTTER JOIN): 내부 연결만 주로 이러한 시나리오를 해결하기 위해 연결 조건을 충족하는 데이터를 얻고 외부 연결의 경우. 조건을 충족하는 데이터가 검색된다는 것은 의심의 여지가 없습니다. 외부 연결은 데이터의 다른 부분도 검색하므로 조건을 충족하지 않는 데이터를 NULL로 채웁니다. 먼저 외부 조인의 분류를 살펴보겠습니다. 왼쪽 외부 조인(LEFT OUTER JOIN), 오른쪽 외부 조인(RIGHT OUTER JOIN), 완전 외부 조인(FULLOUTER JOIN).
I. LEFT OUTER JOIN: 앞서 언급했듯이 조건에 맞지 않는 데이터는 NULL로 채워집니다. 그러면 구체적으로 NULL로 채워야 하는 것은 무엇입니까? 연결 조건 중 왼쪽 테이블의 데이터가 오른쪽 테이블에 해당 일치 항목이 없는 경우 해당 오른쪽 테이블 필드는 다음과 같습니다. NULL 값으로 채워집니다. 즉, 왼쪽 외부 연결의 본체가 왼쪽 테이블이고 오른쪽 테이블이 이에 일치합니다.
코드는 다음과 같습니다:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o LEFT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
참고: 왼쪽 외부 연결을 사용하는 경우 where 문을 통해 비준수 데이터를 필터링할 수 있습니다.
# 🎜🎜#코드는 다음과 같습니다:SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o LEFT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId WHERE o.FPrice>=150
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o RIGHT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o FULL OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o LEFT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId UNION SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o RIGHT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
SELECT v.*,(SELECT a.name FROM admin2 a WHERE a.adminId=v.loadInId) AS aname,(SELECT a.name FROM admin2 a WHERE a.adminId=v.operatorId) AS uname FROM v_goods v where 1=1; SELECT v.*,a.name aname,b.name uname FROM v_goods v,admin2 a,admin2 b WHERE a.adminId=v.loadInId AND b.adminId=v.operatorId ; SELECT v.*,a.name aname,b.name uname FROM v_goods v LEFT JOIN admin2 a ON a.adminId=v.loadInId LEFT JOIN admin2 b ON b.adminId=v.operatorId ;
위 내용은 mysql 다중 테이블 연결 쿼리 작업 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!