<p>이 기사는 MySQL의 조인 쿼리 및 집합 작업을 안내합니다. 도움이 되기를 바랍니다. </p>
<p><img src="https://img.php.cn/upload/article/000/000/024/6145d21cb7577613.jpg" alt="MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석" ></p>
<h2><strong>Join 쿼리</strong></h2>
<p>Join 쿼리는 두 개 이상의 테이블 사이에서 일치하는 쿼리를 의미합니다. 일반적으로 수평 작업이라고 합니다. 즉, 최종 결과에는 이러한 테이블의 모든 열이 포함됩니다. 조인 연산에는 교차 조인, 내부 조인, 외부 조인의 세 가지 종류가 있습니다. [관련 추천: <a href="//m.sbmmt.com/course/list/51.html" target="_blank" textvalue="mysql视频教程">mysql 동영상 튜토리얼</a>]</p>
<p>교차 조인은 <code>CROSS JOIN</code>이라고 합니다. 두 테이블에 대해 데카르트 곱을 수행하며, 다음과 같이 두 테이블의 모든 열 구성을 반환합니다. 왼쪽 테이블에 n개의 데이터가 있고 오른쪽 테이블에 m개의 데이터가 있는 경우 최종 결과는 <code>n*m</code>이지만 자신에게 연결할 수도 있습니다. 최종 결과는 다음 명령문과 같이 <code>n*n입니다. <code>CROSS JOIN</code>,他对两个表执行笛卡儿积,他将返回两个表中所有列的组成,比如左表中有n条数据,右表中有m条数据,那么最终结果就是<code>n*m</code>条,但是也可以自己与自己联结,那么最终结果就是<code>n*n</code>条,比如下面语句。</code></p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;toolbar:false;">select * from orders as a cross join orders as b;
+---------+--------+---------+--------+
| orderId | userId | orderId | userId |
+---------+--------+---------+--------+
| 10007 | 2 | 10001 | 1 |
| 10006 | 4 | 10001 | 1 |
.....
| 10002 | 1 | 10007 | 2 |
| 10001 | 1 | 10007 | 2 |
+---------+--------+---------+--------+
49 rows in set (0.01 sec)</pre><div class="contentsignin">로그인 후 복사</div></div><p>由于orders表中有7条数据,那么最后将生成49条数据,还有一种写法是下面这样的。</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;toolbar:false;">mysql> select * from orders as a ,orders as b;</pre><div class="contentsignin">로그인 후 복사</div></div><p>他们的结果都相同,只是写法不同,上面的写法是在1989年,美国国家标准学会对SQL进行的规范,称之为ANSI SQL 89标准,而第一种写法是92年规定的。</p><p>交叉联结有个用处就是快速生成重复数据,比如下面语句。</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;toolbar:false;">insert orders select a.orderId,a.userId from orders as a ,orders as b limit 10;</pre><div class="contentsignin">로그인 후 복사</div></div><p>下面就是内联结,分为两部,首先产生笛卡儿积,然后在根据后面ON的过滤条件来过滤,他产生两个表中具有相同记录的值。</p><p><img src="https://img.php.cn/upload/image/218/908/717/1631965602120211.png" title="1631965602120211.png" alt="1 (2).png"/></p><p>在ON后面除了等于运算符 (=) 之外,还可以使用其他运算符,例如大于 ( <code>></code>)、小于 ( <code><</code>) 和不等于 ( <code><></code>) 运算符来构成连接条件。</p><p>最后一个是OUTER JOIN,可以按照一些过滤条件来匹配表之间的数据,与INNER JOIN不同的是,在通过OUTER JOIN添加的保留表中存在未找到的匹配数据,MySQL支持LEFT OUTER JOIN、RIGHT OUTER JOIN,写的时候可以省略OUTER 。</p><p>下面是LEFT JOIN所示图,LEFT JOIN返回左表 (table1) 中的所有记录,以及右表 (table2) 中的匹配记录。</p><p><img src="https://img.php.cn/upload/image/297/131/340/1631965607545060.png" title="1631965607545060.png" alt="MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석"/></p><p>下面是RIGHT JOIN所示图,RIGHT JOIN返回右表 (table2) 中的所有记录,以及左表 (table1) 中的匹配记录。</p><p><img src="https://img.php.cn/upload/image/383/403/226/163196561126076MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석" title="163196561126076MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석" alt="MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석"/></p><h2><strong>集合操作</strong></h2><p>MySQL中有个UNION运算符,用于组合2个或多个SELECT结果集,并删除SELECT语句之间的重复行,使用他时候要遵循以下基本规则:</p><ul><li>所有<code>SELECT</code><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;toolbar:false;">CREATE TABLE t1 (
id INT PRIMARY KEY
);
CREATE TABLE t2 (
id INT PRIMARY KEY
);
INSERT INTO t1 VALUES (1),(2),(3);
INSERT INTO t2 VALUES (2),(3),(4);</pre><div class="contentsignin">로그인 후 복사</div></div></li>주문 테이블에는 7개의 데이터가 있으므로 결국 49개의 데이터가 생성됩니다. 또 다른 작성 방법은 다음과 같습니다. <li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;toolbar:false;">SELECT id FROM t1
UNION
SELECT id FROM t2;</pre><div class="contentsignin">로그인 후 복사</div></div></li>결과는 같지만 작성 방법이 다릅니다. 위 작성 방법은 1989년 미국 표준 협회에서 SQL용으로 표준화한 것으로, ANSI SQL 89 표준이라고 하며, 1992년에 최초의 작성 방법이 규정되었습니다. </ul><p>교차 조인은 다음 문과 같이 반복되는 데이터를 빠르게 생성하는 데 유용합니다. </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;toolbar:false;">+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
+----+
4 rows in set (0.00 sec)</pre><div class="contentsignin">로그인 후 복사</div></div><p>다음은 두 부분으로 나누어진 내부 조인입니다. 먼저 데카르트 곱을 생성한 후 후속 ON 필터링 조건에 따라 필터링하여 두 부분에서 동일한 레코드를 갖는 값을 생성합니다. 테이블. </p><p><img src="https://img.php.cn/upload/image/218/908/717/1631965602120211.png" title="1631965602120211.png" alt="1 (2).png"/> </p><p>ON 뒤에는 등호 연산자(=) 외에도 보다 큼( <code>></code>), 보다 작음( <code><</code>)과 같은 다른 연산자를 사용할 수도 있습니다. 및 같지 않음( <code><></code>) 연산자를 사용하여 조인 조건을 구성합니다. </p><p>마지막은 OUTER JOIN으로 일부 필터링 조건에 따라 테이블 간 데이터를 일치시킬 수 있습니다. INNER JOIN과 달리 OUTER JOIN을 통해 추가된 예약된 테이블에는 일치하는 데이터가 없습니다. MySQL은 LEFT OUTER JOIN, RIGHT OUTER JOIN을 지원합니다. 작성할 때 OUTER를 생략할 수 있습니다. </p><p>다음은 LEFT JOIN의 다이어그램입니다. LEFT JOIN은 왼쪽 테이블(table1)의 모든 레코드와 오른쪽 테이블(table2)의 일치하는 레코드를 반환합니다. </p><p><img src="https://img.php.cn/upload/image/297/131/340/1631965607545060.png" title="1631965607545060.png" alt="MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석"/><img src="https://img.php.cn/upload/image/410/849/290/1631965648883159.png" title="1631965648883159.png" alt="MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석"/></p>아래 이것은 RIGHT JOIN에 표시된 그림입니다. RIGHT JOIN은 오른쪽 테이블(table2)의 모든 레코드와 왼쪽 테이블(table1)의 일치하는 레코드를 반환합니다. <blockquote><p><img src="https://img.php.cn/upload/image/383/403/226/163196561126076MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석" title="163196561126076MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석" alt="MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석"/></p><p></p> 집합 연산 </blockquote><p><a href="//m.sbmmt.com/course.html" target="_blank" textvalue="编程视频">MySQL에는 2개 이상의 SELECT 결과 집합을 결합하고 SELECT 문 사이의 중복 행을 삭제하는 데 사용되는 UNION 연산자가 있습니다. 이를 사용할 때 다음 기본 규칙을 따르십시오. </a><ul></p>모두 숫자입니다. <code>SELECT</code> 문에 나타나는 열의 순서는 동일해야 합니다. 🎜🎜열도 동일한 데이터 유형이어야 합니다. 🎜🎜🎜지금 아래와 같은 테이블이 있다면🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;toolbar:false;">SELECT id FROM t1
UNION ALL
SELECT id FROM t2;</pre><div class="contentsignin">로그인 후 복사</div></div>🎜다음 SQL을 실행해 보세요🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:sql;toolbar:false;">+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 2 |
| 3 |
| 4 |
+----+
6 rows in set (0.00 sec)</pre><div class="contentsignin">로그인 후 복사</div></div>🎜최종 결과는 이렇습니다. 🎜rrreee🎜UNION 문은 기본적으로 설정된 결과 행에서 중복 데이터를 제거하지만 UNION ALL을 사용하여 중복 레코드를 얻을 수 있습니다. 🎜rrreee🎜결과는 다음과 같습니다🎜rrreee🎜UNION과 JOIN의 기본적인 차이점은 UNION은 결과 집합을 가로로 결합하는 반면, JOIN 문은 결과 집합을 세로로 결합한다는 것입니다. 🎜🎜🎜🎜🎜🎜원본 주소: https://juejin.cn/post/7001772087534682143🎜🎜작성자: i Listen to the Wind Passing Night🎜🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 영상🎜을 방문하세요! ! 🎜
위 내용은 MySQL 학습의 조인 쿼리 및 집합 작업에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!