sue
  • SQL 더 나은 SELECT를 위하여
    2020년 11월 08일 23시 59분 33초에 업로드 된 글입니다.
    작성자: sue24

    이번 게시글에서는 SELECT 기능을 개선해주는

     

    DISTINCT, ORDER BY, LIMIT, LIKE에 대해서 다루겠습니다.

     

    1. DISTINCT

        중복 없는 결과를 보기 위해서 쓰는 명령어입니다.

     

     

        SELECT DISTINCT <컬럼> FROM <테이블>;

        

        스트링, 넘버 다 적용됩니다.

     

        SELECT DISTINCT CONCAT(<컬럼1>, ' ', <컬럼2>) FROM <테이블>;

     

       여러 개의 텍스트/컬럼을 조합해서 유니크한 값을 찾을 때는

     

       하나의 컬럼을 받는 DISTINCT 안에 CONCAT이 와야 합니다.

    2. ORDER BY

        데이터를 정렬해줍니다.

        

        ORDER와 BY 사이에 공백까지 쳐줘야 합니다!!

     

       

        SELECT <컬럼1> FROM <테이블> ORDER BY <컬럼2>;

     

        컬럼1과 컬럼2는 같아도 되고 달라도 됩니다.

     

        기본값은 오름차순입니다.

     

     

        SELECT <컬럼1> FROM <테이블> ORDER BY <컬럼2> DESC;

     

        이렇게 뒤에 DESC를 써 주면 내림차순으로 정렬합니다.

     

        

        SELECT <컬럼1>, <컬럼2>, <컬럼3> FROM <테이블> ORDER BY 2;

     

        조회하려고 열거한 컬럼의 순서대로 인덱스를 매겨서

     

        숫자를 써 줄 수도 있습니다.

     

        *를 이용해서 전체 조회를 할 때는 테이블의 컬럼 순서대로 인덱스가 매겨집니다.

     

     

        SELECT <컬럼1>, <컬럼2> FROM <테이블> ORDER BY <컬럼3>, <컬럼4>;

     

        컬럼3으로 먼저 정렬한 후, 컬럼 4로 한 번 더 정렬합니다.

     

        ex) 컬럼 3이 출생 연도, 컬럼4가 이름이라면

              출생년도 오름차순으로 정렬을 한 뒤

              같은 해에 출생한 사람들을 이름 오름차순으로 다시 정렬하게 됩니다.

     

    3. LIMIT

        출력할 결과의 숫자를 조정합니다.

     

     

        SELECT <컬럼1> FROM <테이블> ORDER BY <컬럼2> LIMIT 2, 5;

     

        컬럼1과 컬럼2는 같을 수도 있고 다를 수도 있습니다.

     

       이 경우에 결과는 컬럼2로 정렬한 순서에서 3번째부터 5번째까지가 나옵니다.

     

       첫 번째부터 나오게 하려면 0, 5인데 0은 생략해도 됩니다.

     

    stock_quantity컬럼으로 오름차순 정렬한 뒤 결과를 3개만 출력합니다.

     

        SELECT * FROM <테이블> LIMIT 4, 2345346;

     

        다섯 번째부터 테이블 끝까지 조회하는 SQL문입니다.

     

        LIMIT의 두 번째 인자는 조회할 테이블의 데이터 수보다 크기만 하면 됩니다.

     

    4. LIKE

        어떤 문자를 포함하고 있는 데이터,

     

        어떤 문자로 시작하는 데이터,

     

        어떤 문자로 끝나는 데이터를 찾을 수 있게 해 줍니다.

     

        대소문자를 구분하지 않습니다.

     

     

        SELECT <컬럼1> FROM <테이블> WHERE <컬럼2> LIKE '%abc%';

     

        이 경우에도 당연히 컬럼1과 컬럼2는 같을 수도 다를 수도 있습니다.

     

        컬럼2가 abc를 포함하는 데이터의 컬럼1 값을 조회하는 SQL문입니다.

     

       

        %는 모든 문자를 상징합니다.

     

        글자, 숫자, 빈칸 등 모든 문자를 뜻하죠.

     

        아무 문자가 없는 것 역시 포함합니다.

     

     

        '%abc%'는 

     

        abc로 시작하는 데이터,

       

        abc를 포함하는 데이터,

     

        abc로 끝나는 데이터를 모두 포함합니다.

     

        대소문자를 구분하지 않기 때문에 

     

        Abc, ABC 등이 모두 포함됩니다.

     

     

        SELECT * FROM <테이블> WHERE <컬럼> LIKE 'abc';

     

        컬럼 값이 정확히 abc인 데이터를 찾습니다.

     

     

        SELECT * FROM <테이블> WHERE <컬럼> LIKE 'abc%';

     

        컬럼 값이 abc로 시작하는 데이터를 찾습니다.

     

     

        SELECT * FROM <테이블> WHERE <컬럼> LIKE 'abc';

     

        컬럼 값이 abc로 끝나는 데이터를 찾습니다.

     

     

     

        SELECT * FROM <테이블> WHERE <컬럼> LIKE '____';

     

        _는 하나의 문자를 의미합니다.

     

        위 SQL문은 컬럼 값이 4자리인 데이터를 찾는 거죠.

     

        

        (123)-456-7890 이런 형식의 전화번호 데이터를 찾는다면

     

        SELECT * FROM <테이블> WHERE <컬럼> LIKE '(___)-___-____';

     

        이런 식으로 쓰게 됩니다.

     

     

        만약 찾고 싶은 데이터의 값에 %나 _가 들어있다면?

     

        \를 이용합니다.

     

        LIKE '%\%%';

     

        이렇게 쓰면 %가 들어있는 데이터를 찾게 됩니다.

    'SQL' 카테고리의 다른 글

    데이터모델링의 이해  (0) 2022.03.17
    44회 SQLD  (0) 2022.03.15
    SQL string functions  (0) 2020.11.07
    SQL CRUD  (0) 2020.11.04
    SQL 기본  (0) 2020.11.02
    댓글