본 글은 주로 Mysql 조인 연산 관련 내용을 소개하고 있으니 필요한 친구들은 참고하시면 됩니다.
조인 종류
1 . 내부 조인(Inner Join): 두 테이블의 필드에 조인 관계가 있고 조인 관계와 일치하는 레코드를 결합하여 레코드 세트를 구성하는 조인입니다.
2. 외부 조인: 외부 왼쪽 조인과 외부 오른쪽 조인으로 구분됩니다.
사례 배경
create table java (name varchar(255)); insert into java values ('java1'),('java2'),('blue'); create table mysql (name varchar(255)); insert into mysql values ('mysql1'),('mysql2'),('blue');
Inner Join
select * from java,mysql where java.name=mysql.name; SELECT * FROM java JOIN mysql ON java.name=mysql.name; SELECT * FROM java INNER JOIN mysql ON java.name=mysql.name; SELECT * FROM java CROSS JOIN mysql ON java.name=mysql.name; SELECT * FROM java STRAIGHT_JOIN mysql ON java.name=mysql.name;
이 네 문은 모두 인라인 조인이고 반환 결과는 모두
+------+------+ | name | name | +------+------+ | blue | blue | +------+------+
table_reference 항목의 각 쉼표는 내부 공용체와 동일한 것으로 간주됩니다.
기본 JOIN은 INNER JOIN입니다
CROSS JOIN은 INNER JOIN과 문법적으로 동일합니다
STRAIGHT_JOIN은 JOIN과 동일합니다. 한 가지 차이점을 제외하면 왼쪽 테이블이 오른쪽 테이블보다 먼저 읽혀집니다. STRAIGH_JOIN은 조인 최적화 프로그램이 테이블을 잘못된 순서로 정렬하는 상황에서 사용할 수 있습니다.
내부 조인의 구문은 다음과 같습니다.
join_table: table_reference [INNER | CROSS] JOIN table_factor [join_condition] | table_reference STRAIGHT_JOIN table_factor | table_reference STRAIGHT_JOIN table_factor ON condition
외부 조인
왼쪽 조인
SELECT * FROM java LEFT JOIN mysql ON java.name=mysql.name;
의 결과는
+-------+------+ | name | name | +-------+------+ | java1 | NULL | | java2 | NULL | | blue | blue | +-------+------+
입니다. 따라서 위의 결과를 보면 Java 테이블의 java1과 java2에 기록된 이름이 MySQL 테이블에 해당 이름이 없기 때문에 알 수 있습니다. , 비어 있지만 java의 모든 열은 여전히 java1 및 java2 레코드가 있고 mysql 테이블의 모든 열은 NULL입니다. 나머지 파란색 레코드는 Java 테이블과 mysql 테이블 간의 내부 조인 의 결과입니다.
LEFT JOIN의 ON 또는 USING 섹션에 오른쪽 테이블과 일치하는 레코드가 없으면 모든 열이 NULL로 설정된 행이 오른쪽 테이블에 사용됩니다. 테이블이 다른 테이블에 대응 항목이 없는 경우 이 방법을 사용하여 해당 테이블에서 레코드를 찾을 수 있습니다:
SELECT * FROM java LEFT JOIN mysql ON java.name=mysql.name WHERE mysql.name IS NULL;
이 SQL은 java에는 있지만 mysql에는 없는 사람을 찾습니다. 여기 있는 사람들 , 분명히 'java1'과 'java2'라는 사람들이 요구 사항을 충족합니다.
오른쪽 조인
SELECT * FROM java RIGHT JOIN mysql ON java.name=mysql.name;
반환 결과는
+------+--------+ | name | name | +------+--------+ | NULL | mysql1 | | NULL | mysql2 | | blue | blue | +------+--------+
오른쪽 조인과 왼쪽 조인의 결과는 비슷하지만, 이번에는 mysql입니다. 테이블은 모든 결과 세트를 보유합니다.
외부 조인 구문
join_table:| table_reference LEFT [OUTER] JOIN table_reference join_condition | table_reference NATURAL [LEFT [OUTER]] JOIN table_factor | table_reference RIGHT [OUTER] JOIN table_reference join_condition | table_reference NATURAL [RIGHT [OUTER]] JOIN table_factor
USING(column_list) 절
두 테이블에 동시에 존재해야 하는 일련의 열 이름을 지정하는 데 사용됩니다.
SELECT java.*,mysql.* FROM java LEFT JOIN mysql USING (name);
결과가 반환됩니다
+-------+------+ | name | name | +-------+------+ | java1 | NULL | | java2 | NULL | | blue | blue | +-------+------+
Join
SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c); --相当于 SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)
괄호가 조인 순서에 미치는 영향
SELECT t1.id,t2.id,t3.id FROM t1,t2 LEFT JOIN t3 ON (t3.id=t1.id) WHERE t1.id=t2.id; --实际上这么执行 SELECT t1.id,t2.id,t3.id FROM t1,( t2 LEFT JOIN t3 ON (t3.id=t1.id) ) WHERE t1.id=t2.id; --应该这么写 SELECT t1.id,t2.id,t3.id FROM (t1,t2) LEFT JOIN t3 ON (t3.id=t1.id) WHERE t1.id=t2.id;
여기서 괄호는 매우 중요하므로 앞으로는 이러한 쿼리 괄호를 몇 개 더 작성하는 것을 잊지 마세요. 최소한 이렇게 하면 많은 실수를 피할 수 있습니다
[관련 권장 사항] 2.중국에서 흔히 사용하는 데이터베이스는 무엇인가요? 다양한 데이터베이스 소개
3.MySQL 시작 문제 진단 및 로그 파일 보기에 대한 자세한 설명
5.MySQL 데이터베이스 백업 및 유지관리에 대한 자세한 설명
위 내용은 Mysql에서 조인 작업을 사용하는 방법에 대한 자세한 튜토리얼 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!