MySQL - 스칼라 서브쿼리(Scalar Subquery) 사용법

     

     

     

    이번 포스팅에서는 스칼라 서브쿼리(Scalar Subquery)에 대해서 알아보도록 하겠습니다.

     

     

     

     

     

       관련글

     

     

     

     

     

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

     

     

     

     

     

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

     

     

     

     

     

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

     

     

     

     

     

     

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

     

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

     

     

     

     

     

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

     

    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;

     

     

     

     

     

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

     

    INSERT INTO member_table (company_code, mb_id, mb_pw, address, mb_tell) VALUE('035720', 'build', 'build1',  '서울특별시 강남구 도곡동', '010-1234-1234');
    INSERT INTO member_table (company_code, mb_id, mb_pw, address, mb_tell) VALUE('068270', 'talk', 'server2', '경기도 성남시 분당구', '010-2345-2345');
    INSERT INTO member_table (company_code, mb_id, mb_pw, address, mb_tell) VALUE('035420', 'story', 'server3', '인천광역시 부평구 부평동', '010-3456-3456');

     

     

     

     

     

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

     

    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 - 스칼라 서브쿼리(Scalar Subquery) 사용시 주의사항

     

     

     

     

     

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

     


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

     


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

     

     

     

     

     

       MySQL - 스칼라 서브쿼리(Scalar Subquery) 사용법

     

     

     

     

    스칼라 서브쿼리(Scalar Subquery)는 서브쿼리에서 나오는 결과의 값이 1개의 행이여야 되며, 2개 이상의 행이나 NULL 값을 사용할 수 없습니다.

     

     

     

     

     

    1. 스칼라 서브쿼리(Scalar Subquery) 사용법

     

     

    사용법 : 
            SELECT  [컬럼명],
                    [컬럼명],
                    (Scalar Subquery),
                    [컬럼명],
            FROM    [Table Name]

     

     

     

     

     

    2. 스칼라 서브쿼리(Scalar Subquery) 예시

     

    SELECT  mb_id,
            address,
            (SELECT korea_name FROM company_table b WHERE b.company_code = a.company_code),
            mb_tell
    FROM    member_table a

     

    위 내용의 메인쿼리와 서브쿼리는 member_table a와, company_table 를 b를 지정하여 2개의 테이블 company_code의 같은 값을 비교하여 korea_name을 출력하는 스칼라 서브쿼리(Scalar Subquery) 입니다.

     

     

     

     

    3. 스칼라 서브쿼리(Scalar Subquery) 출력결과

     

    +-------+-------------------------------------+--------------------------------------------------------------------------------+---------------+
    | mb_id | address                             | (SELECT korea_name FROM company_table b WHERE b.company_code = a.company_code) | mb_tell       |
    +-------+-------------------------------------+--------------------------------------------------------------------------------+---------------+
    | build | 서울특별시 강남구 도곡동            | 카카오                                                                         | 010-1234-1234 |
    | talk  | 경기도 성남시 분당구                | 셀트리온                                                                       | 010-2345-2345 |
    | story | 인천광역시 부평구 부평동            | 네이버                                                                         | 010-3456-3456 |
    +-------+-------------------------------------+--------------------------------------------------------------------------------+---------------+

     

    Posted by 서버이야기