<연산자>(하위 쿼리)"입니다. 하위 쿼리는 괄호로 닫아야 합니다."/> <연산자>(하위 쿼리)"입니다. 하위 쿼리는 괄호로 닫아야 합니다.">

 >  기사  >  데이터 베이스  >  mysql은 서브쿼리를 지원하지 않나요?

mysql은 서브쿼리를 지원하지 않나요?

青灯夜游
青灯夜游원래의
2022-06-14 13:43:082547검색

mysql은 하위 쿼리를 지원합니다. 서브쿼리는 쿼리문을 다른 쿼리문 안에 중첩시키는 것을 의미하며, 서브쿼리를 통해 다중 테이블 쿼리를 구현할 수 있는 쿼리 방법입니다. 하위 쿼리는 SELECT, UPDATE 및 DELETE 문에서 사용할 수 있으며 실제 개발에서 여러 수준에 중첩될 수 있습니다. 하위 쿼리는 WHERE 절에 자주 나타나며 구문은 "WHERE (하위 쿼리)입니다. "인 경우 하위 쿼리는 괄호로 닫아야 합니다.

mysql은 서브쿼리를 지원하지 않나요?

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

mysql은 하위 쿼리를 지원합니다.

MySQL의 하위 쿼리

서브 쿼리는 MySQL에서 일반적으로 사용되는 쿼리 방법으로, 하위 쿼리를 통해 구현할 수 있습니다. 하위 쿼리는 다른 쿼리 문 내에 쿼리 문을 중첩하는 것을 의미합니다. 하위 쿼리는 SELECT, UPDATE 및 DELETE 문에서 사용할 수 있으며 여러 수준에서 중첩될 수 있습니다. 실제 개발에서는 WHERE 절에 하위 쿼리가 나타나는 경우가 많습니다.

WHERE의 하위 쿼리 구문 형식은 다음과 같습니다.

WHERE <表达式> <操作符> (子查询)

그 중 연산자는 비교 연산자일 수 있으며 IN, NOT IN, EXISTS, NOT EXISTS와 같은 키워드는 하위 쿼리를 괄호로 묶어야 합니다.

1) IN | NOT IN

표현식이 하위 쿼리에서 반환된 결과 집합의 값과 같으면 TRUE가 반환되고, 그렇지 않으면 NOT 키워드가 사용되면 반환 값은 정확히 반대가 됩니다. .

2) EXISTS | NOT EXISTS

는 하위 쿼리의 결과 집합이 비어 있지 않은지 확인하는 데 사용되며, 그렇지 않으면 키워드 NOT인 경우 FALSE가 반환됩니다. 사용되면 값이 반환됩니다. 정반대입니다.

예제 1

서브 쿼리를 사용하여 tb_students_info 테이블과 tb_course 테이블에서 Java 강좌를 수강하는 학생의 이름을 쿼리합니다.

mysql> SELECT name FROM tb_students_info 
    -> WHERE course_id IN (SELECT id FROM tb_course WHERE course_name = &#39;Java&#39;);

mysql은 서브쿼리를 지원하지 않나요? 결과에 따르면 Dany와 Henry만이 Java 강좌를 수강하고 있는 것으로 나타났습니다. 위의 쿼리 프로세스는 다음 두 단계로 나누어 동일한 효과를 얻을 수도 있습니다.

1) 먼저 내부 쿼리를 별도로 실행하여 tb_course 테이블에서 Java 강좌의 ID를 알아냅니다. SQL 문과 실행 결과는 다음과 같습니다.

mysql> SELECT id FROM tb_course 
    -> WHERE course_name = &#39;Java&#39;;

mysql은 서브쿼리를 지원하지 않나요?조건을 만족하는 id 필드의 값이 1인 것을 확인할 수 있습니다.

2) 그런 다음 외부 쿼리를 실행하여 tb_students_info 테이블에서course_id가 1인 학생의 이름을 쿼리합니다. SQL 문과 실행 결과는 다음과 같습니다.

mysql> SELECT name FROM tb_students_info 
    -> WHERE course_id IN (1);

mysql은 서브쿼리를 지원하지 않나요?일반적으로 외부 SELECT 쿼리를 상위 쿼리라고 하며, 괄호 안에 포함된 쿼리를 하위 쿼리라고 합니다(

하위 쿼리는 괄호 안에 배치해야 합니다

). 위 예에서 MySQL이 SELECT 문을 처리할 때 실행 흐름은 먼저 하위 쿼리를 실행한 다음 상위 쿼리를 실행하는 것입니다.

예제 2

예제 1과 유사하게 SELECT 문에 NOT IN 키워드를 사용하여 Java 강좌를 수강하지 않은 학생의 이름을 쿼리해 보겠습니다. SQL 문과 실행 결과는 다음과 같습니다.

mysql> SELECT name FROM tb_students_info 
    -> WHERE course_id NOT IN (SELECT id FROM tb_course WHERE course_name = &#39;Java&#39;);

mysql은 서브쿼리를 지원하지 않나요?예제 1과 정반대로 실행 결과가 나오는 것을 알 수 있습니다. Java 강좌를 수강하지 않은 학생들은 Dany와 Henry가 아닌 학생들입니다.

예제 3

tb_course 테이블과 tb_students_info 테이블에서 Python 강좌를 수강하는 모든 학생의 이름을 = 연산자를 사용하여 쿼리합니다. SQL 문과 실행 결과는 다음과 같습니다.

mysql> SELECT name FROM tb_students_info
    -> WHERE course_id = (SELECT id FROM tb_course WHERE course_name = &#39;Python&#39;);

mysql은 서브쿼리를 지원하지 않나요?=运算符,在 tb_course 表和 tb_students_info 表中查询出所有学习 Python 课程的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info
    -> WHERE course_id <> (SELECT id FROM tb_course WHERE course_name = &#39;Python&#39;);

mysql은 서브쿼리를 지원하지 않나요?

结果显示,学习 Python 课程的学生只有 Jane。

例 4

使用

결과에 따르면 Python 과정을 수강하는 유일한 학생은 Jane입니다.

mysql은 서브쿼리를 지원하지 않나요?

예제 4

tb_course 테이블과 tb_students_info 테이블에서 Python 강좌를 수강하지 않은 학생의 이름을 연산자를 사용하여 쿼리합니다. SQL 문과 실행 결과는 다음과 같습니다. 다음과 같습니다.

mysql> SELECT * FROM tb_students_info
    -> WHERE EXISTS(SELECT course_name FROM tb_course WHERE id=1);

예제 3과 정반대로 실행 결과가 나오는 것을 알 수 있습니다. Python 강좌를 공부하지 않은 학생들은 Jane이 아닌 학생들입니다.

mysql은 서브쿼리를 지원하지 않나요?

예제 5

🎜 tb_course 테이블에 id=1인 강좌가 존재하는지 질의한다. 존재한다면 tb_students_info 테이블의 레코드를 질의한다. SQL 문과 실행 결과는 다음과 같다. 🎜
mysql> SELECT * FROM tb_students_info
    -> WHERE age>24 AND EXISTS(SELECT course_name FROM tb_course WHERE id=1);
🎜🎜🎜🎜결과를 보면 tb_course 테이블에 id=1인 레코드가 있으므로 EXISTS 표현식이 TRUE를 반환한 후 외부 쿼리문은 tb_students_info 테이블을 쿼리하여 모든 레코드를 반환합니다. 🎜

EXISTS 关键字可以和其它查询条件一起使用,条件表达式与 EXISTS 关键字之间用 AND 和 OR 连接。

例 6

查询 tb_course 表中是否存在 id=1 的课程,如果存在,就查询出 tb_students_info 表中 age 字段大于 24 的记录,SQL 语句和运行结果如下。

mysql> SELECT * FROM tb_students_info
    -> WHERE age>24 AND EXISTS(SELECT course_name FROM tb_course WHERE id=1);

mysql은 서브쿼리를 지원하지 않나요?

结果显示,从 tb_students_info 表中查询出了一条记录,这条记录的 age 字段取值为 25。内层查询语句从 tb_course 表中查询到记录,返回 TRUE。外层查询语句开始进行查询。根据查询条件,从 tb_students_info 表中查询 age 大于 24 的记录。

拓展

子查询的功能也可以通过表连接完成,但是子查询会使 SQL 语句更容易阅读和编写。

一般来说,表连接(内连接和外连接等)都可以用子查询替换,但反过来却不一定,有的子查询不能用表连接来替换。子查询比较灵活、方便、形式多样,适合作为查询的筛选条件,而表连接更适合于查看连接表的数据。

【相关推荐:mysql视频教程

위 내용은 mysql은 서브쿼리를 지원하지 않나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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