MySQL - 중첩 서브 쿼리(Nested Subquery) - 단일행 서브쿼리(Single-Row Subquery) 사용법

     

     

     

    이번 포스팅에서는 중첩 서브 쿼리(Nested Subquery) 단일행 서브쿼리(single-row subquery)에 대해서 알아보도록 하겠습니다.

     

     

     

     

     

       관련글

     

     

     

     

     

    https://server-talk.tistory.com/521 - MySQL - 서브쿼리(Subquery)란?

     

     

    https://server-talk.tistory.com/522 - MySQL - 스칼라 서브쿼리(Scalar Subquery) 사용법

     

    https://server-talk.tistory.com/523 - MySQL - 인라인 뷰(Inline View) 사용법 

     

     

     

     

     

       MySQL - 조회 테이블 데이터 생성 및 구조확인

     

     

     

     

     

    1. 조회할 테이블 명세서 - 회원 테이블, 회원정보 테이블

     

     

     

     

     

     

    2. 조회할 테이블 생성 - 회원 테이블

     

    CREATE TABLE member_table (
     seq            INT NOT NULL AUTO_INCREMENT,
     company_code   VARCHAR(100),
     mb_id          VARCHAR(20),
     mb_pw          VARCHAR(100),
      PRIMARY KEY(seq)
    ) ENGINE=innodb CHARSET=utf8;

     

     

     

     

    3. 조회할 테이블 생성 - 회원정보 테이블

     

    CREATE TABLE member_info_table (
     seq            INT NOT NULL AUTO_INCREMENT,
     company_code   VARCHAR(100),
     mb_id          VARCHAR(20),
     member_name    VARCHAR(20),
     member_age     INT,
     address        VARCHAR(50),
     mb_tell        VARCHAR(50),  
      PRIMARY KEY(seq)
    ) ENGINE=innodb CHARSET=utf8;

     

     

     

     

    4. 조회할 테이블 생성 - 회사 테이블

     

    CREATE TABLE company_table (
     seq                INT NOT NULL AUTO_INCREMENT,
     company_code       VARCHAR(100),
     korea_name         VARCHAR(100),
     company_name       VARCHAR(100),
     company_address    VARCHAR(20),
      PRIMARY KEY(seq)
    ) ENGINE=innodb CHARSET=utf8;

     

     

     

     

    5. 데이터 삽입 - 회원 테이블

     

    INSERT INTO member_table (company_code, mb_id, mb_pw) VALUE('035720', 'build', 'build1');
    INSERT INTO member_table (company_code, mb_id, mb_pw) VALUE('068270', 'talk', 'server2');
    INSERT INTO member_table (company_code, mb_id, mb_pw) VALUE('035420', 'story', 'server3');

     

     

     

     

    6. 데이터 삽입 - 회원정보 테이블

     

     

    INSERT INTO member_info_table (company_code, mb_id, member_name, member_age, address, mb_tell) VALUE('035720', 'build', '홍길동', 22, '서울특별시 강남구 도곡동', '010-1234-1234');
    INSERT INTO member_info_table (company_code, mb_id, member_name, member_age, address, mb_tell) VALUE('068270', 'talk', '김하니', 32, '경기도 성남시 분당구', '010-2345-2345');
    INSERT INTO member_info_table (company_code, mb_id, member_name, member_age, address, mb_tell) VALUE('035420', 'story', '이성계', 32, '인천광역시 부평구 부평동', '010-3456-3456');

     

     

     

     

    7. 데이터 삽입 - 회사 테이블

     

    INSERT INTO company_table (company_code, korea_name, company_name, company_address) VALUE('035420', '네이버', 'NAVER', '경기도 성남시 분당구 불정로 6');
    INSERT INTO company_table (company_code, korea_name, company_name, company_address) VALUE('035720', '카카오', 'KAKAO', '제주특별자치도 제주시 첨단로 242');
    INSERT INTO company_table (company_code, korea_name, company_name, company_address) VALUE('068270', '셀트리온', 'CELLTRION', '인천광역시 연수구 아카데미로 23');

     

     

     

     

     

       MySQL - 중첩 서브 쿼리(Nested Subquery) 단일행 사용시 주의사항

     

     

     

     

     

    1. 서브쿼리는 SELECT 문으로만 작성이 가능합니다

     


    2. 서브쿼리는 ( ) - "괄호" 안에 작성해야 됩니다.

     


    3. ORDER BY 절에서는 사용할수 없습니다.

     

     

    4. 서브쿼리의 실행결과는 반드시 1개의 행 이하여야 되고 실행결과가 2개의 행 이상일 경우 오류가 발생하게 됩니다.

     

     

    5. 문자열이나 날짜 비교는 반드시 따옴표 안에 작성해야 됩니다.

     


    6. 문자열이나 날짜 비교를 따옴표 없이 사용하면 컬럼으로 인식하여 오류가 발생하게 됩니다.

     


    7. 작은 다옴표를 사용할 경우 대/소문자를 구분하게 됩니다.

     

     

     

     

     

       MySQL - 중첩 서브 쿼리(Nested Subquery) 단일행 비교 연산자

     

     

     

     

     

    연산자 의미 예제 설명
    > 크다 a > b a 는 b 보다 크다
    < 작자 a < b a 는 b 보다 작다
    >= 같거나 크다 a >= b a 는 b 보다 같거나 크다
    <= 같거나 크다 a <= b a 는 b 보다 같거나 작다
    = 같다 a = b a 는 b 와 같다
    != 같지 않다 a <= b a와 b 는 같지 않다

    [단일행 연산자]

     

    단일행 서브쿼리는 " > " 크다, " < " 작다, " >= " 크거나 같다, " <= " 작거나 같다, = 같다, " != 같지않다 로 단일행 연산자를 사용해야 됩니다.

     

     

     

     

     

     

     

     

       MySQL - 중첩 서브 쿼리(Nested Subquery) - 단일행 서브쿼리(single-row subquery) 사용법

     

     

     

     

     

     

    중첩 서브 쿼리(Nested Subquery) 단일행는 WHERE 절에서 사용되는 서브쿼리이고 실행결과가 반드시 1개의 행 이하여야 됩니다 그러나 실행결과가 2개의 행 이상일 경우 오류가 발생하게 됩니다.

    서브쿼리의 실행결과는 반드시 1개의 행 이하여야 되고 실행결과가 2개의 행 이상일 경우 오류가 발생하게 됩니다.

     

     

     

     

     

    1. 중첩 서브 쿼리(Nested Subquery) 단일행 사용법

     

    사용법 : 
            SELECT  [컬럼명],
                    [컬럼명],                
                    [컬럼명]
              FROM  [Table Name]
             WHERE  [컬럼명] = (단일행 서브쿼리)

     

     

     

     

    2. 중첩 서브 쿼리(Nested Subquery) 단일행 예시

     

    SELECT  company_code,
            mb_id,
            member_name,
            member_age,
            address,
            mb_tell
    FROM member_info_table 
    Where company_code = (select company_code from company_table where korea_name = '네이버')

     

     

     

     

    3. 중첩 서브 쿼리(Nested Subquery) 출력결과

     

    +--------------+-------+-------------+------------+-------------------------------------+---------------+
    | company_code | mb_id | member_name | member_age | address                             | mb_tell       |
    +--------------+-------+-------------+------------+-------------------------------------+---------------+
    | 035420       | story | 이성계      |         42 | 인천광역시 부평구 부평동            | 010-3456-3456 |
    +--------------+-------+-------------+------------+-------------------------------------+---------------+

     

    Posted by 서버이야기