>  기사  >  데이터 베이스  >  MySQL 통합 쿼리에 대한 자세한 설명(IN과 EXISTS의 차이점)

MySQL 통합 쿼리에 대한 자세한 설명(IN과 EXISTS의 차이점)

coldplay.xixi
coldplay.xixi앞으로
2021-04-19 10:29:532059검색

MySQL 통합 쿼리에 대한 자세한 설명(IN과 EXISTS의 차이점)

Cartesian product

Cartesian product는 수학에서 두 집합 X와 Y의 Cartesian product(Cartesian product)를 말하며 직접곱이라고도 하며 X×Y로 표현됩니다. 첫 번째 하나의 객체는 X의 구성원이고 두 번째 객체는 Y의 가능한 모든 순서쌍의 구성원입니다[3].
집합 A={a, b}이고 집합 B={0, 1, 2}라고 가정하면 두 집합의 데카르트 곱은 {(a, 0), (a, 1), (a, 2)입니다. , (b, 0), (b, 1), (b, 2)}.

관련 무료 학습 권장사항: mysql 비디오 튜토리얼

Inner Join

select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;

MySQL 통합 쿼리에 대한 자세한 설명(IN과 EXISTS의 차이점)

Outer Join

Outer Join은 Left Outer Join과 Right Outer Join으로 구분됩니다. 조인트 쿼리를 수행할 때 왼쪽 테이블이 완전히 표시되면 왼쪽 외부 조인, 오른쪽 테이블이 완전히 표시되면 오른쪽 외부 조인이라고 합니다.

--左外连接,表1完全显示select 字段名 from 表名1 left join 表名2 on 连接条件;-- 右外连接,表2完全显示select 字段 from 表名1 right join 表名2 on 连接条件;

MySQL 통합 쿼리에 대한 자세한 설명(IN과 EXISTS의 차이점)
MySQL 통합 쿼리에 대한 자세한 설명(IN과 EXISTS의 차이점)

Self-connection

행간 비교는 self-connection이 필요합니다
예: "Java"보다 높은 점수로 "컴퓨터 원리"에 대한 모든 점수 정보를 표시합니다

-- 先查询“计算机原理”和“Java”课程的idselect id,name from course where name='Java' or name='计算机原理';-- 再查询成绩表中,“计算机原理”成绩比“Java”成绩 好的信息SELECTs1.*FROMscore s1,score s2WHEREs1.student_id = s2.student_idAND s1.score <pre class="brush:php;toolbar:false">-- 也可以使用join on 语句来进行自连接查询SELECTs1.*FROMscore s1JOIN score s2 ON s1.student_id = s2.student_idAND s1.score <p> <strong>Subquery</strong></p><p>하위 쿼리는 중첩 쿼리라고도 하는 다른 SQL 문에 포함된 선택 문을 나타냅니다. <br> 단일 행 하위 쿼리: 한 행의 레코드를 반환하는 하위 쿼리<br> 사례: 쿼리와 "샤오바이"의 동급생: </p><pre class="brush:php;toolbar:false">select * from student where classes_id=(select classes_id from student wherename='小白');

다행 하위 쿼리: 여러 행의 레코드를 반환하는 하위 쿼리

  1. [NOT] IN 키워드 :
    먼저 하위 쿼리의 SQL을 실행하고, 결과를 메모리에 저장한 다음 외부 쿼리를 수행하고, 주어진 제한 사항을 하위 쿼리의 결과와 직접 비교하고 필터링합니다. (메모리에 따라 다르며 하위 쿼리의 결과 집합이 상대적으로 작은 상황에 적합)
  2. [NOT] EXISTS 키워드:
    외부 쿼리를 먼저 실행하고 각 외부 쿼리의 레코드를 차례로 가져와 내부 쿼리로 가져옵니다. 쿼리
    내부 쿼리의 결과 집합이 비어 있지 않으면 외부 쿼리의 결과를 유지
    내부 쿼리의 결과 집합이 비어 있으면 외부 쿼리의 결과를 삭제
    메모리에 의존하지 않음, 하위 쿼리의 결과 집합이 상대적으로 큰 경우 작은 외부 쿼리 결과 집합에 적합합니다

Merge query

여러 선택의 실행 결과를 병합하려면 집합 연산자 Union 및 Union All을 사용할 수 있습니다. UNION
및 UNION ALL을 사용하는 경우 이전 및 후속 쿼리의 결과 집합에 있는 필드가 일관되어야 합니다.
union
이 연산자는 두 결과 세트의 합집합을 얻는 데 사용됩니다. 이 연산자를 사용하면 결과 집합의 중복 행이 자동으로 제거됩니다.
사례: ID가 3보다 작거나 이름이 "English"인 강좌 쿼리:

select * from course where id<p><strong>union all</strong><br> 이 연산자는 두 결과 집합의 합집합을 구하는 데 사용됩니다. 이 연산자를 사용하면 결과 집합의 중복 행이 제거되지 않습니다. <br> 사례: ID가 3보다 작거나 이름이 "Java"인 강좌 쿼리: </p><pre class="brush:php;toolbar:false">-- 可以看到结果集中出现重复数据Javaselect * from course where id<blockquote><p><strong>관련 무료 학습 권장 사항: </strong><a href="https://www.php.cn/course/list/51.html" target="_blank"><strong>mysql 데이터베이스</strong></a><strong>(동영상)</strong></p></blockquote>

위 내용은 MySQL 통합 쿼리에 대한 자세한 설명(IN과 EXISTS의 차이점)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제