[DB SQL] Select문 : 데이터 읽기

반응형

From Pixabay do_exploit's Image

 

SELECT문은 데이터베이스(DB) 테이블의 데이터를 읽어 출력하는데, 이 동작을 조회라고 합니다. 테이블을 조회하는 것은 가장 기본적인 동작이며, SELECT 문은 모든 SQL 명령 중 사용 빈도가 압도적으로 가장 높습니다.

 


Contents

     

     


     

    1. SELECT (조회)

    1) 기본 형태

    -- 테이블에서 필드목록 조회
    SELECT 필드목록 FROM 테이블

    2) 예시

    -- tCity라는 테이블에서 모든 필드(*) 조회
    SELECT * FROM tCity;
    
    -- tCity라는 테이블에서 name, popu 컬럼 조회
    SELECT name, popu FROM tCity;

     

     

    2. WHERE (조건문)

    1) 기본 형태

    -- 테이블에서 조건에 맞는 경우에 대해, 필드목록 조회
    SELECT 필드목록 FROM 테이블 WHERE 조건

    2) 예시

    -- 아래 모든 예시는 tCity 테이블 사용
    -- area(면적)이 1000 초과인 경우, 모든 컬럼(필드) 출력
    SELECT * FROM tCity WHERE area > 1000;
    
    -- area(면적)이 1000 초과인 경우, name과 area 컬럼(필드) 출력
    SELECT name, area FROM tCity WHERE area > 1000;
    
    -- name(이름)이 '서울'인 경우, 모든 컬럼 출력
    SELECT * FROM tCity WHERE name = '서울';
    
    -- name(이름)이 '서울'이 아닌 경우, 모든 컬럼 출력 
    -- (아래 두 쿼리문은 동치 NOT 연산자 사용 가능)
    SELECT * FROM tCity WHERE name != '서울';
    SELECT * FROM tCity WHERE NOT(name = '서울');
     
    -- namee이 '서울'이면서, popu(인구)가 100이상 이거나 area(면적)이 700이상인 경우, 모든 컬럼 출력
    -- (AND, OR 연산자는 괄호와 함께 사용하여 우선순위를 줄 수 있습니다.)
    SELECT * FROM tCity WHERE name = '서울' AND (popu >= 100 OR area >= 700);
    
    -- popu(인구)값이 아예 없는 경우(NULL), 모든 컬럼 출력
    -- (NULL은 아예 비어있는 값을 의미하며, IS 연산자로 판단할 수 있습니다.)
    SELECT * FROM tCity WHERE popu IS NULL;

     

     

    3. LIKE : 부분 문자열 검색

    1) 기본 형태

    -- 테이블에서 필드에 '와일드카드 포함 문자'가 있는 경우에 대해, 필드목록 조회
    -- (LIKE는 WHERE절과 함께 쓰입니다.)
    SELECT 필드목록 FROM 테이블 WHERE 필드 LIKE '와일드카드 포함 문자'

    * 와일드 카드란?

    문자의 패턴을 의미합니다.

    와일드 카드 문자 설명
    % 임의의 복수개의 문자와 대응합니다. 도스의 *와 동일한 의미입니다.
    _ 임의의 하나의 문자와 대응합니다. 도스의 ?와 동일한 의미입니다.
    [ ] [ ] 안에 포함된 문자들 중 하나의 문자와 대응하는 경우.
    [^ ] [^ ] 안에 포함된 문자들에 포함되지 않는 경우.

     

    2) 예시

    -- 아래 예시 역시 모두 tCity 테이블을 사용합니다.
    -- name(이름) 컬럼에 '서'가 들어가는 경우, 모든 컬럼 출력
    SELECT * FROM tCity WHERE name LIKE '%서%'
    
    -- name(이름) 컬럼이 '서'로 시작하는 경우, 모든 컬럼 출력
    SELECT * FROM tCity WHERE name LIKE '서%'
    
    -- name(이름) 컬럼이 '서'로 시작하고, 2글자인 경우, 모든 컬럼 출력
    SELECT * FROM tCity WHERE name LIKE '서_'
    
    -- name(이름) 컬럼이 '서'로 끝나는 경우, 모든 컬럼 출력
    SELECT * FROM tCity WHERE name LIKE '%서'
    
    -- name(이름) 컬럼에 '서'가 포함되지 않는 경우, 모든 컬럼 출력
    -- (NOT 연산자 사용 가능합니다.)
    SELECT * FROM tCity WHERE name NOT LIKE '%서%'
    
    -- name(이름) 컬럼에 a~z가 포함되는 경우, 모든 컬럼 출력
    SELECT * FROM tCity WHERE name LIKE '[a-z]'
    
    -- name(이름) 컬럼에 a~z가 포함되지 않는 경우, 모든 컬럼 출력
    SELECT * FROM tCity WHERE name LIKE '[^a-z]'

     

     

    4. BETWEEN : ~이상 ~이하 (연속 범위 ex - 1 이상 5 이하)

    1) 기본 형태

    -- 테이블에서 필드가 A이상 B이하 인 경우에 대해, 필드목록 조회
    -- (BETWEEN 최소값 AND 최대값은 WHERE절과 함께 쓰입니다.)
    SELECT 필드목록 FROM 테이블 WHERE 필드 BETWEEN A AND B;

     

    2) 예시

    -- 아래 역시 tCity 테이블 사용
    -- popu(인구수)가 50 이상 100 이하인 경우, 모든 컬럼 출력
    SELECT * FROM tCity WHERE popu BETWEEN 50 AND 100;
    
    -- name(도시이름)에 대해 사전 순으로 봤을 때, '가'로 시작하여, '서'까지 있는 경우이고,
    -- popu(인구수)가 50 이상 100 이하인 경우, name 컬럼 출력
    -- (BETWEEN ~ AND ~는, 문자열에 대해선 사전순이고, 날짜도 가능합니다.)
    SELECT name FROM tCity WHERE (name BETWEEN '가' AND '서') AND (popu BETWEEN 50 AND 100);

     

     

    5. IN : 리스트에 하나라도 포함되는 경우 (불연속적인 값. ex - ['a', 'b', 'c'])

    1) 기본 형태

    -- 테이블에서 필드가 ('리','스','트')에 포함되는 경우, 필드목록 조회
    -- (IN 연산자는 WHERE절과 함께 쓰입니다.)
    SELECT 필드목록 FROM 테이블 WHERE 필드 IN ('리','스','트')

     

    2) 예시

    -- 아래 역시 tCity 테이블 사용
    -- name(도시이름)이 '서울' 이나 '대구'에 속하는 경우, 모든 필드 출력
    SELECT * FROM tCity WHERE name IN ('서울','대구');
    
    -- name(도시이름)이 '서울', '대구', '부산'에 속하지 않는 경우, 모든 필드 출력
    SELECT * FROM tCity WHERE name NOT IN ('서울','대구','부산');

     

    Reference
     내용) 김상형, 김상형의 SQL 정복 Chapter 4 (104p - 140p)
    반응형

    'DataBase > SQL' 카테고리의 다른 글

    [DB] 이벤트 설정, 생성, 삭제  (0) 2022.04.29
    [DB SQL] 중복제거 (DISTINCT)  (0) 2021.08.25
    [DB SQL] 정렬 (ORDER BY)  (0) 2021.08.24

    댓글

    Designed by JB FACTORY