>  기사  >  데이터 베이스  >  mysql에서 존재의 사용법은 무엇입니까

mysql에서 존재의 사용법은 무엇입니까

WBOY
WBOY원래의
2022-01-05 09:47:0230603검색

mysql에서 presents는 하위 쿼리가 적어도 하나의 데이터 행을 반환하는지 확인하는 데 사용됩니다. 하위 쿼리는 실제로 데이터를 반환하지 않지만 구문은 "SELECT field FROM table WHERE EXISTS(하위 쿼리)입니다. ;

mysql에서 존재의 사용법은 무엇입니까

이 튜토리얼의 운영 환경: windows10 시스템, mysql8.0.22 버전, Dell G3 컴퓨터.

mysql에서 presents의 사용법은 무엇입니까?

구문:

SELECT 字段 FROM table WHERE EXISTS (subquery);

매개변수:

subquery는 제한된 SELECT 문입니다(COMPUTE 절과 INTO 키워드는 허용되지 않습니다)

예:

SELECT * FROM A WHERE EXISTS (SELECT 1 FROM B WHERE B.id = A.id);

EXISTS 실행 순서:

1. 먼저 외부 쿼리를 실행하고 SELECT * FROM A

2와 같은 결과 집합을 캐시하고, 외부 쿼리 결과 집합에서 레코드 R의 각 행을 탐색하고 이를 하위 쿼리에 조건으로 대체합니다. SELECT 1 FROM B WHERE B.id = A.id

3과 같은 쿼리에 사용됩니다. 하위 쿼리가 결과를 반환하면 EXISTS 절이 TRUE를 반환합니다. 이 행 R은 외부 쿼리의 결과 행으로 사용될 수 있습니다. 는 결과로 사용할 수 없습니다

예는 다음과 같습니다.

이제 세 개의 테이블이 있다고 가정합니다.

student: 학생 테이블, 여기서 필드 sno는 학생 번호이고 sname은 학생 이름입니다.

course: Course 필드 cno는 과목 번호이고 cname은 과목 이름입니다

student_course_relation: 과목 선택 테이블에는 학생들이 선택한 과목이 기록되어 있습니다. sno는 학생 번호이고 cno는 과목 번호입니다. 다음은 EXISTS 및 NOT EXISTS의 사용법과 IN 및 NOT IN과의 차이점을 설명하는 몇 가지 예입니다.

1. 하위 쿼리에 NULL을 사용하고 여전히 결과 집합을 반환합니다.

다음 세 가지 경우는 모두 동일한 데이터를 반환합니다. 학생 테이블의 데이터가 반환됩니다.

select * from student; 
select * from student where exists (select 1); 
select * from student where exists (select null);

2. EXISTS 하위 쿼리는 부울 값 true 또는 false를 반환합니다. EXISTS는 하위 쿼리가 하나 이상의 데이터 행을 반환하는지 확인하는 데 사용됩니다. EXISTS는 행의 존재를 감지하는 하위 쿼리를 지정합니다.

EXISTS는 하위 쿼리에 레코드가 있는지 여부에만 관심이 있으며 특정 결과 집합과 관련이 없습니다. 따라서 다음 예에서는 하위 쿼리의 select sno를 select cno 또는 select 1로 대체할 수도 있으며, 쿼리로 얻은 결과 집합은 동일합니다.

3번 과정을 수강한 모든 학생 쿼리:

select * from student a 
where exists (select sno from student_course_relation b where b.cno=3 and b.sno=a.sno); 
select * from student a 
where exists (select cno from student_course_relation b where b.cno=3 and b.sno=a.sno); 
select * from student a 
where exists (select 1 from student_course_relation b where b.cno=3 and b.sno=a.sno);

추천 학습:

mysql 비디오 튜토리얼

위 내용은 mysql에서 존재의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.