>  기사  >  데이터 베이스  >  mysql 서브쿼리란 무엇인가요? MySQL 데이터베이스 서브쿼리 실제 사용예

mysql 서브쿼리란 무엇인가요? MySQL 데이터베이스 서브쿼리 실제 사용예

php是最好的语言
php是最好的语言원래의
2018-07-24 15:57:171948검색

mysql 하위 쿼리란 무엇인가요?

하위 쿼리는 내부 쿼리라고도 하며 내부 쿼리를 포함하는 쿼리를 외부 쿼리라고 합니다. 하위 쿼리를 사용하면 하나의 쿼리를 다른 쿼리 내에 중첩할 수 있습니다.

mysql 데이터베이스 하위 쿼리 문의 특성: 하위 쿼리는 단일 값을 반환하는 한 표현식을 사용할 수 있는 모든 곳에서 사용할 수 있습니다. 하위 쿼리는 반환 값 수, 하위 쿼리의 외부 종속성, 비교 연산자를 기반으로 합니다. 페이징 쿼리 SQL 문에 자주 사용됩니다.

1: 하위 쿼리의 특징:

  1. 하위 쿼리는 선택, 삽입, 업데이트, 삭제 및 기타 문에 중첩될 수 있습니다.

  2. 대부분의 경우 하위 쿼리는 중간 결과 집합으로 작동합니다.

  3. 하위 쿼리 중첩이 가능합니다. 중첩 제한은 메모리 및 표현식 복잡성에 따라 다릅니다

  4. 표현식을 사용할 수 있는 모든 곳에서 단일 값을 반환하는 한 하위 쿼리를 사용할 수 있습니다.

II : 하위 쿼리 분류:

  1. Can 반환값 개수에 따라 스칼라 서브쿼리, 다중값 서브쿼리

  2. 로 나뉜다. 서브쿼리의 외부 종속성: 독립 서브쿼리, 상관 서브쿼리

  3. 비교 연산자의 차이에 따라: IN, EXISTS, ANY , SOME, ALL 및 기타 형식

3: 하위 쿼리 사용:

  1. 먼저 두 개의 테이블(학생 테이블과 교사 테이블)을 만듭니다.

    # 创建学生表
    mysql> create table tb_student(
        -> stu_ID long,
        -> class varchar(5),
        -> score int
        -> );
    Query OK, 0 rows affected (0.23 sec)
    
    # 创建教师表
    mysql> create table tb_teacher(
        -> tea_ID long,
        -> class varchar(5),
        -> age int
        -> );
    Query OK, 0 rows affected (0.49 sec)
  2. 테이블에 일부 값을 삽입합니다

    insert into tb_student values(1, "A", 20);
    
    insert into tb_student values(2, "A", 30);
    
    insert into tb_student values(3, "A", 70);
    
    insert into tb_student values(4, "B", 60);
    
    insert into tb_student values(5, "B", 70);
    
    insert into tb_student values(6, "B", 80);
    
    insert into tb_teacher values(1, "A", 25);
    
    insert into tb_teacher values(2, "B", 40);
  3. 이제 준비가 완료되었으니 하위 쿼리 연습을 해보겠습니다

  • 예시 1: 각 학급의 교사 ID 및 해당 학급 평균 점수

    mysql> select tea_ID,
        -> (select avg(score) from tb_student as s where s.class = t.class group by class)
        -> as Avg from tb_teacher as t;
    +--------+---------+
    | tea_ID | Avg     |
    +--------+---------+
    | 1      | 40.0000 |
    | 2      | 70.0000 |
    +--------+---------+
    2 rows in set (0.00 sec)
  • 예 2: 각 학급의 교사 연령 및 학생 수 합격한 학생 (60이 합격선)

    mysql> select age,
        -> (select count(*) from tb_student as s where s.class = t.class && s.score >= 60 group by class)
        -> as Count from tb_teacher as t order by Count desc;
    +------+-------+
    | age  | Count |
    +------+-------+
    |   40 |     3 |
    |   25 |     1 |
    +------+-------+
    2 rows in set (0.00 sec)

관련 추천 :

mysql 페이징 쿼리문 데이터베이스 query_MySQL

Mysql 제한 하위 쿼리문_MySQL

video :고급 데이터 쿼리 - where 절 - 6일 후에 MySQL을 사용해 보세요

위 내용은 mysql 서브쿼리란 무엇인가요? MySQL 데이터베이스 서브쿼리 실제 사용예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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